⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1302.asm

📁 DS1302汇编51单片机程序代码(含程序说明)
💻 ASM
字号:

SDK_1302        equ     P2.5	;DS1302的I/O接P2.5
SCK_1302        equ     P2.6    ;DS1302的CLK接P2.4
RST_1302        equ     P2.4    ;DS1302的RST接P2.3


buf_second      equ     60H	;秒的缓冲区
buf_minute      equ     61H	;分的缓冲区
buf_hour        equ     62H	;小时的缓冲区
buf_date        equ     63H	;日期的缓冲区
buf_month       equ     64H	;月的缓冲区
buf_day         equ     65H     ;星期
buf_year        equ     66H     ;年
buf_ringhour    EQU     6AH     ;闹分  from 00(1302)
buf_ringminute  EQU     6BH     ;闹时  from 01(1302)
Addr_1302       equ     6CH     ;存放DS1302的地址
Data_1302       equ     6DH	;存放DS1302的数据

       ORG    0000H
       MOV    60H,#50H  ;05年8月4日12:00:00
       MOV    61H,#59H
       MOV    62H,#23H
       MOV    63H,#31H
       MOV    64H,#12H
       MOV    65H,#07H
       MOV    66H,#99H
       LCALL  SETDT
WWW:   LCALL  ReadDT
       ljmp  www
       SJMP  $
;初始化日期时间
SetDT:          mov     Addr_1302,#10001110B    ;最高位为0,允许对ds1302操作
                mov     Data_1302,#00000000B
		lcall   WDS1302
                mov     Addr_1302,#10000000B    ;DS1302晶振停振
                mov     Data_1302,#10000000B
		lcall   WDS1302
                mov     Addr_1302,#10001100B    ;写入年
                mov     Data_1302,buf_year
		lcall   WDS1302
                mov     Addr_1302,#10001000B    ;写入月
                mov     Data_1302,buf_month
		lcall   WDS1302
                mov     Addr_1302,#10000110B    ;写入日期
                mov     Data_1302,buf_date
		lcall   WDS1302
                mov     Addr_1302,#10001010B    ;写入星期
                mov     Data_1302,buf_day
		lcall   WDS1302
                mov     Addr_1302,#10000100B    ;写入小时
                mov     a,buf_hour
                clr     acc.7                   ;设置为24小时制
                mov     Data_1302,a
		lcall   WDS1302
                mov     Addr_1302,#10000010B    ;写入分
                mov     Data_1302,buf_minute
		lcall   WDS1302
                mov     Addr_1302,#10000000B    ;写入秒
                mov     a,buf_second
                clr     acc.7                   ;DS1302晶振起振
                mov     Data_1302,a
		lcall   WDS1302
                mov     Addr_1302,#10001110B    ;最高位为1,禁止对ds1302操作
                mov     Data_1302,#10000000B
	        lcall   WDS1302
		RET

;将日期时间读入缓冲区
ReadDT:         mov     Addr_1302,#10001101b     ;读入年
		lcall   rds1302
		mov     buf_year,Data_1302
                mov     Addr_1302,#10001001b     ;读入月
		lcall   rds1302
                mov     buf_month,Data_1302
                mov     Addr_1302,#10000111b     ;读入日期
		lcall   rds1302
                mov     buf_date,Data_1302
                mov     Addr_1302,#10001011b     ;读入星期
		lcall   rds1302
                mov     buf_day,Data_1302
                mov     Addr_1302,#10000101b     ;读入小时
		lcall   rds1302
                mov     buf_hour,Data_1302
                mov     Addr_1302,#10000011b     ;读入分钟
		lcall   rds1302
                mov     buf_minute,Data_1302
                mov     Addr_1302,#10000001b     ;读入小时
		lcall   rds1302
                mov     buf_second,Data_1302
		ret

;向DS1302写入一个字节
WDS1302:        push    acc
		clr     SCK_1302
                setb    RST_1302
                mov     a,Addr_1302
		setb    acc.7
		clr     acc.0
		mov     R7,#8
wds13021:       clr     sck_1302
		rrc     a
		mov     sdk_1302,c
                setb    sck_1302
		djnz    R7,wds13021
                mov     a,Data_1302
		mov     R7,#8
wds13022:       clr     sck_1302
		rrc     a
		mov     sdk_1302,c
                setb    sck_1302
		djnz    R7,wds13022
		CLR     RST_1302
		clr     sck_1302
		pop     acc
		RET

;从DS1302读取一个字节
RDS1302:        push    acc
		clr     sck_1302
		setb    RST_1302
                mov     a,Addr_1302
		setb    acc.7
		setb    acc.0
		mov     R7,#8
rds13021:       clr     sck_1302
		rrc     a
		mov     sdk_1302,c
		setb    sck_1302
		djnz    R7,rds13021
		mov     R7,#8
rds13022:       setb    sck_1302
		clr     sck_1302
		mov     c,sdk_1302
		rrc     a
		djnz    R7,rds13022
                mov     Data_1302,a
		clr     RST_1302
		clr     SCK_1302
		pop     acc
		RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -