2.8

来源:互联网 发布:赣州教育软件代理 编辑:程序博客网 时间:2024/05/01 07:35
#include<reg52.h>


extern void InitLcd1602();
extern void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str);
void ShowBcdByte(unsigned char x,unsigned char y,unsigned char bcd);
extern void E2Read(unsigned char *buf,unsigned char addr,unsigned char len);
extern void E2Write(unsigned char *buf,unsigned char addr,unsigned char len);
 
unsigned char sec=0;
unsigned char min=0;
unsigned char hour=12 ;
bit flag = 0;


void main()
{
     unsigned char buf[4];


EA = 1;
     TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x67;
ET0 = 1;
     TR0 = 1; 


InitLcd1602();
LcdShowStr(4,1,"  :  :  ");


while(1)
{
   E2Read(buf,0x20,sizeof(buf));
MemToStr(str,buf,sizeof(buf));
   if(flag == 1)
{
flag = 0;
sec++;
if(sec >= 60)
{
   sec = 0;
min++;
if(min >= 60)
{
   min = 0;
   hour++;
if(hour >= 24)
{
   hour = 0;
}
}
}
buf[0] = sec;
buf[1] = min;
buf[2] = hour;
E2Write(buf,0x20,sizeof(buf));
   }
ShowBcdByte(4,1,hour);
   ShowBcdByte(7,1,min);
   ShowBcdByte(10,1,sec);
 }
}


void MemToStr(unsigned char *str,unsigned char *src,unsigned char len)
{
     unsigned char tmp;


while(len--)
{
     tmp = *src>>4;
 if(tmp <= 9)
     *str++ = tmp + '0';
 else
     *str++ = tmp - 10 + 'A';


 tmp = *src&0x0F;
 if(tmp <= 9)
     *str++ = tmp + '0';
 else
     *str++ = tmp - 10 + 'A';
 *str++ = ' ';
 src++;


}
}


void ShowBcdByte(unsigned char x,unsigned char y,unsigned char bcd)
{
     unsigned char str[3];
 
str[0] = (bcd/10)+'0';
str[1] = (bcd%10)+'0';
str[2] = '\0';
LcdShowStr(x,y,str);
}


void InterruptTimer0() interrupt 1
{
static unsigned int cnt = 0;


     TH0 = 0xFC;
TL0 = 0x67;
cnt++;
if(cnt >= 1000)
{
    cnt = 0;
flag = 1;
}  
}
0 0
原创粉丝点击