1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 单片机的定时中断——定时器0实现LED流水灯 定时器1实现两位数码管动态显示两位数字

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

时间:2022-11-03 21:24:42

相关推荐

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

记录案例:

#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit 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;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。