___________________________________________________________ 功能: 電子時鐘程序重寫,使用延時函數(shù)來設(shè)定掃描間隔 時間: 2010—8--16 ___________________________________________________________ #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit setsec=P3^0; sbit setmin=P3^1; sbit sethour=P3^2; uchar num=0,hour,min,sec,hourshi,hourge,minshi,minge,secshi,secge; void delayms(uchar cnt); void display(); void scan(); void main() { TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=1; EA=1; ET0=1; while(1) { if(num==100) { sec++; if(sec==60) { sec=0; min++; } if(min==60) { min=0; hour++; } if(hour==24) { hour=0; } num=0; } hourshi=hour/10; hourge=hour%10; minshi=min/10; minge=min%10; secshi=sec/10; secge=sec%10; display(); scan(); } } void display()//No use of timer1,using delayms() { P0=secge; P2=0xfe; delayms(5); P0=secshi; P2=0xfd; delayms(5); P0=0x40; P2=0xfb; delayms(5); P0=minge; P2=0xf7; delayms(5); P0=minshi; P2=0xef; delayms(5); P0=0x40; P2=0xdf; delayms(5); P0=hourge; P2=0xbf; delayms(5); if(hourshi) { P0=hourshi; P2=0x7f; delayms(5); } } void timer0() interrupt 1 using 0 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; num++; } void scan() { if(!setsec) { delayms(2); sec++; if(sec==60) { sec=0; min++; if(min==60) { min=0; hour++; if(hour==24) { hour=0; } } } } if(!setmin) { delayms(2); min++; if(min==60) { min=0; hour++; if(hour==24) { hour=0; } } } if(!sethour) { delayms(2); hour++; if(hour==24) { hour=0; } } } void delayms(uchar cnt) { uchar x,y; for(x=cnt;x>0;x--) for(y=110;y>0;y--); } ___________________________________________________________ 功能: 電子時鐘程序重寫,使用定時器設(shè)定掃描間隔 時間: 2010—8—16 ___________________________________________________________