51单片机定时器数码管30秒倒计时(三个按键控制开始暂停复位)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机定时器数码管30秒倒计时(带三个按键控制开始,暂停,复位)

程序:

#include ""

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--); }

电路图及结果:

相关文档
最新文档