求助:单片机C语言程序问题
这是一个电压表的程序中间和最后两个定时器程序的作用分别是什么?voidt1(void)interrupt3using0是什么意思?程序如下:#include<reg52....
这是一个电压表的程序 中间和最后两个定时器程序的作用分别是什么? 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变量取反。
EA=1;开总中断,
ET1=1;开定时计数器1;TR1=1;定时计数器启动。第二个是中断服务程序,TH1=(65536-200)/256;
TL1=(65536-200)%256;这两行是从新装入初值。
CLK=~CLK;CLK变量取反。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询