
51单片机定时器数码管30秒倒计时(三个按键控制开始暂停复位).docx
3页精选优质文档-----倾情为你奉上51单片机定时器数码管30秒倒计时(带三个按键控制开始,暂停,复位)程序:#include "at89x51.h"unsigned char code led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char code addr[2]={0xef,0xdf};unsigned char xx[2];unsigned char time=30;unsigned char flag=0;void delay(void);void sys(void){ TMOD=0x01; TH0=(65536 - 50000) / 256; TL0=(65536 - 50000) % 256; ET0=1; TR0=1; EA=1; EX0=1; IT0=1; }void ftimer0(void) interrupt 1{ static unsigned char cnt; TH0=(65536-50000)/256; TL0=(65536-50000)%256; cnt++; if(cnt>20) { if(flag==1) { time--; cnt=0; if(time==0) { ET0=0; TR0=0; } } }} void int0(void) interrupt 0{ if(P2_0==0) { flag=1; ET0=1; } else if(P2_1==0) { ET0=0; } else if(P2_2==0) { time=30; ET0=0; TR0=1; }}void main(){ unsigned char a; sys(); for(;;) { for(a=0;a<2;a++) { xx[0]=time/10; xx[1]=time%10; P0=led[xx[a]]; P1=addr[a]; delay(); P1=0xff; } }}void delay(void){ long t=100; while (t--);}电路图及结果:专心---专注---专业。
