求助:单片机C语言程序问题

这是一个电压表的程序 中间和最后两个定时器程序的作用分别是什么? void t1(void) interrupt 3 using 0是什么意思? 程序如下: #include<reg52.h> unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispbuf[4]; unsigned int i; unsigned int j; unsigned int getdata; unsigned int temp; unsigned int temp1; unsigned char count; unsigned char d; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; sbit CLK=P3^3; sbit P34=P3^4; sbit P35=P3^5; sbit P36=P3^6; sbit P20=P2^0; sbit P21=P2^1; sbit P22=P2^2; sbit P23=P2^3; sbit P17=P1^7; //sbit s3=P2^7; //位定义,控制模拟开关 sbit s2=P2^6; sbit s1=P2^5; #define _v10 {s1=1;s2=0;} #define _v20 {s1=0;s2=1;} unsigned char m; void TimeInitial(); void Delay(unsigned int i); void TimeInitial() { TMOD=0x10; TH1=(65536-200)/256; TL1=(65536-200)%256; EA=1; ET1=1; TR1=1; } void Delay(unsigned int i) { unsigned int j; for(;i>0;i--) { for(j=0;j<125;j++) {;} } } void Display() { P1=dispbitcode[dispbuf[3]]; P20=0; P21=1; P22=1; P23=1; Delay(10); P1=0x00; P1=dispbitcode[dispbuf[2]]; P17=1; P20=1; P21=0; P22=1; P23=1; Delay(10); P1=0x00; P1=dispbitcode[dispbuf[1]]; P20=1; P21=1; P22=0; P23=1; Delay(10); P1=0x00; P1=dispbitcode[dispbuf[0]]; P20=1; P21=1; P22=1; P23=0; Delay(10); P1=0x00; } void main() { TimeInitial(); P34=0; P35=0; P36=0; _v20; m=4; while(1) { ST=0; OE=0; ST=1; ST=0; while(EOC==0); OE=1; getdata=P0; OE=0; if ( s1==0&&s2==1 && getdata<128) { _v10; m=2; } else if( s1==1&&s2==0&& getdata>254) { _v20; m=4; } temp=(getdata*1.0/255)*500*m; dispbuf[0]=temp%10; dispbuf[1]=temp/10%10; dispbuf[2]=temp/100%10; dispbuf[3]=temp/1000; Display(); } } void t1(void) interrupt 3 using 0 { TH1=(65536-200)/256; TL1=(65536-200)%256; CLK=~CLK; }

第一个是在主程序中设置的定时计数器中断相关参数设置,TMOD=0x10:设置定时计数器的工作方式为方式1(16为计数器),也就是计数范围为(0-65536)。TH1=(65536-200)/256;:TL1=(65536-200)%256;设置计数器的初值为:200.
EA=1;开总中断,
ET1=1;开定时计数器1;TR1=1;定时计数器启动。第二个是中断服务程序,TH1=(65536-200)/256;
TL1=(65536-200)%256;这两行是从新装入初值。
CLK=~CLK;CLK变量取反。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网