中断,定时器,数码管动态显示
0~99秒定时器
按键按一下
开启显示00
再按一下开始计时
再按一下暂停
再按一下清0
一起学习
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- sbit p1=P1^0;
- sbit p2=P1^1;
- unsigned char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
- 0x80,0x90};
- unsigned char disp[2]={0xc0,0xc0};
- unsigned char i=0;
- unsigned int cnt =0;
- void main(){
- unsigned long sec =0;
- EA=1;
- TMOD=0x01;
- TH0=0xfc;
- TL0=0x18;
- ET0=1;
- TR0=1;
-
- while(1){
- if(cnt>=1000){
- cnt=0;
- sec++;
- disp[0]=TAB[sec%10];
- disp[1]=TAB[sec/10];
- }
-
-
-
- }
-
- }
- void inter0() interrupt 1{
- TH0=0xfc;
- TL0=0x18;
- cnt++;
- if(++i==3)i=1;
- P2=0xff;
- P1=~i;
- P2=disp[i-1];
-
-
- }
复制代码
所有资料51hei提供下载:
定时器秒表.rar
(14.37 KB, 下载次数: 37)
|