📄 ex3-7.asm
字号:
;--------------程序信息-----------------
;文件名 : ex3-7.asm
;版本 : 1.0
;作者 :
;修改时间 :
;--------------程序说明------------------
;CHAP 3.7 实时时钟实例
;-----------常量和变量声明---------------
;ACC EQU A;
;--------------预定义--------------------
ORG 0000H
LJMP START
;------------中断入口地址分配------------
;ORG 0003H
;LJMP INT0PRG
;ORG 000BH
;LJMP INT1PRG
;ORG 0013H;
;LJMP
;ORG 0030H
START:
LCALL RTCINIT; RTC实时时钟初始化
;--------------初始化子程序--------------
MOV SP,60H;
;--------------主程序--------------------
MAIN: LCALL RTCREAD; RTC实时时钟寄存器读取
LCALL DELAY100MS; 延时间隔100ms
LJMP MAIN
;----------------子程序------------------
;---------------------------------
; DS12887初始化子程序
;---------------------------------
RTCINIT:
MOV DPTR,#800AH; 寄存器A的地址为800AH
MOV A, # 70H; 关闭晶振,并分频器复位
MOVX @DPTR, A; 将累加器A的内容传送给寄存器A
INC DPTR; DPTR为寄存器B的地址
MOV A, #8AH; 停止更新,允许中断,选择BCD码,24小时制
MOVX @DPTR, A;
MOV DPL, # 00H; DPTR中为秒单元地址
CLR A; 累加器清零
MOVX @DPTR, A; 秒单元送00
MOV DPL, # 02H; DPTR中为分单元地址
CLR A
MOVX @DPTR, A; 分单元送00
MOV DPL, # 04H; DPTR中为小时单元地址
MOV A,#00H; 0时
MOVX @DPTR, A; 时单元送00H
MOV DPL, # 07H; 日单元
MOV A,#01H; 1日
MOVX @DPTR, A; 日单元送01
INC DPTR; DPTR中为月单元地址
MOV A, 01H; 1月
MOVX @DPTR , A; 月单元送01
INC DPTR; DPTR中为年单元地址
MOV A ,#06H; 2006年
MOVX @DPTR, A; 年单元送06
INC DPTR; DPTR中的值为800AH,是寄存器A的地址
MOV A, # 26H; DV2一DV0,打开晶振
MOVX @DPTR, A;
INC DPTR; DPTR中为寄存器B的地址
MOV A,#1AH; 更新正常,周期中断禁止,定闹中断禁止,允许更新中断。
MOVX @DPTR, A; 时钟开始运行
RET
;---------------------------------
; DS12887查询法读取时间和日历子程序
;---------------------------------
RTCREAD:
MOV DPTR, # 800AH; 寄存器A的地址送DPTR地址指针寄存器
WAIT: MOVX A, @DPTR; 读寄存器A
JB ACC.7, WAIT; UIP= 1则等待更新完毕
MOV DPL,#00H;
MOV R0,#30H;
MOV R2,#03H;
LOOP1: MOVX A, @DPTR; 读秒,分,时
MOV @R0, A; 秒,分,时,送30H, 31H, 32H
INC DPTR
INC DPTR
INC R0
DJNZ R2,LOOP1;
DEC DPL; DPTR中为星期地址
MOV R2,#04H;
LOOP2: MOVX A, @DPTR; 读星期,日,月,年
MOV @R0,A; 星期,日,月,年送33H, 34H, 35H, 36H
INC DPTR; DPTR中为日地址
INC R0;
DJNZ R2, LOOP2;
RET;
;--------------中断子程序----------------
;---------------延时子程序---------------
DELAY100MS: MOV R5,#04H;
DELAY00: MOV R6,#00F4H;
DELAY01: MOV R7,#0FFH;
DELAY02: DJNZ R7,DELAY02;
DJNZ R6,DELAY01;
DJNZ R5,DELAY00;
RET;
END
;---------------注意事项-----------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -