实时时钟rx8025读写程序

合集下载

8025t中文使用详细说明

8025t中文使用详细说明
RX-8025T 使用说明概要
RX-8025T 使用说明概要
1、8025T 的特点:
1. 内置高稳定度的 32.768KHz 的 DTCXO (数字温度补偿晶体振荡器) 2. 支持 I2C 总线的高速模式(400K)。 3. 定时报警功能(可设定:天,日期,小时,分钟) 4. 固定周期定时中断功能。 5. 时间更新中断功能。 6. 32.768KHz 频率输出(具有使能 OE 功能) 7. 闰年自动调整功能。(2000 到 2099) 8. 宽范围接口电压:2.2V 到 5.5V 9. 宽范围的时间保持电压:1.8V 到 5.5V 10. 低电流功耗:0.8uA/3V (Typ.)
2、8025T 结构框图:
I
3、 8025T 管脚定义:
RX-8025T 使用说明概要
3.1 管脚功能定义:
管脚名称
I/O
功能
1:T1
In
* 工厂测试用(不用额外连接)
2:SCL
In
I2C 总线通讯的串行时钟输入端
3:FOUT
Out
这是个 C-MOS 输出引脚,可通过 FOE 进行控制。
当 FOE=’H’,该引脚输出一个 32.768KHz 信号
时钟计数器(寄存器 0 到 2)
分别记录时钟的-时,分,秒 所有的数据格式都为 BCD 码,例如秒寄存器的值为 ‘0101 1001’ 实际表示为 59 秒。 小时计数器从‘00’‘01’一直到‘23’,然后重新从‘00’开始,为 24 小时进制。
星期寄存器 REG-3
该寄存器用来记录星期的信息:第 0 位到第 6 位用来表示星期日,星期一....到星期六。 数据格式不再是 BCD 编码,而是分别用一位来表示不同的日期。

RX-8025T规格书(中文)

RX-8025T规格书(中文)

• 多种检测功能 • 电源电压监控功能 (具有可选择的检测阈值)
• 停止检测功能
• 加电重设检测功能
• 警报器功能和定时器功能
SCL
• 产生周期性的中断信号定时器功能。
及可任意组合星期 , 时 , 分 , 钟设定的警报功能
SDA
GND
引脚功能定义
信号名称 SCL SDA
FOUT
FOE
/ INTA / INTB TEST
:1.15 V ~ 5.5 V
•多种检测功能
:如,振荡停止检测功能
•低待机电流
:0.48 µA / 3 V (Typ.)
•32.768 kHz 频率输出功能
:带控制引脚的 C-MOS 输出
•包括时刻、日历、各种检测功能、中断功能等
* I2C-Bus 是 NXP Semiconductor 公司的一种商标。
警报器_D 寄存器 (分,时)
时间计数器 (秒,分,时,周,日,月,年)
电压 检测
OSC 检测
中断控制
地址 解码器
地址 寄存器
移位寄存器
I/O 控制
概览
• 32.768 kHz 石英振荡器的内置功能 •频率已针对高精度调整。
VDD
( ± 5 ×10−6 / Ta = +25 °C ) ( 相当于每月 13 秒的偏差 )
0.5 6.3 Max.
RX − 8025 NB
22. N.C. 21. N.C.
4.8 5.0 ± 0.2
20. 19. ห้องสมุดไป่ตู้8. 17. 16. 15.
1.3 ± 0.1
14. 13. 12.
N.C. N.C. N.C. N.C. N.C. N.C. N.C.

RX-8025T使用说明概要

RX-8025T使用说明概要

条件
接口电压 温度补偿电压 -
Min.
1.8 2.2 1.6 -40
Typ.
3.0 3.0 3.0 +25
6、频率特性:
频率稳定度: ▵f/f= ±3.8ppm @ Ta= 0 to +50℃, VDD=3.0V 相当于:60*60*24*3.8ppm = 0.328 (85℃, VDD=3.0V 相当于:60*60*24*5.0ppm = 0.432 (s/day)
2、8025T 结构框图:
I
3、 8025T 管脚定义:
RX-8025T 使用说明概要
3.1 管脚功能定义:
管脚名称
I/O
功能
1:T1
In
* 工厂测试用(不用额外连接)
2:SCL
In
I2C 总线通讯的串行时钟输入端
3:FOUT
Out
这是个 C-MOS 输出引脚,可通过 FOE 进行控制。
当 FOE=’H’,该引脚输出一个 32.768KHz 信号
VII
具体见下表:
RX-8025T 使用说明概要
特别注意:不要同时设定多位为‘1’的情况,因为任何错误的设定都会导致正常操作的混乱。
日历寄存器(4 到 6)
具有自动日历调节的功能,作用范围 2001 年 1 月 1 日到 2099 年 12 月 31 日。 数据格式为 BCD 编码。 注意:设定不存在的日期数据将导致计数器不能正常操作。 -----------------------------------------------------------------------------另外,日历对应的星期系统不能自动调整,可以通过一定的算法来实现,下面介绍一种常用 的公式: A:最常见的公式:

RX8025中文资料

RX8025中文资料

----------------------- Page 3-----------------------
RX-8025SA/SB EPSON
3. 引脚说明
3.1 引脚配置
本输入与电源电压无关 输入电压最高可达到5.5V
与I2C 通信用串行时钟同步 进行地址 数据 应答bit 等的输入输出
SDA 双向 这一引脚在输出时N-ch 开路漏极 请根据信号线的容量连接适当的下拉
电阻
由FOE 控制的32.768kHz 时钟输出
FOUT 输出 FOE=High 时输出32.768kHz C-MOS 输出
FOE=Low 或OPEN 时计时器输出停止 这时的输出固定为 L
3.1 引脚配置············································································································2
3.2 引脚功能············································································································2

本产品功能多样 采用表贴封装形式 最适用于各种手机 携带终端及其他小型电子机器等
2. 框图
1 Ver.0.1 2002.07
8.6 Alarm_D 功能····································································································· 19

RX-8025T使用说明概要

RX-8025T使用说明概要

项目
电源电压 输入电压(1) 输入电压(2) 输出电压(1) 输出电压(2) 存储温度
符号
VDD Vin1 Vin2 Vout1 Vout2 T-STG
条件
VDD 和 GND 之间 FOE 引脚 SCL,SDA 引脚 FOUT 引脚 SDA,/INT 引脚 分散存放,无包装
数值
-0.3 to +7.0 * GND-0.3 to VDD+0.3
VII
具体见下表:
RX-8025T 使用说明概要
特别注意:不要同时设定多位为‘1’的情况,因为任何错误的设定都会导致正常操作的混乱。
日历寄存器(4 到 6)
具有自动日历调节的功能,作用范围 2001 年 1 月 1 日到 2099 年 12 月 31 日。 数据格式为 BCD 编码。 注意:设定不存在的日期数据将导致计数器不能正常操作。 -----------------------------------------------------------------------------另外,日历对应的星期系统不能自动调整,可以通过一定的算法来实现,下面介绍一种常用 的公式: A:最常见的公式:
GND-0.3 to +7.0 GND-0.3 to VDD+0.3 * GND-0.3 to +7.0
-55 to +125
单位
V V V V V ℃
II
RX-8025T 使用说明概要
5、推荐操作条件:
项目
运行电压 温度补偿电压 时钟供电电压 操作温度
符号
VDD V-TEM V-CLK T-OPR
V
11.1 寄存器详解: 控制寄存器 F
RX-8025T 使用说明概要

OpenWrt添加实时钟 屏蔽串口等

OpenWrt添加实时钟 屏蔽串口等

为OpenWrt添加实时钟(RTC)--以MT7620为例2015-01-26 23:13 4117人阅读评论(2) 收藏举报分类:DS1307 OpenWrt(27) mt7620(31) Kernel(5) RTC版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]前言实时钟,英文名RTC(Real Time Clock),在PC里面很常见,在OpenWrt里面却鲜有提及,手头上有一个DS1307的TinyRTC实时钟模块,经过一番折腾,将其融合到了OpenWrt 系统,遂将操作过程记录成文.背景知识DS1307在最新的OpenWrt中已经提供支持,却没有整合进ramips中,因此,本文的一个重点便是如何为ramips系统配置ds1307.另外,为ds1307编写合适的dts节点也是本文的一个重点.实现过程1.为ramips配置ds1307支持系统在./scripts/medatata.pl中判断并处理RTC_SUPPORT开关,分析之后,原来是在target/linux/ramips/mt7620/target.mk中,将原始的内容:FEATURES+=usb修改为:FEATURES+=usb rtc即可打开mt7620对rtc的支持.此时,make kernel_menuconfig进入配置菜单.同时应注意,由于ds1307是i2c接口的模块,因此,在device中需要配置i2c的支持.选中i2c之后,便可以在Device Drivers -> Real Time Clock中看到ds1307[plain]view plain copyprint?1..config - Linux/mips 3.14.28 Kernel Configuration2.> Device Drivers > Real Time Clock ─────────────────────────────────────3.┌──── Dallas/Maxim DS1307/37/38/39/40, ST M41T00, EPSON RX-8025 ────┐4.│ CONFIG_RTC_DRV_DS1307: │5.││6.│ If you say yes here you get support for various compatible RTC │7.│ chips (often with battery backup) connected with I2C. This driver │8.│ should handle DS1307, DS1337, DS1338, DS1339, DS1340, ST M41T00, │9.│ EPSON RX-8025 and probably other chips. In some cases the RTC │10.│ must already have been initialized (by manufacturing or a │11.│ bootloader). │12.││13.│ The first seven registers on these chips hold an RTC, and other │14.│ registers may add features such as NVRAM, a trickle charger for │15.│ the RTC/NVRAM backup power, and alarms. NVRAM is visible in │16.│ sysfs, but other chip features may not be available. │17.││18.│ This driver can also be built as a module. If so, the module │19.│ will be called rtc-ds1307. │20.││21.│ Symbol: RTC_DRV_DS1307 [=y] │22.│ Type : tristate │23.│ Prompt: Dallas/Maxim DS1307/37/38/39/40, ST M41T00, EPSON RX-8025 │24.│ Location: │25.│ -> Device Drivers │26.│ -> Real Time Clock (RTC_CLASS [=y]) │27.│ Defined at drivers/rtc/Kconfig:166 │28.│ Depends on: RTC_CLASS [=y] && I2C [=y] │29.││30.││31.││32.├───────────────────────────────────────────────────────────(100%)──┤33.│ < Exit > │34.└───────────────────────────────────────────────────────────────────┘2.为ds1307建立dts节点配置好ds1307的编译开关后,接下来的工作就要在dts里面添加ds1307的设备节点.查阅ds1307的资料,其配置的i2c地址为0x68,因此,dts中可以添加如下内容:[cpp]view plain copyprint?1.i2c@0 {2. compatible = "i2c-gpio";3. gpios = <&gpio2 0 0 /* sda = wan_led*/4. &gpio3 0 0 /* scl = wlan_led*/ >;5. i2c-gpio,delay-us = <10>; /* ~20 kHz */6. #address-cells = <1>;7. #size-cells = <0>;8.9. rtc@68 {10. compatible = "dallas,ds1307";11. reg = <0x68>;12. };13.14.};完成这两步后,就可以make出支持ds1307的固件.系统启动时,可以在TTL中看到如下内容:[plain]view plain copyprint?1.[ 0.130000] i2c-gpio i2c.4: using pins 40 (SDA) and 72 (SCL)2....3.[ 0.790000] rtc-ds1307 0-0068: rtc core: registered ds1307 as rtc04.[ 0.810000] rtc-ds1307 0-0068: 56 bytes nvram5....6.[ 0.810000] rtc-ds1307 0-0068: setting system clock to 2015-01-26 22:31:15 UTC (1422311475)说明RTC已经成功的整合到了mt7620的系统中.ps:系统自带的hwclock命令可以很方便的对RTC进行相应的操作.后记kernel 3.14.28中的i2c-ralink驱动已经能够正常驱动7620的硬件i2c,只是在用i2cdetect的时候,需要加上-r参数,这样才能正确probe到设备.2.串口输出用户数据,屏蔽系统log输出由于mt7620n只有一个UART lite接口,在原生的OpenWrt中作为了内核打印和tty控制台所用。

时钟芯片rx8025读写子程序

时钟芯片rx8025读写子程序
MOV BYTECNT,#1
LCALL SENDDATA
RET
RCV8025: MOV SLVADR, #64H ;接收8025的CLOCK,CALENDAR
MOV SUBADR, #00H
MOV BYTECNT,#7
MOV 32H,A
MOV A,41H
ANL A,#0F0H
RR A
RR A
RR A
RR A
MOV 33H,A
MOV A, 42H
ANL A,#0F0H
RR A
RR A
RR A
RR A
MOV 3CH,A
RET
SEND8025: ACALL LOAD8025 ;发送CLOCK(00:00:00),CALENDAR(00:01:01),WEEKLY(0)
RR A
RR A
RR A
RR A
MOV 31H,A
MOV A, 41H
ANL A, #7FH
MOV 41H, A
ANL A,#0FH
RET
STOP: CLR SDA ;STOP 子程序
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
RR A
MOV 35H,A
MOV A,43H
ANL A, #07H
MOV 43H,A
ANL A,#0FH
MOV 36H,A
MOV A,44H
RR A
MOV 38H,A
MOV A,45H

8025T使用说明

8025T使用说明

时钟计数器(寄存器 0 到 2)
分别记录时钟的-时,分,秒 所有的数据格式都为 BCD 码,例如秒寄存器的值为 ‘0101 1001’ 实际表示为 59 秒。 小时计数器从‘00’‘01’一直到‘23’,然后重新从‘00’开始,为 24 小时进制。
星期寄存器 REG-3
该寄存器用来记录星期的信息:第 0 位到第 6 位用来表示星期日,星期一....到星期六。 数据格式不再是 BCD 编码,而是分别用一位来表示不同的日期。
VII
具体见下表:
RX-8025T 使用说明概要
特别注意:不要同时设定多位为‘1’的情况,因为任何错误的设定都会导致正常操作的混乱。
日历寄存器(4 到 6)
具有自动日历调节的功能,作用范围 2001 年 1 月 1 日到 2099 年 12 月 31 日。 数据格式为 BCD 编码。 注意:设定不存在的日期数据将导致计数器不能正常操作。 -----------------------------------------------------------------------------另外,日历对应的星期系统不能自动调整,可以通过一定的算法来实现,下面介绍一种常用 的公式: A:最常见的公式:
读/写
当一个中断事件产生时,就会有一个中断信号产生(/INT 的状态会从 H-Z 高阻状态 1
变为低电平。)
注意:在中断发生以后,/INT 的状态在 7.8ms 或 500ms 后自动清除(通过 USEL 位选择) 3)TIE(定时中断使能位)
写入一个‘1’到该位,当一个中断事件产生时,就会有一个中断信号产生(/INT 的状态 会从 H-Z 高阻状态变为低电平。) 写入一个‘0’到该位,当一个中断事件发生时,不会有中断信号产生。

爱普生(EPSON)实时时钟模块RX-8025SA规格书

爱普生(EPSON)实时时钟模块RX-8025SA规格书
未对任何专利或知识版权的许可权进行授权。 ·本材料中规格表中的数值大小通过数值线上的大小关系表示。 ·当出口此材料中描述的产品或技术时,你应该遵守相应的出口管制法律和法规,并按照这些法律和法规的要求执行。
请不要将产品(以及任何情况下提供任何的技术信息)用于开发或制造大规模杀伤性武器或其他军事用途。还要求,不要将产品提供给任何 将产品用于此类违禁用途的第三方。 ·此类产品是基于在一般电子机械内使用而设计开发的,如将产品应用于需要极高可靠性的特定用途,必须实现得到弊公司的事前许可。若 无许可弊公司将不负任何责任。
CL = 0 pF )
0.60 1.80 µA
0.48 1.20
3.0 6.5 µA
VDETH VDETL
VDD VDD
Ta = -30 °C ~ +70 °C Min. Typ. Max. 1.90 2.10 2.30 V 1.15 1.30 1.45 V
推进环境管理体系 符合国际标准
在环境管理体系的运行方面,使用 ISO14001 国际环境标准,通过“计 划-实施-检查-验证(PDCA)的循环来实现持续改进。公司位于日本和 海外的主要制造基地已取得了 ISO14001 资格认证。
)
1. N.C. 2. SCL 3. FOUT 4. N.C. 5. TEST 6. VDD 7. FOE
1.27
/
RX − 8025 SA
5.0 7.4 ± 0.2
SOP − 14
3.2 ± 0.1
10.1 ± 0.2
14. N.C. 13. SDA 12. / INTB 11. GND 10. / INTA
1.3 ± 0.1
14. 13. 12.
N.C. N.C.

RX-8025中文资料

RX-8025中文资料
引脚说明31引脚配置32引脚功能2ver01200207信号名io功能scl输入i2c通信用的串行时钟输入输入输出本输入与电源电压无关与这时钟信号同步sda引脚进行数据的输入电压最高可达到55vsda双向与i2c通信用串行时钟同步这一引脚在输出时nch开路漏极请根据信号线的容量连接适当的下拉电阻进行地址数据应答bit等的输入输出fout输出由foe控制的32768khz时钟输出foehigh时输出32768khzfoelow或open时计时器输出停止cmos输出这时的输出固定为lfoe输入控制fout引脚输出状态的输入引脚本引脚high时从fout引脚输出32768khz本引脚low或open时本输入与电源电压无关内置下拉电阻fout引脚不输出输入电压最高可达到55vinta输出中断输出a输出闹钟中断nch开路漏极输出alarmd及固定周期中断intb输出中断输出b输出闹钟中断nch开路漏极输出alarmwtest测试用引脚请务必连接到vddvdd连接到电源gnd接地连接nc
11.使用上的注意事项················································································· 30
11.1 处理上的注意事项 ·························································································· 30 11.2 装配上的注意事项 ·························································································· 30
输入输出
本输入与电源电压无关 输入电压最高可达到 5.5V

8025用户手册

8025用户手册
4. 绝对最大值····························································································· 3
5. 推荐动作条件························································································· 3
11.使用上的注意事项················································································· 30
11.1 处理上的注意事项 ·························································································· 30 11.2 装配上的注意事项 ·························································································· 30
记号
条件
f/f
Ta=+25 VDD=3.0V
F/V
Ta=+25 VDD=2V 5V
Top
Ta=-10 +70 VDD=3.0V ; +25 基准
TsTA
Ta=+25 VDD=3V
fa
Ta=+25 VDD=3.0V;
除去补偿值
规格 AA 精度 0 5(*1)
2Max +10/-120
3Max 5Max
3. 引脚说明································································································· 2

实时时钟芯片RX_8025的原理及其应用

实时时钟芯片RX_8025的原理及其应用

!’B’B
写操作 首先主器件( 微处理器) 向 W*)+ 芯片发送写指
M1/N
M1/K
M1/+ = B)G)# = Q4/
M1/#

M1/! M1/) @-4/

M1/B H/B O2CD
M1/* H/* A2CD
令, 收到应答信号后, 主器件再向 W*)+ 芯片发送要 写入数据的地址, 收到应答信号后, 再发送要写的 数据, 再发一个应答信号后结束。格式见图 # 。
节因素和温度变动对计时准确度的调整,它的调 整 范 围 为 !)<=>?@A;>"’;B;* C=, 调 整 准 确 度 单 位 为 A!’*+B;*C=,并且每 )*4 进行内部调整时钟一次。 注意不用此功能时要将 D= 到 D* 清 * 。 它的调整过程见表 ;。 表; 高精度调整时钟精确度表
!)<=<’<?@!H!)<=<’<C!)<=>I J !)<=>KC"’;=B;*C=; ( 计算对目前偏移量 的 最 佳 调 整 数 据 ( )) ;* 进
)’# 9 = < 控制单元 W*)+ 芯 片 与 主 器 件 之 间 的 数 据 传 输 是 通 过 ?HR 和 ?AE 两个脚,按 9)H 总线接口方式进行数据
的读取和写入, ?HR 脚 的 最 大 时 钟 频 率 为 #**XIJ ( 当 ! ""!B’N$ 时) , 与 9)H 总线高速模式相对应。
监测评估表ቤተ መጻሕፍቲ ባይዱ
针对现象分析原因 时钟出现反常状态, 可能是 温度下降引起的。 时钟出现反常状态, 可能是 电压下降引起的。 正常状态 时钟正常, 但有一种反常状态 存在, 可能后备电池出现异常。 时钟状态必须初始化, 否则就 会出现电压下降。

RX-8025T时钟芯片应用手册 EPSON

RX-8025T时钟芯片应用手册 EPSON
etm25e01?epsontoyocomapplicationmanualrealtimeclockmodulerx8025tepsontoyocomcorporation授权代理商imsczim侵先的片式无源器件供应商一南京南山半导体有限公司wwwnscncomcnnotice?thematerialissubjecttochangewithoutnotice
7.1. DC Characteristics ............................................................................................................. 4 7.2. AC Characteristics.............................................................................................................. 5
6. Frequency Characteristics ..................................................................................3
7. Electrical Characteristics.....................................................................................4
4. Absolute Maximum Ratings ...............................................................................3

BL8025T高精度实时时钟芯片

BL8025T高精度实时时钟芯片

BL8025T高精度实时时钟芯片目录1.概述 (2)2.特点 (2)3.结构框图 (2)4.管脚定义 (3)4.1管脚功能定义 (3)5.绝对最大额定值 (3)6.推荐操作条件 (4)7.电气特性 (4)7.1.直流特性 (4)7.2交流特性 (5)7.3晶体特性 (6)7.4振荡器特性 (6)7.5备份以及恢复 (6)8.寄存器说明 (6)8.1寄存器表 (6)8.2寄存器详解 (7)9.中断功能 (11)9.1报警中断功能 (11)9.2固定周期定时中断功能 (12)9.3时间更新中断功能 (13)10.I2C总线串行接口 (14)10.1I2C总线接口特点 (14)10.2数据传输 (14)10.3开始条件与结束条件 (14)10.4从地址 (15)10.5系统配置 (15)10.6应答信号 (15)10.7I2C总线控制 (16)1.概述BL8025T是内置32.768kHZ数字温度补偿晶体振荡器(DTCXO),以I2C总线接口为通信方式的高精度实时时钟芯片。

它有时钟和自动闰年校正日历功能,还有报警、固定周期定时中断、时间更新中断和使能OE的32.768kHz频率输出等多种功能。

2.特点内置高稳定度的32.768kHz的DTCXO(数字温度补偿晶体振荡器)支持I2C总线高速模式(400K)定时报警功能(可设定:天,日期,小时,分钟)固定周期定时中断功能时间更新中断功能32.768kHz频率输出(具有使能OE功能)闰年自动调整功能。

(2000到2099)宽范围接口电压:1.6V到5.5V宽范围时间保持电压:1.8V到5.5V低电流功耗:<1.8uA/3V(Type)3.结构框图4.管脚定义SCL FOUTNC TEST VDD FOE NCSDAT2(Vpp)GND/INTNCNC 8025T SSSSS 4.1管脚功能定义*注意:确认在VDD和GND之间连接一个至少0.1uF的旁路电容。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
display(0xfe,arg2[0]);//显示秒
delay(300);
display(0xfb,arg2[1]);//显示分
if(!OK)//如果按键"OK"按下,则等待8ms
delay(500);
if(!OK)//按键去抖动
{
}
void ackr(void) /*应答位*/
{
sdar=0;
_Nop();
sclr=1;
_Nop();
sclr=0;
_Nop();
}
void noackr(void) /*反向应答位*/
if(ACK_flagr==0)
flag=0;
for(i=0;i<no;i++)
{
sendbyte(*s);
if(ACK_flagr==0)flag=0;
s++;
_Nop();
}
ackr();
_Nop();
_Nop();
if(sdar==1)
{
ACK_flagr=0; //数据发送错误
}
else
{
ACK_flagr=1; //数据发送正确
}
}
uchar recbyte(void)
{
uchar i;
{
unsigned char i;
for(i=0;i<8;i++)
{
sdar=(bit)(senddata&0x80); /*取最高位*/
senddata=senddata<<1;
_Nop();
sclr=1;
_Nop();
sclr=0;
void sendbyte(unsigned char senddata);
unsigned char recbyte(void);
void display(uchar m,uchar y);
void bcd(uchar x);
bit init_8025(void);
/*发送起始条件*/
if(ACK_flagr==0)
flag=0;
stop();
return (flag);
}
}
void stop(void) /*停止条件*/
{
sdar=0;
_Nop();
sclr=1;
_Nop();
_Nop();
_Nop();
sdar=1;
delay(2);//延时61us,实际上只延时了56us
uchar i;
bit flag=1;
start();
sendbyte(slv_addr);//0x65
if(ACK_flagr==0)
flag=0;
sendbyte(sub_addr);//0x04//常规模式读取
sbit OK=P2^4;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
uchar bcd_h=0;//转化成BCD后的十位
uchar bcd_l=0;//转化成BCD后的个位
coding[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
}
stop();
return (flag);
}
bit RdFromFRam(unsigned char slv_addr,unsigned int sub_addr,unsigned char *s,unsigned char no)
{
}
}
/*****************************************/
//显示子程序,因为从8025读出的时间数据本身就是一个bcd码,所以直接分出高位和低位即可
/*****************************************/
void display(uchar m,uchar y)//显示子程序
start();
sendbyte(0x64); /*发送SLA+W*/
if(ACK_flagr==0)
flag=0;
sendbyte(0xe0);//第一个控制寄存器,设置为24进制
if(ACK_flagr==0)
flag=0;
sendbyte(0x20);
if(ACK_flagr==0)
flag=0;
for(i=0;i<no-1;i++)
{
*s=recbyte();
ackr();
s++;
}
void main()
{
uchar arg2[7];
uchar i;
led=0;
jk=0;
SCON=0x50;//设置串口方式1
TMOD=0x20;//波特率发生器T1工作模式2
PCON=0x80;//波特率翻倍
TH1=0xfa;//预置初值
TL1=0xfa;
TR1=1;//启动定时器T1
实时时钟rx8025读写程序2012-05-22 22:19
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
#define _Nop() _nop_()
#define uint unsigned int
#define uchar unsigned char
init_8025();
{
if(WrToFRam(0x64,0x00,arg1,7))
led=1;
delay(5000);
led=0;
do{
if(RdFromFRam(0x65,0x04,arg2,7))jk=1;//如果读取8025成功,则让继电器吸合
/************************函数列表**********************/
void delay(unsigned char ms);
void start(void);
void stop(void);
void ackr(void);
void noackr(void);
{
uchar midd;
midd=y&0x0f;
P0=coding[midd];
P2=m;
delay(100);
y=y>>4;
midd=y;
P0=coding[midd];
P2=(m<<1)+1;
delay(40);
}
bit init_8025(void)
{
bit flag=1;
{
sdar=1;
_Nop();
sclr=1;
_Nop();
sclr=0;
_Nop();
}
/***************发送字节数据子程序*****************/
void sendbyte(unsigned char senddata)
sbit sdar= P1^0; /*串行数据*/
sbit sclr= P1^1; /*串行时钟*/
sbit jk=P1^2;
sbit led=P1^3;
bit ACK_flagr;
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
*s=recbyte();
noackr();
stop();
return(flag);
}
// 延时总时间=cnt*16+24us
void delay(uint cnt)
{
for(;cnt>0;cnt--);
}
uchar arg1[7]={0x05,0x59,0x23,0x03,0x24,0x09,0x08};
while(!OK);//等待按键抬起
for(i=0;i<7;i++)//通过串口发送从8025中读取的时间
{
SBUF=arg2[i];
while(TI==0);
TI=0;
}
i=0;
}
}while(1);
void start(void) /*起始条件*/
{
sdar = 1;
_Nop();
sclr = 1;
_Nop();
_Nop();
sdar = 0;
_Nop();
_Nop();
sclr = 0;
_Nop();
{
uchar i;
bit flag=1;
start(); /*发送启动信号*/
sendbyte(slv_addr); /*发送SLA+W*///0x64
if(ACK_flagr==0)
flag=0;
sendbyte(sub_addr); //0x01
if(sdar==1)
{
recdata++;
_Nop();
_Nop();
相关文档
最新文档