单片机的定时中断——定时器0实现LED流水灯,定时器1实现两位数码管动态显示两位数字

记录案例:

#include 
#include 
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
void delayms(uint);
void display(uint,uint);
uchar aa,num0,num1,num,bai,shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void main()
{TMOD=0x11;TH0=(65536-45872)/256;TL0=(65536-45872)%256;TH1=(65536-45872)/256;TL1=(65536-45872)%256;EA=1;ET0=1;TR0=1;ET1=1;TR1=1;aa=0xfe;while(1){P1=aa;display(shi,ge);}
}
void display(uint shi,uint ge)
{dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0xfe;delayms(5);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0xfd;delayms(5);	
}void delayms(uint xms)
{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--)	;
}
void T0_time0()interrupt 1
{TH0=(65536-45872)/256;TL0=(65536-45872)%256;num0++;if(num0==5){num0=0;aa=_crol_(aa,1);}
}
void T1_time1()interrupt 3
{TH1=(65536-45872)/256;TL1=(65536-45872)%256;num1++;if(num1==5){num1=0;num++;if(num==99)num=0;shi=num/10;ge=num%10;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部