亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 急!!c51中的interrupt函數到底從哪返回主函數 [打印本頁]

作者: lolit    時間: 2009-3-10 14:31
標題: 急!!c51中的interrupt函數到底從哪返回主函數
 哪位高人看看下面程序,interrupt函數到底從哪返回主函數?另外,如果脈寬可調,程序應如何改動?

# include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

uint a,b,c,d;
/*a為舵機1的脈沖寬度,b為舵機2的脈沖寬度,單位1/1000 ms */
/*c、d為中間變量*/

/*以下定義輸出管腳*/
sbit p12=P1^2;
sbit p13=p1^3;
sbit p37=P3^7;

/*以下兩個函數為定時器中斷函數*/

/*定時器1,控制舵機1,輸出引腳為P12,可自定義*/
void timer0(void) interrupt 1 using 1
{p12=!p12; /*輸出取反*/
c=20000-c; /*20000代表20 ms,為一個周期的時間*/
TH0=-(c/256); TL0=-(c%256); /*重新定義計數初值*/
if(c>=500&&c<=2500)c=a;
else c="20000-a"; /*判斷脈寬是否在正常范圍之內*/
}

/*定時器2,控制舵機2,輸出引腳為P13,可自定義*/
void timer1(void) interrupt 3 using 1
{p13=!p13;
d=20000-d;
TH1=-(d/256); TL1=-(d%256);
if(d>=500&&d<=2500)d=b;
else d="20000-b";
}

/*主程序*/
void main(void)
{TMOD=0x11; /*設初值*/
p12=1;
p13=1;
a=1500;
b=1500; /*數值1500即對應1.5ms,為舵機的中間90度的位置*/
c=a;d=b;
TH0=-(a/256); TL0=-(a%256);
TH1=-(b/256); TL1=-(b%256); /*設定定時器初始計數值*/
EA=1;
ET0=1; TR0=1;EX0=1;EX1=1;
ET1=1; TR1=1;
PX0=0;PX1=0;PT1=1;PT0=1;/*設定中斷優先級*/
for(;;)
{


作者: qq574117419    時間: 2009-3-11 08:16

中斷程序執行完畢會自動返回的。在最后給C或D判斷完初始值以后就返回,






歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1