没有合适的资源?快使用搜索试试~ 我知道了~
万年历程序(汇编语言),功能:能显示阳历年、月、日、星期、时、分、秒和阴历月、日,并能标明是否是闰年的电子万年历。
资源推荐
资源详情
资源评论
;*****************************
;* 万年历程序 *
;*****************************
;从 1302 中读出的数据放在 67H(高两位年)66H(低两位年)65H(月)64H(星期)
;63H(日)62H(小时)61H(分)60H(秒)57H(农历月)56H(农历日)
;显示缓冲单元 7CH~7BH(4CH~4BH)年低位,7AH~79H(4AH~49H)月,78H(48H)
星期,
;77H~76H(47H~46H)日,75H~74H(45H~44H)时,73H72H(43H~42H)分,
; 71H~70H(41H~40H)秒,5EH~5DH(55H~54H)农历年
;5CH~5BH(53H~52H)农历月,5AH~59H(51H~50H)农历日
;闰年标志为 F0,定时器 T1 为调整时候闪烁用
;
;
SCLK EQU P3.2
IO EQU P3.3
RST EQU P3.4
YEAR DATA 66H
MONTH DATA 65H
WEEK DATA 64H
DAY DATA 63H
HOUR DATA 62H
MINTUE DATA 61H
SECOND DATA 60H
DS1302_ADDR DATA 32H
DS1302_DATA DATA 31H
ORG 0000H
AJMP START
ORG 0003H
RETI
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
;************************************
;* 主程序 *
;************************************
START: SETB EA
1
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
MAIN1: MOV DS1302_ADDR,#8DH ;读出年
LCALL READ
MOV YEAR,DS1302_DATA
MOV DS1302_ADDR,#8BH ;读出星期
LCALL READ
MOV WEEK,DS1302_DATA
MOV DS1302_ADDR,#89H ;读出月
LCALL READ
MOV MONTH,DS1302_DATA
MOV DS1302_ADDR,#87H ;读出日
LCALL READ
MOV DAY,DS1302_DATA
MOV DS1302_ADDR,#85H ;读出小时
LCALL READ
MOV HOUR,DS1302_DATA
MOV DS1302_ADDR,#83H ;读出分
LCALL READ
MOV MINTUE,DS1302_DATA
MOV DS1302_ADDR,#81H ;读出秒
LCALL READ
MOV SECOND,DS1302_DATA
MOV R0,YEAR ;年分离,送显示缓存
LCALL DIVIDE
MOV 7BH,R1
MOV 4BH,R1
MOV 7CH,R2
MOV 4CH,R2
MOV 78H,WEEK
MOV 48H,WEEK
MOV R0,MONTH ;月分离,送显示缓存
LCALL DIVIDE
MOV 79H,R1
MOV 49H,R1
MOV 7AH,R2
2
MOV 4AH,R2
MOV R0,DAY ;日分离,送显示缓存
LCALL DIVIDE
MOV 76H,R1
MOV 46H,R1
MOV 77H,R2
MOV 47H,R2
MOV R0,HOUR ;小时分离,送显示缓存
LCALL DIVIDE
MOV 74H,R1
MOV 44H,R1
MOV 75H,R2
MOV 45H,R2
MOV R0,MINTUE ;分分离,送显示缓存
LCALL DIVIDE
MOV 72H,R1
MOV 42H,R1
MOV 73H,R2
MOV 43H,R2
MOV R0,SECOND ;秒分离,送显示缓存
LCALL DIVIDE
MOV 70H,R1
MOV 40H,R1
MOV 71H,R2
MOV 41H,R2
LCALL DISPLAY
LCALL GENGXIN ;更新农历程序
JNB P1.1,SETG
JNB F0,SSS
CLR P1.0 ;闰月,则 p1.0 清 0,指示灯亮
LJMP MAIN1
SSS: SETB P1.0 ;非闰月,则 p1.0 置位,指示灯灭
LJMP MAIN1
;*******************************
;* 公历设置程序 *
;*******************************
SETG: SETB TR1
SETB ET1
CLR 08H
CLR 09H
CLR 0AH
CLR 0BH
CLR 0CH
CLR 0DH
3
CLR 0EH
CLR 0FH
MOV DS1302_ADDR,#8EH
MOV DS1302_DATA,#00H ;允许写 1302
LCALL WRITE
MOV DS1302_ADDR,#80H
MOV DS1302_DATA,#80H ;1302 停止振荡
LCALL WRITE
GWAIT: LCALL DISPLAY
JNB P1.1,GWAIT
SETG1: LCALL DISPLAY
JNB P1.1,SETG2
JNB P1.2,GADDYEAR
AJMP SETG1
GADDYEAR: MOV R7,66H ;年加 1
LCALL ADD1
MOV 66H,A
CJNE A,#51H,GADDYEAR1
MOV 66H,#01H
GADDYEAR1: MOV DS1302_ADDR,#8CH ;年值送 1302
MOV DS1302_DATA,66H
LCALL WRITE
MOV R0,66H
LCALL DIVIDE ;年分离送显示缓冲
MOV 4BH,R1
MOV 7BH,R1
MOV 4CH,R2
MOV 7CH,R2
WAITT1: LCALL DISPLAY
JNB P1.2,WAITT1
AJMP SETG1
SETG2: SETB 0AH ;调月时闪标志
GWAIT2: LCALL DISPLAY
JNB P1.1,GWAIT2
SETG3: LCALL DISPLAY
JNB P1.1,SETG4
JNB P1.2,GADDMONTH
AJMP SETG3
GADDMONTH: MOV R7,65H ;月加 1
LCALL ADD1
MOV 65H,A
CJNE A,#13H,GADDMONTH1
MOV 65H,#01H
GADDMONTH1: MOV DS1302_ADDR,#88H ;月值送入 1302
4
MOV DS1302_DATA,65H
LCALL WRITE
MOV R0,65H
LCALL DIVIDE ;月分离,送显示缓冲
MOV 79H,R1
MOV 49H,R1
MOV 7AH,R2
MOV 4AH,R2
WAITT2: LCALL DISPLAY
JNB P1.2,WAITT2
AJMP SETG3
SETG4: SETB 0BH ;调日时闪标志
GWAIT4: LCALL DISPLAY
JNB P1.1,GWAIT4
SETG5: LCALL DISPLAY
JNB P1.1,SETG6
JNB P1.2,GADDDAY
AJMP SETG5
GADDDAY: MOV R7,63H ;日加 1
LCALL ADD1
MOV 63H,A
CJNE A,#32H,GADDDAY1
MOV 63H,#01H
GADDDAY1: MOV DS1302_ADDR,#86H ;日值送 1302
MOV DS1302_DATA,63H
LCALL WRITE
MOV R0,63H
LCALL DIVIDE ;日分离送显示缓冲
MOV 76H,R1
MOV 46H,R1
MOV 77H,R2
MOV 47H,R2
WAITT3: LCALL DISPLAY
JNB P1.2,WAITT3
AJMP SETG5
SETG6: SETB 0CH ;调星期时闪标志
GWAIT6: LCALL DISPLAY
JNB P1.1,GWAIT6
SETG7: LCALL DISPLAY
JNB P1.1,SETG8
JNB P1.2,GADDWEEK
AJMP SETG7
GADDWEEK: MOV R7,64H ;星期加 1
LCALL ADD1
5
剩余36页未读,继续阅读
资源评论
qiuhuicheng
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功