📄 温度万年历_2.asm
字号:
;*****************************
;* 温度万年历程序 *
;*****************************
;2DH(高两位年)2CH(低两位年)
;7DH~7AH(71H~70H)年位
;2BH(月)
;79H~78H(61H~60H)月
;2AH(日)
;77H~76H(51H~50H)日
;29H(星期)
;6DH(5DH)星期
;28H(小时)
;6BH~6AH(5BH~5AH)时
;27H(分)
;69H~68H(59H~58H)分
;26H(秒)
;67H~66H(57H~56H)秒
;25H~24H(温度)
;4DH~4AH(3DH~3AH)温度
;23H(农历月)
;49H~48H(39H~38H)(农历月)
;22H(农历日)
;47HH~46H(37H~36H)农历日
;显示缓冲单元,,
;闰年标志为F0,定时器T1为调整时候闪烁用
SCLK EQU P3.2
IO EQU P3.3
RST EQU P3.4
DS1302_ADDR DATA 32H
DS1302_DATA DATA 31H
YEARH DATA 2DH
YEARL DATA 2CH
MONTH DATA 2BH
DAY DATA 2AH
WEEK DATA 29H
HOUR DATA 28H
MINUTE DATA 27H
SECOND DATA 26H
TEMPH DATA 25H
TEMPL DATA 24H
NMONTH DATA 23H
NDAY DATA 22H
SET_TIME BIT P1.0 ;时间设置
SET_RING BIT P1.1 ;闹钟设置
SET_ADD BIT P1.2 ;加键设置
;************************************
;* 中断入口 *
;************************************
ORG 0000H
AJMP START
ORG 0003H
RETI
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
;************************************
;* 初始化 *
;************************************
ORG 100H
START: MOV SP,#60H
CLEAR: MOV R0,#00H
MOV R1,#99H
CLEAR1: MOV @R0,#00H
INC R0
DJNZ R1,CLEAR1
SETB EA
MOV SCON,#00H ;串行输出,方式0
MOV TMOD,#10H ;计数器1,方式1
MOV TL1,#00H
MOV TH1,#00H
MOV DS1302_ADDR,#8EH
MOV DS1302_DATA,#00H ;允许写1302
LCALL WRITE
MOV DS1302_ADDR,#90H
MOV DS1302_DATA,#0A6H ;1302充电,充电电流1.1mA
LCALL WRITE
;************************************
;* 主程序 *
;************************************
;************************************
;* 1302主程序 *
;************************************
MAIN1: MOV DS1302_ADDR,#8DH ;READ OUT YEAR
LCALL READ
MOV YEARL,DS1302_DATA
MOV DS1302_ADDR,#8BH ;READ OUT WEEK
LCALL READ
MOV WEEK,DS1302_DATA
MOV DS1302_ADDR,#89H ;READ OUT MONTH
LCALL READ
MOV MONTH,DS1302_DATA
MOV DS1302_ADDR,#87H ;READ OUT DAY
LCALL READ
MOV DAY,DS1302_DATA
MOV DS1302_ADDR,#85H ;READ OUT HOUR
LCALL READ
MOV HOUR,DS1302_DATA
MOV DS1302_ADDR,#83H ;READ OUT MINTUE
LCALL READ
MOV MINUTE,DS1302_DATA
MOV DS1302_ADDR,#81H ;READ OUT SECOND
LCALL READ
MOV SECOND,DS1302_DATA
;************************************
;* 分离程序 *
;************************************
MOV R0,YEARL
LCALL DIVIDE
MOV 7AH,R1
MOV 70H,R1
MOV 7BH,R2
MOV 71H,R2
MOV R0,MONTH
LCALL DIVIDE
MOV 78H,R1
MOV 60H,R1
MOV 79H,R2
MOV 61H,R2
MOV R0,DAY
LCALL DIVIDE
MOV 76H,R1
MOV 50H,R1
MOV 87H,R2
MOV 51H,R2
MOV 6DH,WEEK
MOV 5DH,WEEK
MOV R0,HOUR
LCALL DIVIDE
MOV 6AH,R1
MOV 5AH,R1
MOV 6BH,R2
MOV 5BH,R2
MOV R0,MINUTE
LCALL DIVIDE
MOV 68H,R1
MOV 58H,R1
MOV 69H,R2
MOV 59H,R2
MOV R0,SECOND
LCALL DIVIDE
MOV 66H,R1
MOV 56H,R1
MOV 67H,R2
MOV 57H,R2
MOV R0,TEMPH
LCALL DIVIDE
MOV 4CH,R1
MOV 3CH,R1
MOV 4DH,R2
MOV 3DH,R2
MOV R0,TEMPL
LCALL DIVIDE
MOV 4AH,R1
MOV 3AH,R1
MOV 4BH,R2
MOV 3BH,R2
MOV R0,NMONTH
LCALL DIVIDE
MOV 48H,R1
MOV 38H,R1
MOV 49H,R2
MOV 39H,R2
MOV R0,NDAY
LCALL DIVIDE
MOV 46H,R1
MOV 36H,R1
MOV 47H,R2
MOV 37H,R2
LCALL DISPLAY
JNB SET_TIME,SETG
LJMP MAIN1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -