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

更新时间:2024-01-25 12:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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)%6; 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; P0=led[xx[a]]; P1=addr[a]; delay(); P1=0xff; } } }

void delay(void) { long t=100; while (t--); }

电路图及结果:

本文来源:https://www.bwwdw.com/article/0gcw.html

Top