- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于stc89c52rc万年历程序
TICK_CNT EQU 40H ;T0溢出计数器
SECOND EQU 41H ;存储数据用真值,未用BCD码
MINUTE EQU 42H
HOUR EQU 43H
DAY EQU 44H
MONTH EQU 45H
YEAR EQU 46H
YUSHU EQU 47H ;存放余数
FLASH_FLAG EQU 27H ;时间日期调整标志
;R7: 0-时间;1-日期
;中断向量表
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EX0_INT
ORG 000BH
LJMP T0_INT
ORG 0013H
LJMP EX1_INT
;主程序
ORG 0030H
MAIN: NOP
;初始化堆栈
MOV SP,#60H
;初始化变量
MOV SECOND,#0
MOV MINUTE,#0
MOV HOUR,#0
MOV DAY,#21
MOV MONTH,#1
MOV YEAR,#96
MOV FLASH_FLAG,#00H
MOV R7,#00H
;
MOV TL0,#0B0H ; 定时50ms
MOV TH0,#3CH
MOV TICK_CNT,#20 ;装计数初值(1s计数器)
MOV TMOD,#01H
SETB ET0
SETB EX0
SETB EX1
SETB EA ;开中断
SETB PX0
SETB PX1 ;设置中断优先级
SETB TR0 ; 启动定时器T0
LOPP:LCALL DISPLAY ;调用显示子程序
LJMP LOPP
; -------------------------------------------------
; 定时器0中断
T0_INT: MOV TL0,#0B0H
MOV TH0,#3CH ; 重装载
DJNZ TICK_CNT,NOT_1S ;1秒到?
AJMP IS_1S
NOT_1S: LJMP T0_RET
; 1秒时间到
IS_1S: PUSH ACC
MOV A,SECOND
CJNE A,#59,IN3 ; 59s到?
AJMP IN4
IN3: LJMP SECOND_INC ; 秒加1
IN4: MOV SECOND,#0 ; 秒进位
MOV A,MINUTE
CJNE A,#59,IN5 ; 59分到?
AJMP IN6
IN5: LJMP MINUTE_INC
IN6: MOV MINUTE,#0 ; 分进位
MOV A,HOUR
CJNE A,#23,HOUR_INC ; 23h到?
MOV HOUR,#0 ; 时进位
MOV A,MONTH
CJNE A,#2,NOT_FEB ; 是否二月?
;2月处理
;--------------------------
FEB: NOP
ACALL DIV4
MOV A,YUSHU
CJNE A,#0,NOT_LEAP_Y ;是否闰年?
LEAP_Y: MOV A,DAY ;闰年
CJNE A,#29,DAY_INC
MOV DAY,#1
MOV MONTH,#3
LJMP RESET_CNT
;非闰年
NOT_LEAP_Y: MOV A,DAY
CJNE A,#28,DAY_INC ;
MOV DAY,#1
MOV MONTH,#3
LJMP RESET_CNT
;---------------------------
;非2月处理
;30/31天?
NOT_FEB:NOP
CJNE A,#4,Y01
AJMP MON_30D
Y01: CJNE A,#6,Y02 ;是否小月?
AJMP MON_30D
Y02: CJNE A,#9,Y03
AJMP MON_30D
Y03: CJNE A,#11,T11
AJMP MON_30D
;31天
T11: MOV A,DAY ;大月
CJNE A,#31,DAY_INC
AJMP NEXT_MONTH
;30天
MON_30D:MOV A,DAY ;小月
CJNE A,#30,DAY_INC
;天进位
NEXT_MONTH: MOV DAY,#1
MOV A,MONTH
CJNE A
文档评论(0)