📄 clock.c
字号:
#include "reg58.h"
#include "bus.h"
#include "clock.h"
#include "intrins.h"
#include "timer.h"
#include "lcd.h"
unsigned char clock_read(unsigned char time)
{
unsigned char tempdata;
AS128=0;
SEL128=0;
DATAPORT=time;
AS128=1;
_nop_();
AS128=0;
DATAPORT=0XFF;
//tempdata=DATAPORT;
RD=0;
_nop_();
_nop_();
tempdata=DATAPORT;
RD=1;
SEL128=1;
return tempdata;
}
void clock_write(unsigned char time,unsigned char timedata)
{
AS128=0;
//WR=0;
SEL128=0;
DATAPORT=time;
AS128=1;
_nop_();
AS128=0;
DATAPORT=timedata;
WR=0;
_nop_();
WR=1;
SEL128=1;
}
void getdatetime()
{
datetime[0]=clock_read(CCENTURY);
datetime[1]=clock_read(CYEAR);
datetime[2]=clock_read(CMONTH);
datetime[3]=clock_read(CDAYOFMONTH);
datetime[4]=clock_read(CHOURS);
datetime[5]=clock_read(CMINUTES);
datetime[6]=clock_read(CSECONDS);
datetime[7]=clock_read(CDAYOFWEEK);
secondsflag=0;
seconds=0;
}
void init_clock()
{
//unsigned char tempdata;
//clock_write(REGISTERA,0x20);
//clock_write(SECONDS,0);
//clock_write(MINUTES,32);
//clock_write(HOURS,12);
//clock_write(DAYOFWEEK,4);
//clock_write(DAYOFMONTH,11);
//clock_write(MONTH,8);
//clock_write(YEAR,05);
//clock_write(CENTURY,20);
//clock_write(100,0x55);
//tempdata=clock_read(100);
clock_write(CREGISTERB,0x6);
clock_write(CREGISTERA,0x20);
//while(1)
//{
//tempdata=clock_read(SECONDS);
//tempdata=clock_read(MINUTES);
//tempdata=clock_read(HOURS);
//t/empdata=clock_read(DAYOFWEEK);
//tempdata=clock_read(DAYOFMONTH);
//tempdata=clock_read(MONTH);
//tempdata=clock_read(YEAR);
//tempdata=clock_read(CENTURY);
//tempdata=clock_read(REGISTERA);
//tempdata=clock_read(REGISTERB);
//tempdata=clock_read(REGISTERC);
//tempdata=clock_read(REGISTERD);
//}
//tempdata1=clock_read(USEDFLAG1);
//tempdata2=clock_read(USEDFLAG2);
//getdatetime(datetime);
_nop_();
}
void checksavedate()
{
unsigned char tempdata;
tempdata=(dispbuff[LINE2][0]-0X30)*10+dispbuff[LINE2][1]-0X30; //20
if(tempdata!=20)return;
tempdata=(dispbuff[LINE2][2]-0X30)*10+dispbuff[LINE2][3]-0X30; //05
if(tempdata>99)return;
tempdata=(dispbuff[LINE2][4]-0X30)*10+dispbuff[LINE2][5]-0X30; //10
if((tempdata>12)||(!tempdata))return;
tempdata=(dispbuff[LINE2][6]-0X30)*10+dispbuff[LINE2][7]-0X30; //11
if((tempdata>31)||(!tempdata))return;
tempdata=(dispbuff[LINE2][8]-0X30)*10+dispbuff[LINE2][9]-0X30; //
if(tempdata>23)return;
tempdata=(dispbuff[LINE2][10]-0X30)*10+dispbuff[LINE2][11]-0X30;
if(tempdata>59)return;
tempdata=(dispbuff[LINE2][12]-0X30)*10+dispbuff[LINE2][13]-0X30;
if(tempdata>59)return;
tempdata=dispbuff[LINE2][14]-0X30;
if((tempdata>7)||(!tempdata))return;
tempdata=(dispbuff[LINE2][12]-0X30)*10+dispbuff[LINE2][13]-0X30;
clock_write(CSECONDS,tempdata);
tempdata=(dispbuff[LINE2][10]-0X30)*10+dispbuff[LINE2][11]-0X30;
clock_write(CMINUTES,tempdata);
tempdata=(dispbuff[LINE2][8]-0X30)*10+dispbuff[LINE2][9]-0X30; //
clock_write(CHOURS,tempdata);
tempdata=(dispbuff[LINE2][6]-0X30)*10+dispbuff[LINE2][7]-0X30; //11
clock_write(CDAYOFMONTH,tempdata);
tempdata=(dispbuff[LINE2][4]-0X30)*10+dispbuff[LINE2][5]-0X30; //10
clock_write(CMONTH,tempdata);
tempdata=(dispbuff[LINE2][2]-0X30)*10+dispbuff[LINE2][3]-0X30; //05
clock_write(CYEAR,tempdata);
tempdata=(dispbuff[LINE2][0]-0X30)*10+dispbuff[LINE2][1]-0X30; //20
clock_write(CCENTURY,tempdata);
tempdata=dispbuff[LINE2][14]-0X30;
clock_write(CDAYOFWEEK,tempdata);
getdatetime();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -