实时时钟芯片HT1380读写c程序

发布者:Qingfang最新更新时间:2014-12-10 来源: laogu关键字:实时时钟  HT1380  读写c程序 手机看文章 扫描二维码
随时随地手机看文章
/*此程序的原型是从网上下载的,经过了我的实验和修改,并成功应用*/

#include
#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,写保护?*/
}
/********************************************************************
*
* 名称: 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         P10

 

sbit 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程序

上一篇:proteus与keil的完美结合
下一篇:铁电存储器FM24C256在仪表中的应用

推荐阅读最新更新时间:2024-03-16 13:48

Microchip推出全新中档SPI实时时钟/日历系列
Microchip Technology Inc.(美国微芯科技公司)宣布,推出全新10引脚SPI MCP795XX系列,扩展其独立实时时钟/日历(RTCC)产品线。新系列提供众多与较大型14引脚MCP795WXX系列相同的功能,其中包括优异的计时性能。 通过减少系统整体元件数量并消除串行ID的用户编程成本,MCP795XX RTCC系列成为便携式设备、无线和消费市场的理想选择。该系列包括64字节SRAM、2 Kb EEPROM和一个128位唯一ID,从而可以无需额外的存储器件。128位的唯一ID在订购时可以选择保持空白,也可以预编程一个MAC地址。需要在大温度范围下确保时间精准的电表、生产设备、收音机、GPS和医院仪表应用,也
[网络通信]
MSP430:实时时钟-DS1302
1 /* 2 * DS1302.h 3 * 4 * Created on: 2013-11-27 5 * Author: Allen 6 */ 7 8 #ifndef DS1302_H_ 9 #define DS1302_H_ 10 11 #include MSP430G2553.h 12 #include MyType.h 13 14 //时间结构体 15 typedef struct 16 { 17 uchar year; //00-99,前面自己加入20,比如读出13为2013 18 uchar month; 19 uchar date; 20 uchar hour; 2
[单片机]
MSP430单片机RTC实时时钟部分程序结构
RTC-Real Time Clock是430单片机的实时时钟模块,可以配置成实时时钟模式(万年历)或者一般目的的32位计数器模式,其中实时时钟模式提供了年月日、时分秒,可以选择BCD码或者二进制格式,并且具有可编程的闹钟。RTC模块支持中断。相关寄存器请参阅430系列单片机user's guide(我用的是5438A)。 1.计数器模式 实时时钟控制器寄存器1 RTCMODE位被重置时,计数器模式被选择,通过软件设置可以得到一个32位的计数器。从时钟模式切换到计数器模式是通过重置计数值:RTCNT1、RTCNT2、RTCNT3、RTCNT4 和 预换算计数器:RT0PS、RT1PS。 计数器的增量计数器来自ACLK、
[单片机]
MSP430单片机RTC<font color='red'>实时时钟</font>部分程序结构
LPC2138+LCD12864显示实时时钟程序 keil与proteus联调
近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。32位嵌入式系统发展很快,32位单片机已逐渐占领8位机的市场,并以很高的性价比赢得了越来越多的用户的青睐。随着科技和工艺的进步,32位单片机的优势会更加突显出来,将会成为嵌入式系统的主流。在32位嵌入式系统中,基于ARM的应用占据了大部分份额。 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件
[单片机]
LPC2138+LCD12864显示<font color='red'>实时时钟</font>程序 keil与proteus联调
STM8L探索套件学习笔记-RTC实时时钟(六)
RTC的时钟可以选择四种时钟HSE/HIS/LSE/LSI,如下图所示。相比STM32的RTC需要相关软件配合才能RTC功能。STM8L更加灵活,相关寄存器就有33个,而且是硬件实现的,缺点是没有独立的RTC供电的电源。 实时时钟的主要代码: void main(void) { u8 temp=0; /* Infinite loop */ /* Select LSE (32.768 KHz) as RTC clock source */ CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); CLK_PeripheralClockConfig(CLK_Perip
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved