在晶振主频为12MHz时,定时最长时间是多少 若要求定时1分钟,最简洁的方法是什么 试画出硬件连线图并编程.

来源:百度知道 编辑:UC知道 时间:2024/05/13 02:56:30

ORG 0000H
AJMP MAIN
ORG 000BH ;T0中断入口
AJMP T0SRV
ORG 001BH ;T1中断入口
AJMP T1SRV

ORG 0200H
MAIN: MOV TMOD, #51H ;T0方式1定时,T1方式1计数
MOV TH0, #15H ;T0定时60ms,装入初值
MOV TL0, #0A0H
MOV TH1, #0FCH ;T1计数1000次,装入初值
MOV TL1, #18

SETB ET0 ;T0中断允许
SETB ET1 ;T1中断允许
SETB EA ;CPU中断允许
SETB TR0 ;启动T0
SETB TR1 ;启动T1

LOOP: NOP
MOV C, F0 ;读取标志位
JNC LOOP ;没有响应定时中断,则返回

SET P1.7 ;响应定时中断后,置P1.7
NOP
CLR P1.7 ;在P1.7产生下降沿
CLR F0 ;清标志位
SJMP LOOP ;返回循环判断

ORG 1000H ;T0中断服务程序
T0SRV: MOV TH0, #15H ;重装T0初值
MOV TL0, #0A0H
SETB F0 ;标志位置位(PSW.5)

RETI ;T0中断返回

ORG 1100H ;T1中断服务程序
T1SRV: MOV TH1, #0FCH ;重装T1初值
MOV TL1, #18

RETI ;T1中断返回
;程序为模拟1分钟定时
;实际系统可以在T1中断中