• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 13KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 5
    下载次数
  • 2009-11-27 23:14
    上传日期
8051单片机的核心板启动程序 可移植性很好
inc.rar
  • LCD.H
    3.5KB
  • I2C.H
    1016B
  • 16c550.h
    2.8KB
  • rt12864m.h
    3.4KB
  • key.h
    2KB
  • I2C.OBJ
    1.6KB
  • ds1302.h
    9.5KB
  • bios.h
    1.5KB
  • DS12C887.H
    5.9KB
  • I2C.A51
    2KB
  • HT9200A.h
    664B
  • vser.H
    3.4KB
  • I2c.ASM
    2KB
  • elink.h
    1.7KB
  • elink1.h
    1.6KB
内容介绍
/********************************************************************* 公司名称: 模块名称:DS1302.c 功 能:实时时钟模块 时钟芯片型号:DS1302 说 明: DS1302是DALLAS公司出品的一种SPI接口的串行时钟芯片,需要接备用电池。内部 具有31Byte RAM。 |---U---| VCC2| 1 8 |VCC1 X1| 2 7 |SCLK X2| 3 6 |I/O GND| 4 5 |/RST |-------| 所有读写操作/RST必须为"1",VCC1接备用电池,实验电路时可以采用一个较大的 电解电容作为慢放电电池。VCC2接电路的+5V电源,X1,X2接32768Hz晶体。 程序设计:luoweibing 设计时间:2004.09.18 版 本 号: 20040918 *********************************************************************/ #include <reg52.h> sbit T_CLK = P1^6; /*实时时钟时钟线引脚 */ sbit T_IO = P1^7; /*实时时钟数据线引脚 */ sbit T_RST = P1^5; /*实时时钟复位线引脚 */ sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; void RTInputByte(unsigned char); /* 输入 1Byte */ unsigned char RTOutputByte(void); /* 输出 1Byte */ void W1302(unsigned char address, unsigned char); /* 写1个字节数据到指定地址*/ unsigned char R1302(unsigned char); /*从指定地址读出一个字节*/ void Set1302(unsigned char *); /* 设置时间 */ void Bcd2asc(unsigned char,unsigned char *); /*BCD转ASC模式*/ void Get1302(unsigned char curtime[]); /* 读取1302当前时间 */ void init1302(void); /******************************************************************** 函 数 名:RTInputByte() 功 能:实时时钟写入一字节 说 明:往DS1302写入1Byte数据 (内部函数) 入口参数:d 写入的数据 返 回 值:无 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ void RTInputByte(unsigned char d) { unsigned char i; ACC = d; for(i=8; i>0; i--) { T_IO = ACC0; /*相当于汇编中的 RRC */ T_CLK = 1; T_CLK = 0; ACC = ACC >> 1; } } /******************************************************************** 函 数 名:RTOutputByte() 功 能:实时时钟读取一字节 说 明:从DS1302读取1Byte数据 (内部函数) 入口参数:无 返 回 值:ACC 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ unsigned char RTOutputByte(void) { unsigned char i; for(i=8; i>0; i--) { ACC = ACC >>1; /*相当于汇编中的 RRC */ ACC7 = T_IO; T_CLK = 1; T_CLK = 0; } return(ACC); } /******************************************************************** 函 数 名:W1302() 功 能:往DS1302写入数据 说 明:先写地址,后写命令/数据 (内部函数) 调 用:RTInputByte() , RTOutputByte() 入口参数:ucAddr: DS1302地址, ucData: 要写的数据 返 回 值:无 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ void W1302(unsigned char ucAddr, unsigned char ucDa) { T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(ucAddr); /* 地址,命令 */ RTInputByte(ucDa); /* 写1Byte数据*/ T_CLK = 1; T_RST = 0; } /******************************************************************** 函 数 名:R1302() 功 能:读取DS1302某地址的数据 说 明:先写地址,后读命令/数据 (内部函数) 调 用:RTInputByte() , RTOutputByte() 入口参数:ucAddr: DS1302地址 返 回 值:ucData :读取的数据 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ unsigned char R1302(unsigned char ucAddr) { unsigned char ucData; T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(ucAddr); /* 地址,命令 */ ucData = RTOutputByte(); /* 读1Byte数据 */ T_CLK = 1; T_RST = 0; return(ucData); } /******************************************************************** 函 数 名:BurstW1302T() 功 能:往DS1302写入时钟数据(多字节方式) 说 明:先写地址,后写命令/数据 调 用:RTInputByte() 入口参数:pWClock: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 控制 8Byte (BCD码)1B 1B 1B 1B 1B 1B 1B 1B 返 回 值:无 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ void BurstW1302T(unsigned char *pWClock) { unsigned char i; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/ T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xbe); /* 0xbe:时钟多字节写命令 */ for (i = 8; i>0; i--) /*8Byte = 7Byte 时钟数据 + 1Byte 控制*/ { RTInputByte(*pWClock); /* 写1Byte数据*/ pWClock++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函 数 名:BurstR1302T() 功 能:读取DS1302时钟数据 说 明:先写地址/命令,后读数据(时钟多字节方式) 调 用:RTInputByte() , RTOutputByte() 入口参数:pRClock: 读取时钟数据地址 格式为: 秒 分 时 日 月 星期 年 7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B 返 回 值:无 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ void BurstR1302T(unsigned char *pRClock) { unsigned char i; T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xbf); /* 0xbf:时钟多字节读命令 */ for (i=8; i>0; i--) { *pRClock = RTOutputByte(); /* 读1Byte数据 */ pRClock++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函 数 名:BurstW1302R() 功 能:往DS1302寄存器数写入数据(多字节方式) 说 明:先写地址,后写数据(寄存器多字节方式) 调 用:RTInputByte() 入口参数:pWReg: 寄存器数据地址 返 回 值:无 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ void BurstW1302R(unsigned char *pWReg) { unsigned char i; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作*/ T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xfe); /* 0xbe:时钟多字节写命令 */ for (i=31; i>0; i--) /* 31Byte 寄存器数据 */ { RTInputByte(*pWReg); /* 写1Byte数据*/ pWReg++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函 数 名:BurstR1302R() 功 能:读取DS1302寄存器数据 说 明:先写地址,后读命令/数据(寄存器多字节方式) 调 用:RTInputByte() , RTOutputByte() 入口参数:pRReg: 寄存器数据地址 返 回 值:无 设 计:luoweibing 日 期:2004.09.18 修 改: 日 期: ***********************************************************************/ void BurstR1302R(unsigned char *pRReg) { unsigned char i; T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(0xff); /* 0xff:时钟多字节读命令 */ for (i=31; i>0; i--) /*31Byte 寄存器数据 */ { *pRReg = RTOutputByte(); /* 读1Byte数据 */ pRReg++; } T_CLK = 1; T_RST = 0; } /******************************************************************** 函 数 名:Set1302() 功 能:设置初始时间 说 明:先写地址,后读命令/数据(寄存器多字节方式) 调 用:W1302() 入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年 7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B 返 回 值:无 设 计:luoweibing 日 期:2004.09.18 修
评论
    相关推荐
    • AngularAppCore:一个 AngularJS 应用程序核心
      一个 AngularJS 应用程序核心。 包含: 咕噜声 较少的 手表 表示 康卡特 重装上阵 ##先决条件 *NodeJS *咕噜声 ##安装 npm install ##跑步 运行 grunt 将启动服务器并观察文件的更改并重新加载页面。 grunt...
    • windows程序设计 中文pdf
      windows程序设计中文pdf,学习windows编程之必须,掌握windows编程技巧
    • Windows程序设计第5
      Windows程序设计第5(PDF格式)+源代码
    • 使用SharpDevelop核心构建应用程序
      为您的应用程序使用XML定义以使其可扩展。
    • 多系统启动引导程序xorldr_0.52
      XORLDR 是一个轻量级的多系统引导程序,它使用图形化的选择菜单,可以管理多达 16 个系统的启动。XORLDR 的启动对象可以是分区的引导扇区,也可以是分区上的某个文件,还可以是指定的绝对扇区号。 XORLDR 支持的...
    • U盘启动制作程序flashboot1.30
      制作U盘启动盘,制作BackTrack3 U盘启动
    • 程序商城+php源码完整运营
      萤火小程序商城,是一款开源的电商系统,为中小企业提供最佳的新零售解决方案。采用稳定的MVC框架开发,执行效率、扩展性、稳定性值得信赖。
    • Windows程序设计 文字
      Windows SDK经典教程, 清晰文字.
    • windows核心编程第5
      windows核心编程第5 windows核心编程第5 windows核心编程第5
    • 易语言程序免安装下载
      即,新版支持库可被旧易语言或易程序使用,旧支持库也可被新版易语言或易程序使用(只是不支持静态编译)。  静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个...