结构推理 已知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               ;中断返回
【答案解析】