实时时钟rx8025读写程序
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规格书(中文)
• 多种检测功能 • 电源电压监控功能 (具有可选择的检测阈值)
• 停止检测功能
• 加电重设检测功能
• 警报器功能和定时器功能
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使用说明概要
条件
接口电压 温度补偿电压 -
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中文资料
----------------------- 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使用说明概要
项目
电源电压 输入电压(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添加实时钟(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读写子程序
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使用说明
时钟计数器(寄存器 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规格书
请不要将产品(以及任何情况下提供任何的技术信息)用于开发或制造大规模杀伤性武器或其他军事用途。还要求,不要将产品提供给任何 将产品用于此类违禁用途的第三方。 ·此类产品是基于在一般电子机械内使用而设计开发的,如将产品应用于需要极高可靠性的特定用途,必须实现得到弊公司的事前许可。若 无许可弊公司将不负任何责任。
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中文资料
11.使用上的注意事项················································································· 30
11.1 处理上的注意事项 ·························································································· 30 11.2 装配上的注意事项 ·························································································· 30
输入输出
本输入与电源电压无关 输入电压最高可达到 5.5V
8025用户手册
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的原理及其应用
!’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
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高精度实时时钟芯片目录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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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();