EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
3 ? O& W5 h( d7 x: ^, w8 [* J实例原理:用定时器设计一个秒表,其中设有一个按键,定时器 T0工作在方式1。当第一 次按下按键时,定时器开始计时。第二次按下按键时,停止计时并计算第一次按下键盘与第二次按下键盘的时间,送人P0口和P2口并将时间显示出来,P0口显示十位,P2口显示各位。第三次按下键盘时使定时器清零,等待下一次按键。 源程序: #include<reg51.h> #define uchar unsigned char sbit key=P3^0; sbit ge=P2^7; sbit shi=P2^6; uchar time=0,count=0; uchar code dis[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; uchar code dis_dot[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void delay(uchar N) { uchar i,j; for(i=0;i<N;i++) for(j=0;j<125;j++); } void display(void) { P0=dis[time%10]; ge=0; delay(3); ge=1; P0=dis_dot[time/10]; shi=0; delay(3); shi=1; } void main() { 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(); } } void T0_time()interrupt 1 { count++; if(count==2) { time++; count=0; if(time==99) time=0; } TH0=0x3c;TL0=0xb0; } 仿真结果图:
! U9 M1 @3 l, L8 |/ {$ ? |