《单片机59分59秒内可调倒计时.doc》由会员分享,可在线阅读,更多相关《单片机59分59秒内可调倒计时.doc(7页珍藏版)》请在金锄头文库上搜索。
1、#include #define uint unsigned int#define uchar unsigned charsbit k1 = P00;sbit k2 = P01;sbit k3 = P02;uint sec = 59;uint min = 59;uint hour = 59;uint x = 0;uint y = 0;uint z = 0;uint xun = 1;int NUM10 = 0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;int BITS6 = 0x01,0x02,0x04,0x08,0x10,0x20;void
2、 InitTimer0(void) TMOD = 0x01; TH0 = 0x0C2; TL0 = 0x0CD; EA = 1;/中断总开关EX0 = 1;/外部中断0开 EX1 =1;/外部中断1开 ET0 = 1;/定时器0开 TR0 = 1; /开启定时器计时void delay(uchar x)uchar i;for(x;x0;x-)for(i=200;i0;i-);void display(uint a,uint b,uint c)uint i;for(i=0;i6;i+)P2=BITSi;if(i=0)P1=NUMc/10;else if(i=1)P1=(NUMc%10+0x80)
3、;else if(i=2)P1=NUMb/10;else if(i=3)P1=(NUMb%10+0x80);else if(i=4)P1=NUMa/10;else if(i=5)P1=(NUMa%10+0x80);delay(5);void set(uint xun) /x=2 secuint a=1;if(xun=2)P2=BITS4;P1=NUMsec/10;delay(5);P2=BITS5;P1=(NUMsec%10);delay(5);else if(xun=3)P2=BITS2;P1=NUMmin/10;delay(5);P2=BITS3;P1=(NUMmin%10);delay(
4、5);else if(xun=4)P2=BITS0;P1=NUMhour/10;delay(5);P2=BITS1;P1=(NUMhour%10);delay(5);void main(void)InitTimer0();while(1)while(xun=1)display(sec,min,hour);if(k1=0)delay(500);if(k1=0)InitTimer0();if(ET0=0)&(k3=0)delay(500);if(ET0=0)&(k3=0)xun+;while(xun=2)if(k1=0)delay(500);if(k1=0)InitTimer0();xun=1;
5、if(k2=0)delay(500);if(k2=0)if(sec=59)sec=0;elsesec+;set(xun);if(ET0=0)&(k3=0)delay(500);if(ET0=0)&(k3=0)xun+;while(xun=3)if(k1=0)delay(500);if(k1=0)InitTimer0();xun=1; if(k2=0)delay(500);if(k2=0)if(min=59)min=0;elsemin+;set(xun);if(ET0=0)&(k3=0)delay(500);if(ET0=0)&(k3=0)xun+;while(xun=4)if(k1=0)del
6、ay(500);if(k1=0)InitTimer0();xun=1; if(k2=0)delay(500);if(k2=0)if(hour=59)hour=0;elsehour+;set(xun);if(ET0=0)&(k3=0)delay(500);if(ET0=0)&(k3=0)xun=2;void Timer0Interrupt(void) interrupt 1using 1 /17msTH0 = 0x0C2; TL0 = 0x0CD; if(sec=0)sec = 59;if(min=0)min = 59;if(hour=0)sec = 0;min = 0;TR0 = 0;elsehour = hour-1;elsemin = min-1; elsesec = sec-1;void INT0_ROUTING() interrupt 0 using 2/外部中断0子程序 ET0 = 0;TR0 = 0;