rCALL WDS
ld r17,x ;写秒 分 时 日 月 星期 年(R19中的数据)
rCALL WDS
cbi portd,7
cbi portd,6
sbi portd,7
ldi r17,0x8e ;
控制寄存器un_en_WRITE
rCALL WDS
ldi r17,0x80 ;写操作前WP=1
rCALL WDS
cbi po
rtd,7
RET
同样,下面给出了一个完整的读取分的程序
ldi r18,0x83 ;读分 命令
ldi r27,0x00 ;x H
ldi r26,19 ;x L 将取到的数据存储到R19中。
READ_DS1302:
cbi portd,7
cbi portd,6
sbi portd,7
mov r17,r18 ;写秒 分 时 日 月 星期 年 地址
rCALL WDS
rCALL RDS
st x,r17 ; 保存数据到R19
cbi portd,7
RET
整合写和读分的程序,改变R18的内容就可以实现“秒、分、时、日、月、星期、年”的读写,写操作时只需改变R19的内容就可以将新的数据写入,读操作时直接读取R19的内容即可。也可以通过此程序直接来对31个RAM进行数据读取。
DS1302的充电功能
DS1302的涓流充电功能也是非常方便的,同时又是其非常重要的一个功能,所以简单介绍一下其使用。其原理框图如图3。
DS1302有一个单独的寄存器控制涓流充电。BIT7:BIT4是涓流充电功能的选择器,只有当它们被设置成1010才能够将其使能。使用DS(BIT3和BIT2)可以在一个和两个二极管之间选择;使用RS(BIT1和BIT0)可以选择两个电源(Vcc1和Vcc2)之间的电阻,这两个选择器共同使用来帮助您得到所需要的电流。
结语
通过这一实践,表明应用DS1302在测控系统中的数据记录,其软硬件设计简单,时间记录准确。同时由于ATMEGA48的高速度,大数据吞吐,给实际应用带来了很大方便。由于笔者水平有限,仅将应用笔记供大家参考。
参考文献:
1. 8-bit AVR Microcontroller with 4K Bytes In-System Programmable Flash (data sheet)
2. DS1302 - Trickle Charge Timekeeping Chip (data sheet)