📄 1381driver.c
字号:
/********** 1381芯片读写驱动程序 (4MHZ晶体)
***********作者:卢海钧
***********日期:2004.11.14,
2005.3.27修正一错误
2V 500K 5V 2MHZ CLK
*/
#define USER_DRIVER_GLOBALS
#include "..\includes\includes.h"
INT8U CLK_TEMP;
#define ht1380_clk _pd0
#define ht1380_clk_ctrl _pdc0
#define ht1380_io _pd1
#define ht1380_io_ctrl _pdc1
#define ht1380_rest _pd2
#define ht1380_rest_ctrl _pdc2
//void HT1381_INIT(void);
//void HT1381_WR(void);
//void HT1381_RD(void);
//void HT1381_GETTIME(void);
//void HT1381_WRTIME(void);
void HT1381_GETTIME(void)
{
ht1380_rest = 0;
asm("nop");
asm("nop");
ht1380_rest = 1;
CLK_TEMP = 0xbf;
HT1381_WR();
HT1381_RD();
ClkSec = CLK_TEMP;
HT1381_RD();
ClkMin = CLK_TEMP;
HT1381_RD();
ClkHr = CLK_TEMP;
HT1381_RD();
HT1381_RD();
HT1381_RD();
HT1381_RD();
ht1380_clk=0;
ht1380_clk_ctrl=0;
ht1380_io=0;
ht1380_io_ctrl=0;
ht1380_rest=0;
ht1380_rest_ctrl=0;
ht1380_rest = 0;
}
void HT1381_WRTIME(void)
{
ht1380_rest = 0;
asm("nop");
asm("nop");
ht1380_rest = 1;
CLK_TEMP = 0x8e;//10001110写第7个字节
HT1381_WR();
CLK_TEMP = 0;//cmd 取消写保护命令
HT1381_WR();
ht1380_rest = 0;
asm("nop");
asm("nop");
ht1380_rest = 1;
CLK_TEMP = 0xbe;
HT1381_WR();
CLK_TEMP = ClkSec;//写秒
HT1381_WR();
CLK_TEMP = ClkMin;//写分
HT1381_WR();
CLK_TEMP = ClkHr;//写时
HT1381_WR();
CLK_TEMP = 1;//DATE
HT1381_WR();
CLK_TEMP = 11;//month
HT1381_WR();
CLK_TEMP = 1;//day
HT1381_WR();
CLK_TEMP = 4;//year
HT1381_WR();
ht1380_rest = 0;
asm("nop");
}
void HT1381_INIT(void)
{
ht1380_clk_ctrl = 0;
ht1380_io_ctrl = 0;
ht1380_rest_ctrl = 0;
ht1380_rest = 0;
asm("nop");
asm("nop");
ht1380_rest = 1;
CLK_TEMP = 0x8e;//10001110写第7个字节
HT1381_WR();
CLK_TEMP = 0;//cmd 取消写保护命令
HT1381_WR();
ht1380_rest = 0;
asm("nop");
asm("nop");
ht1380_rest = 1;
CLK_TEMP = 0x80;//10000000写第0个字节
HT1381_WR();
CLK_TEMP = 0;//使能晶体
HT1381_WR();
/*
CLK_TEMP = 0xBE;//10111110写第0--7个字节
HT1381_WR();
CLK_TEMP = ClkSec;
HT1381_WR();
CLK_TEMP = ClkMin;
HT1381_WR();
CLK_TEMP = ClkHr;
HT1381_WR();
CLK_TEMP = 1;//DATE
HT1381_WR();
CLK_TEMP = 11;//month
HT1381_WR();
CLK_TEMP = 1;//day
HT1381_WR();
CLK_TEMP = 4;//year
HT1381_WR();
*/
asm("nop");
ht1380_rest = 0;
}
void HT1381_WR(void)
{
INT8U i;
ht1380_io_ctrl = 0;
ht1380_io = 0;
for (i = 0; i < 8; i ++){
if (CLK_TEMP & 0x01 ) {
ht1380_io = 1;
}
ht1380_clk = 1;
asm("nop");
asm("nop");
ht1380_clk = 0;
ht1380_io = 0;
CLK_TEMP = CLK_TEMP >> 1;
}
}
void HT1381_RD(void)
{
INT8U i;
CLK_TEMP = 0;
ht1380_io_ctrl = 1;
for (i = 0; i < 8; i ++){
ht1380_clk = 1;
asm("nop");
CLK_TEMP = CLK_TEMP >> 1;
if (ht1380_io ){
CLK_TEMP |= 0x80;
}
ht1380_clk = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -