- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
t2自装载时钟
;本程序AHSHMJ编写,完全是自己的思路,除按键部分外,其余都与众不同,语句简洁,计时精确。2009年02月10日写到89S52运行正常
;本程序AHSHMJ编写,2009年02月10日写到89S52运行正常
$NOMOD51
#include reg52.inc
ORG 0000H
JMP MAIN
ORG 000BH
JMP T0Z
ORG 002BH
JMP AD ;定时/计数器T2中断服务程序入口地址
ORG 0030H
;-----主程序开始-----
MAIN:
MOV SP, #0DFH ;将0E0H-0FFH,共计32字节作为堆栈区
;---复位后,08H-0FF内部RAM单元清0。因如果非上电复位,RAM不一定清0
MOV R0, #08H
LOOP1:
MOV @R0, #0
INC R0
CJNE R0, #0, LOOP1
;----初始化定时器T1
MOV TMOD,#01H ;初始化定时器
MOV TH0,#(65536-2000) / 256;装入初值,2000uM
MOV TL0,#(65536-2000) MOD 256
;----初始化定时器T2
MOV TH2, #(65536-50000)/256
MOV TL2, #(65536-50000) mod 256 ;初值0DC00H送定时器T2
MOV RCAP2H, #(65536-50000)/256
MOV RCAP2L, #(65536-50000) mod 256 ;初始化重装初值
MOV T2CON, #04H ;初始化T2工作方式(自动重装初值、定时) 并启动T2
;-----初始化中断控制器
SETB ET2 ;允许定时器T2中断
SETB PT2 ;设置T2高优先级
CLR PT0 ;T0强制设低优先
SETB TR0 ;T0启动
SETB ET0 ;开T0中断
SETB EA ;开总中断
MOV R0, #20
MOV R1, #60 ;秒数
MOV R2, #60 ;分数
MOV R3, #17 ;开机时显示7:00:00
SJMP WT
;-----定时/计数器T2中断服务程序
T0Z:
MOV TH0,#(65536-2000) / 256;重装初值,2000uM
MOV TL0,#(65536-2000) MOD 256
PUSH PSW
PUSH ACC
MOV R4, #8 ;显示8位数,从小时数开始到秒个位
MOV A, #24 ;小时数送A(显示扫描从小时往秒方向)
SUBB A, R3 ;显示小时。下面的程序R3 是减,所以这里倒
;换一下,以便显示。
CALL DISP ;调显示子程序
MOV A, #60 ;显示分
SUBB A, R2
CALL DISP
MOV A, #60 ;显示秒
SUBB A, R1
CALL DISP
MOV P1,#0A0H ;关闭秒个位显示,否则下次中断前
文档评论(0)