初学者,尝试做一个60S的倒计时。实验图如下;
这个程序是60S倒计时,达到0时,重新赋初值为60,继续进行减计时,循环往复。
单片机源程序如下:
- //60S倒计时程序
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar temp,bai,shi,ge,num;
- uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- void delay(uint z);
- void main()
- {
- temp=60;
- num=0;
- P1=0x00;
- TMOD=0x01;
- TH0=(65536-55536)/256;
- TL0=(65536-55536)%256;
- EA=1; ET0=1; TR0=1;
- while(1)
- {
- shi = temp/10;
- ge = temp%10;
- P1 = 0xFD;
- P2 = table[shi];
- P1 = 0xFD;
- delay(5);
- P1 = 0xFE;
- P2 = table[ge];
- delay(5);
- }
- }
- //定时器0外部中断方式
- void time_0() interrupt 1
- {
- TH0=(65536-55536)/256;
- TL0=(65536-55536)%256;
- num ++;
- if(num == 18)
- {
- temp --;
- num = 0;
- if(temp == -1)
- {
- temp = 60;
- }
- }
- }
- //延时程序
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
复制代码 全部资料51hei下载地址:
60S程序+仿真.zip
(87.35 KB, 下载次数: 55)
|