#include <w78e58b.h>#include "ht1380.h"#include "intrins.h"#define uchar unsigned char/********************************************************************** 名称: v_RTInputByte* 说明:* 功能: 往HT1381写入1Byte数据* 调用:* 输入: ucDa 写入的数据* 返回值: 无***********************************************************************/void v_RTInputByte(uchar ucDa){ACC= ucDa;T_IO=ACC0;T_CLK=1;delay();T_CLK=0;delay();T_IO=ACC1;T_CLK=1;delay();T_CLK=0;delay();T_IO=ACC2;T_CLK=1;delay();T_CLK=0;delay();T_IO=ACC3;T_CLK=1;delay();T_CLK=0;delay();T_IO=ACC4;T_CLK=1;delay();T_CLK=0;delay();T_IO=ACC5;T_CLK=1;delay();T_CLK=0;delay();T_IO=ACC6;T_CLK=1;delay();T_CLK=0;delay();T_IO=ACC7;T_CLK=1;delay();T_CLK=0;delay();}/********************************************************************** 名称: uchar uc_RTOutputByte* 说明:* 功能: 从HT1381读取1Byte数据* 调用:* 输入:* 返回值: ACC***********************************************************************/uchar uc_RTOutputByte(void){T_IO=1;ACC0=T_IO;T_CLK=1;delay();T_CLK=0;delay();ACC1=T_IO;T_CLK=1;delay();T_CLK=0;delay();ACC2=T_IO;T_CLK=1;delay();T_CLK=0;delay();ACC3=T_IO;T_CLK=1;delay();T_CLK=0;delay();ACC4=T_IO;T_CLK=1;delay();T_CLK=0;delay();ACC5=T_IO;T_CLK=1;delay();T_CLK=0;delay();ACC6=T_IO;T_CLK=1;delay();T_CLK=0;delay();ACC7=T_IO;return(ACC);}/********************************************************************** 名称: v_W1381* 说明: 先写地址,后写命令/数据* 功能: 往HT1381写入数据* 调用: v_RTInputByte()* 输入: ucAddr: HT1381地址, ucDa: 要写的数据* 返回值: 无***********************************************************************/void v_W1381(uchar ucAddr, uchar ucDa){T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr); /* 地址,命令 */v_RTInputByte(ucDa); /* 写1Byte数据*/T_CLK = 1;T_RST =0;}/********************************************************************** 名称: uc_R1381* 说明: 先写地址,后读命令/数据* 功能: 读取HT1381某地址的数据* 调用: v_RTInputByte() , uc_RTOutputByte()* 输入: ucAddr: HT1381地址* 返回值: ucDa :读取的数据***********************************************************************/uchar uc_R1381(uchar ucAddr){uchar ucDa;T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr); /* 地址,命令 */ucDa = uc_RTOutputByte(); /* 读1Byte数据 */T_CLK = 1;T_RST =0;return(ucDa);}/********************************************************************** 名称: v_Set1381* 说明:* 功能: 设置初始时间* 调用: v_W1381()* 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B* 返回值: 无***********************************************************************/void v_Set1381(uchar *pSecDa){uchar i;uchar ucAddr = 0x80;v_W1381(0x8e,0x00); /* 控制命令,WP=0,写操作?*/for(i =7;i>0;i--){v_W1381(ucAddr,*pSecDa); /* 秒 分 时 日 月 星期 年 */pSecDa ;ucAddr =2;}v_W1381(0x8e,0x80); /* 控制命令,WP=1,写保护?*/ 作者: vsden 2008-2-15 14:02 回复此发言 -------------------------------------------------------------------------------- 2 实时时钟芯片HT1380读写c程序 }/********************************************************************** 名称: v_Get1381* 说明:* 功能: 读取HT1381当前时间* 调用: uc_R1381()* 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B* 返回值: 无***********************************************************************/void v_Get1381(uchar *ucCurtime){uchar i;uchar ucAddr = 0x81;for (i=0;i<7;i ){*ucCurtime = uc_R1381(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */ucCurtime ;ucAddr = 2;}}void delay(){_nop_();_nop_();}#ifndef HT1380_h#define HT1380_h#define uchar unsigned char//define HT1380#define T_CLK P13#define T_IO P12#define T_RST P10sbit ACC0=ACC^0;sbit ACC1=ACC^1;sbit ACC2=ACC^2;sbit ACC3=ACC^3;sbit ACC4=ACC^4;sbit ACC5=ACC^5;sbit ACC6=ACC^6;sbit ACC7=ACC^7;/********************************************************************** 名称: v_RTInputByte* 说明:* 功能: 往HT1381写入1Byte数据* 调用:* 输入: ucDa 写入的数据* 返回值: 无***********************************************************************/void v_RTInputByte(uchar ucDa);/********************************************************************** 名称: uchar uc_RTOutputByte* 说明:* 功能: 从HT1381读取1Byte数据* 调用:* 输入:* 返回值: ACC***********************************************************************/uchar uc_RTOutputByte(void);/********************************************************************** 名称: v_W1381* 说明: 先写地址,后写命令/数据* 功能: 往HT1381写入数据* 调用: v_RTInputByte()* 输入: ucAddr: HT1381地址, ucDa: 要写的数据* 返回值: 无***********************************************************************/void v_W1381(uchar ucAddr, uchar ucDa);/********************************************************************** 名称: uc_R1381* 说明: 先写地址,后读命令/数据* 功能: 读取HT1381某地址的数据* 调用: v_RTInputByte() , uc_RTOutputByte()* 输入: ucAddr: HT1381地址* 返回值: ucDa :读取的数据***********************************************************************/uchar uc_R1381(uchar ucAddr);/********************************************************************** 名称: v_Set1381* 说明:* 功能: 设置初始时间* 调用: v_W1381()* 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B* 返回值: 无***********************************************************************/void v_Set1381(uchar *pSecDa);/********************************************************************** 名称: v_Get1381* 说明:* 功能: 读取HT1381当前时间* 调用: uc_R1381()* 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B* 返回值: 无***********************************************************************/void v_Get1381(uchar *ucCurtime);void delay();#endif
导读:目前正在解读《实时时钟芯片HT1380读写c程序》的相关信息,《实时时钟芯片HT1380读写c程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《实时时钟芯片HT1380读写c程序》的详细说明。
简介:此程序的原型是从网上下载的,经过了我的实验和修改,并成功应用,希望能给大家带来帮助。
提醒:《实时时钟芯片HT1380读写c程序》最后刷新时间 2024-03-14 01:02:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《实时时钟芯片HT1380读写c程序》该内容的真实性请自行鉴别。