___________________________________________________________
功能:
电子时钟程序重写,使用延时函数来设定扫描间隔
时间:
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--);
}
___________________________________________________________
功能:
电子时钟程序重写,使用定时器设定扫描间隔
时间:
2010—8—16
___________________________________________________________
