📄 ht1380.c
字号:
#include "all_func.h"
#include "display.h"
#include "main_func.h"
unsigned char Second=0;
unsigned char Minute=0x58;
unsigned char Hour=0x23;
unsigned char Date=0;
unsigned char Month=0;
unsigned char Day=0;
unsigned char Year=0;
unsigned char Re_Run_T_Min=0;
unsigned char S_Scnt=0;
bit Sec_Flag;
bit Sec_F;
void init_HT1380(void)
{
DAT1380_PIN=1;
CLK1380_PIN=0;
RST1380_PIN=0;
Writebyte_to_HT1380(WP_A,0x00);
Writebyte_to_HT1380(SEC_A,0x00);
}
void Write_HT1380(unsigned char dabuf)
{
unsigned char i=8;
while(i)
{
if(dabuf&0x01)DAT1380_PIN=1;
else DAT1380_PIN=0;
_nop_();
_nop_();
_nop_();
_nop_();
CLK1380_PIN=1;
_nop_();
_nop_();
_nop_();
_nop_();
CLK1380_PIN=0;
dabuf>>=1;
i--;
}
DAT1380_PIN=1;
}
unsigned char Read_HT1380(void)
{
unsigned char i=8;
unsigned char dabuf=0;
while(i)
{
dabuf>>=1;
if(DAT1380_PIN==1)dabuf|=0x80;
CLK1380_PIN=1;
_nop_();
_nop_();
_nop_();
_nop_();
CLK1380_PIN=0;
_nop_();
i--;
}
return dabuf;
}
unsigned char Readbyte_From_HT1380(unsigned char Addr)
{
unsigned char xx=0;
RST1380_PIN=1;
Addr|=0x01;
Write_HT1380(Addr);
xx=Read_HT1380();
RST1380_PIN=0;
DAT1380_PIN=0;
_nop_();
_nop_();
DAT1380_PIN=1;
return xx;
}
void Enable_Write(void)
{
RST1380_PIN=1;
Write_HT1380(WP_A);
Write_HT1380(0x00);
RST1380_PIN=0;
_nop_();
_nop_();
}
void Disable_Write(void)
{
RST1380_PIN=1;
Write_HT1380(WP_A);
Write_HT1380(0x80);
RST1380_PIN=0;
_nop_();
_nop_();
}
void Writebyte_to_HT1380(unsigned char Addr,unsigned char dat)
{
Enable_Write();
RST1380_PIN=1;
Write_HT1380(Addr);
Write_HT1380(dat);
RST1380_PIN=0;
_nop_();
_nop_();
Disable_Write();
}
void Multi_Read_HT1380(void)
{
unsigned char j=8;
unsigned timetable[8];
RST1380_PIN=1;
Write_HT1380(0xbf);//send Multi-read command 0xbf
while(j)
{
timetable[j-1]=Read_HT1380();
j--;
}
if(Sec_Flag!=DAT1380_PIN)
{
Sec_Flag=DAT1380_PIN;
Sec_time=100;
S_Scnt++;
if(S_Scnt>=60)
{
S_Scnt=0;
if(Re_Run_T_Min!=0)Re_Run_T_Min--;
}
//if(Re_Run_T_Min!=0)Re_Run_T_Min--;
}
RST1380_PIN=0;
DAT1380_PIN=0;
Second=timetable[7];
Minute=timetable[6];
Hour=timetable[5];
Date=timetable[4];
Month=timetable[3];
Day=timetable[2];
Year=timetable[1];
DAT1380_PIN=1;
}
void Multi_Write_HT1380(void)
{
unsigned char Address;
unsigned char timetable[8];
unsigned char *p;
unsigned char i=8;
p=timetable;
Enable_Write();
timetable[0]=Second;
timetable[1]=Minute;
timetable[2]=Hour;
timetable[3]=Date;
timetable[4]=Month;
timetable[5]=Day;
RST1380_PIN=1;
timetable[6]=Year;
timetable[7]=0;
Write_HT1380(0xbe); //send Multi-write command 0xbe
while(i)
{
Write_HT1380(*p);
i--;
p++;
}
RST1380_PIN=0;
_nop_();
_nop_();
Disable_Write();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -