|
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar hour,min,sec,t,c[8];
uchar disp_buf[]="0123456789";
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
void delay(uint z)
{
int i,j;
for (i=z;i>0;i--)
for(j=110;j>0;j--);
}
void write_w(uchar w)
{
delay(500);
RS=0;
RW=0;
E=0;
P0=w;
delay(10);
E=1;
delay(10);
E=0;
}
void write_data(uint date)
{
delay(500);
RS=1;
RW=0;
E=0;
P0=date;
delay(10);
E=1;
delay(10);
E=0;
RS=0;
}
void init()
{
E=0;
write_w(0x38);
write_w(0x0c);
write_w(0x06);
write_w(0x01);
// write_w(0x80);
}
void time0init()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
}
void display()
{
//unsigned char dis_buf[8];
c[1]=disp_buf[hour/10];
c[2]=disp_buf[hour%10];
c[3]=0x3a;
c[4]=disp_buf[min/10];
c[5]=disp_buf[min%10];
c[6]=0x3a;
c[7]=disp_buf[sec/10];
c[8]=disp_buf[sec%10];
}
void show()
{
display();
write_w(0x04+0x80);
write_data(c[1]);
write_data(c[2]);
write_data(c[3]);
write_data(c[4]);
write_data(c[5]);
write_data(c[6]);
write_data(c[7]);
write_data(c[8]);
}
void main()
{
init();
time0init();
while (1)
{
show();
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
min=0;
sec=0;
}
}
}
}
show();
}
|
|