结构推理 已知fosc=6MHz,试编写程序,利用T0方式2,设置TH0≠TL0,从P1.7输出高电平200μs,低电平500μs的连续矩形脉冲。
【正确答案】TL0初值=28-200μs/2μs=256-100=156=9CH
   TH0初值=28-500μs/2μs=256-250=6
   编制程序如下:
        ORG  0000H       ;复位地址
        LJMP STAT        ;转初始化程序
        ORG  000BH       ;T0中断入口地址
        IJMP IT0         ;转T0中断服务程序
        ORC  1000H       ;初始化程序首地址
   STAT:CLR  P1.7        ;输出低电平
        MOV  TMOD,#02H   ;置T0定时器方式2
        MOV  TH0,#06H    ;置TH0初值,定时500μs
        MOV  TL0,#9CH    ;置TL0初值,定时200μs
        SETB PT0         ;置T0为高优先级
        SETB TR0         ;T0启动
        SETB P1.7        ;输出高电平
        MOV  IE,#10000010B ;T0开中
        LJMP MAIN        ;转主程序,并等待中断
        ORG  2000H       ;T0中断服务程序首地址
   IT0: CPL  P1.7        ;输出波形取反
        JB   P1.7,IT01   ;P1.7=1,转置TH0初值500μs
        MOV  TH0,#9CH    ;P1.7=0,置TH0初值200μs
        RETI             ;中断返回
   IT01:MOV  TH0,#06H    ;置TH0初值500μs
        RFTI             ;中断返回
【答案解析】