📄 万年历串口程序.txt
字号:
ORG 0000H
RTCSA EQU 60H
RTCSB EQU 61H
RTCMIA EQU 62H
RTCMIB EQU 63H
RTCHA EQU 64H
RTCHB EQU 65H
RTCZ EQU 66H
RTCDA EQU 67H
RTCDB EQU 68H
RTCMA EQU 69H
RTCMB EQU 6AH
RTCYA EQU 6BH
RTCYB EQU 6CH
RTCA EQU 6DH
RTCB EQU 6EH
COUNT EQU 6FH
;*****************************
;18B20预定义区
TEMPHEAD EQU 26H
TEMPDIN BIT P2.7
BITST DATA 2CH
TIME1SOK BIT BITST.1
TEMPONEOK BIT BITST.2
TEMPL DATA 1AH
TEMPH DATA 1BH
TEMPHC DATA 1CH
TEMPLC DATA 1DH
;**************************************
;液晶串口子程序预定义区
DA_IN EQU 40H ;数据或指令
RS_STU BIT P1.0 ;数据指令选择
WR_COUNT1 EQU 41H ;计数器1
WR_COUNT2 EQU 42H ;计数器2
CS EQU P3.0
STD EQU P3.1
SCLK EQU P3.2
PSB EQU P3.3
RST EQU P3.4
;18B20初始化
;********************初始化**********************
MOV SP,#70H
START: MOV R0,#20H
MOV R1,#10H
MOV 20H,#00H
CLSMEM1: MOV @R0,#00H
INC R0
DJNZ R1,CLSMEM1
SJMP INIT
ERROR: NOP
LJMP START
NOP
INIT: NOP
NOP
NOP
NOP
MOV PSW,#00H
CLR TEMPONEOK
;液晶初始化
;******************************************************
CLR PSB
NOP
MOV A,#34H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
MOV A,#30H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
MOV A,#01H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
MOV A,#06H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
MOV A,#0CH
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
;;;;;;;;;;;;;;;;;;;;;;;;;(DS12C887初始化)
LCALL BEGEN0
LCALL BEGEN3
LCALL WRITE
NOP
LCALL BEGEN4
LJMP MAIN
;系统初始化
;***********************************
BEGEN0: MOV DPTR,#0FA0AH
MOV A,#20H
MOVX @DPTR,A
BEGEN1: MOV DPTR,#0FA0BH
MOV A,#02H
MOVX @DPTR,A
MOV DPTR,#0FA0DH
MOVX A,@DPTR
JNB ACC.7,ERROR
RET
BEGEN3: MOV DPTR,#0FA0BH
MOV A,#0A2H
MOVX @DPTR,A
RET
BEGEN4: MOV DPTR,#0FA0CH
MOVX A,@DPTR
BEGEN5: MOV DPTR,#0FA0BH
MOV A,#22H
MOVX @DPTR,A
MOV DPTR,#0FA0AH
MOV A,#20H
MOVX @DPTR,A
RET
;写入时间程序
;**********************************************
WRITE: MOV DPTR,#0FA00H ;DS12C887秒单元
MOV A,#00H
MOVX @DPTR,A ;写入秒
MOV DPTR,#0FA02H ;DS12C887分单元
MOV A,#42H
MOVX @DPTR,A ;写入分
MOV DPTR,#0FA04H ;DS12C887时单元
MOV A,#22H
MOVX @DPTR,A ;写入时
MOV DPTR,#0FA06H ;DS12C887星期单元
MOV A,#06H
MOVX @DPTR,A ;写入周标66H
MOV DPTR,#0FA07H ;DS12C887日单元
MOV A,#24H
MOVX @DPTR,A ;写入月标
MOV DPTR,#0FA08H ;DS12C887月单元;
MOV A,#03H
MOVX @DPTR,A ;写入月计数
MOV DPTR,#0FA09H ;DS12C887年单元;
MOV A,#07H
MOVX @DPTR,A ;写入年时间
MOV DPTR,#0FA0EH
MOV A,#20H
MOVX @DPTR,A
RET
;***********************************************
;主程序区
MAIN: LCALL WENDU
LCALL DEL
LCALL RADE
LCALL TI_ON2
LCALL XIANSHI
SJMP MAIN
;*****************************************************
;(DS12C887读时间子程序)
;**************************************************
;秒信息送入60H,61H
RADE: LCALL CHK
MOV DPTR,#0FA00H
MOVX A,@DPTR
MOV 60H,A
SWAP A
MOV 61H,A
ANL 60H,#0FH
ANL 61H,#0FH
;分信息送62,63H
MOV DPTR,#0FA02H
MOVX A,@DPTR
MOV 62H,A
SWAP A
MOV 63H,A
ANL 62H,#0FH
ANL 63H,#0FH
;时信息送64,65H
MOV DPTR,#0FA04H
MOVX A,@DPTR
MOV 64H,A
SWAP A
MOV 65H,A
ANL 64H,#0FH
ANL 65H,#0FH
;周信息送66H
MOV DPTR,#0FA06H
MOVX A,@DPTR
MOV 66H,A
ANL 66H,#0FH
;月,日期送67,68H
MOV DPTR,#0FA07H
MOVX A,@DPTR
MOV 67H,A
SWAP A
MOV 68H,A
ANL 67H,#0FH
ANL 68H,#0FH
;月计数送69,6AH
MOV DPTR,#0FA08H
MOVX A,@DPTR
MOV 69H,A
SWAP A
MOV 6AH,A
ANL 69H,#0FH
ANL 6AH,#0FH
;年信息送6B,6C时
MOV DPTR,#0FA09H
MOVX A,@DPTR
MOV 6BH,A
SWAP A
MOV 6CH,A
ANL 6BH,#0FH
ANL 6CH,#0FH
;世纪信息送6D,6E
MOV DPTR,#0FA0EH
MOVX A,@DPTR
MOV 6DH,A
SWAP A
MOV 6EH,A
ANL 6DH,#0FH
ANL 6EH,#0FH
RET
;查询标志位
;********************************
CHK: MOV DPTR,#0FA0AH
MOVX A,@DPTR
JB ACC.7,CHK
RET
;液晶屏显示时间(2)
;******************************************
TI_ON2: MOV DPTR,#TAB2
MOV A,#9FH
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCSA
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#9EH
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCSB
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#9CH
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCMIA
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#9BH
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCMIB
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#99H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCHA
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#98H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCHB
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#8DH
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCZ
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#89H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCDA
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#88H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCDB
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#96H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCMA
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#95H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCMB
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#93H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCYA
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#92H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCYB
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#91H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCA
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
MOV A,#90H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
MOV A,RTCB
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
LCALL LGS1
LCALL LGS2
LCALL LGS3
LCALL LGS4
LCALL LGS5
LCALL LGS6
RET
LGS1: MOV DPTR,#TAB01 ;显示汉字和字符
MOV COUNT,#02H
MOV A,#94H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
LGS11: CLR A
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
INC DPTR
DJNZ COUNT,LGS11
RET
LGS2: MOV DPTR,#TAB02 ;显示汉字和字符
MOV COUNT,#02H
MOV A,#97H
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
LGS22: CLR A
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
; LCALL SEND_D
INC DPTR
DJNZ COUNT,LGS22
RET
LGS3: MOV DPTR,#TAB03 ;显示汉字和字符
MOV COUNT,#02H
MOV A,#8AH
MOV DA_IN,A
CLR RS_STU
LCALL SERIAL_WR
; LCALL SEND_I
LGS33: CLR A
MOVC A,@A+DPTR
MOV DA_IN,A
SETB RS_STU
LCALL SERIAL_WR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -