A-A+
已知fosc=12MHz 试编写程序 利用T1方式2 设置TH1≠TL1 从P1.7输出高电
问题详情
已知fosc=12MHz,试编写程序,利用T1方式2,设置TH1≠TL1,从P1.7输出高电平脉宽120μs,低电平脉宽240μs的连续矩形脉冲。
参考答案
TL1初值=28-120μs/1μs=256-120=136=88H
TH1初值=28-240μs/1μs=256-240=16=10H
编制程序如下:
ORG 0000H ;复位地址
LJMP STAT ;转初始化程序
ORG 001BH ;T1中断入口地址
LJMP IT1 ;转T1中断服务程序
ORG 1000H ;初始化程序首地址
STAT:CLR P1.7 ;输出低电平
MOV TMOD,#20H ;置T1定时器方式2
MOV TH1,#10H ;置TH1初值,定时240μs
MOV TL1,#88H ;置TL1初值,定时120μs
SETB PT1 ;置T1为高优先级
SETB TR1 ;T1启动
SETB P1.7 ;输出高电平
MOV IE,#10001000B;T1开中
LJMP MAIN ;转主程序,并等待中断
ORG 2000H ;T1中断服务程序首地址
IT1:CPL P1.7 ;输出波形取反
JB P1.7,IT11 ;P1.7=1,转置TH1初值240μs
MOV TH1,#88H ;P1.7=0,置TH1初值120μs
RETI ;中断返回
IT11:MOV TH1,#10H ;置TH1初值240μs
RETI ;中断返回