EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机定时器的应用proteus仿真、51单片机定时器的应用proteus仿真 实例原理:用定时器设计一个秒表,其中设有一个按键,定时器 T0工作在方式1。当第一 次按下按键时,定时器开始计时。第二次按下按键时,停止计时并计算第一次按下键盘与第二次按下键盘的时间,送人P0口和P2口并将时间显示出来,P0口显示十位,P2口显示各位。第三次按下键盘时使定时器清零,等待下一次按键。 源程序: #include<reg51.h> #defineuchar unsigned char sbitkey=P3^0; sbitge=P2^7; sbitshi=P2^6; uchartime=0,count=0; ucharcode dis[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; ucharcode dis_dot[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; voiddelay(uchar N) { uchar i,j; for(i=0;i<N;i++) for(j=0;j<125;j++); } voiddisplay(void) { P0=dis[time%10]; ge=0; delay(3); ge=1; P0=dis_dot[time/10]; shi=0; delay(3); shi=1; } voidmain() { TMOD=0x01;TH0=0x3c;TL0=0xb0;IE=0x82;//定时器T0工作在方式1 while(1) { while(key==1) display(); TR0=1; EA=1; while(key==0) display(); while(key==1) display(); EA=0; while(key==0); display(); while(key==1) display(); time=0; while(key==0) display(); } } voidT0_time()interrupt 1 { count++; if(count==2) { time++; count=0; if(time==99) time=0; } TH0=0x3c;TL0=0xb0; }
6 N2 A+ k! e7 \完整资料下载: ; ~4 f% e0 [0 Q1 S
) N; Q# q$ g N; r# s! R% M* o9 q# {# A9 J, b) ^
; h& G% U8 [) I$ v4 x* h4 I0 | |