已知fosc=6MHz 试编写程序 利用T0工作在方式3 使P1.0和P1.1分别输出400μs和1ms方波。

大学 方式,程序,工作 已帮助 人

已知fosc=6MHz,试编写程序,利用T0工作在方式3,使P1.0和P1.1分别输出400μs和1ms方波。

热搜:汇编程序是指由汇编语言编写的程序

答案解析

难度★★☆ 搜索
  • ①T0定时器方式3时,被拆成二个独立的8位计数器TH0、TL0,定时初值应分别计算,其中定时1ms将超出8位计数器最大计数值,可按0.5ms×2编程。
       TL0初值=28-400μs/2μs=256-200=56=38H
       TH0初值=28-500μs/2μs=256-250=6
       ②TMOD=00000011B
       ③编制程序如下:
           ORG   0000H          ;复位地址
           UMP   STAT           ;转初始化程序
           ORG   000BH          ;T0中断入口地址
           LJMP  IT0            ;转T0中断服务程序
           ORG   001BH          ;T1中断入口地址(被TH0借用)
           LJMP  IT1            ;转T1中断服务程序
           ORG   1000H          ;初始化程序首地址
       STAT:CLR  P1.0           ;P1.0输出低电平
           CLR   P1.1           ;P1.1输出低电平
           MOV   TMOD,#03H      ;置T0定时器方式3
           MOV   TL0,#38H       ;置TL0初值,定时400μs
           MOV   TH0,#06H       ;置TH0初值,定时500μs
           MOV   IP,#00001010B  ;置T0、T1为高优先级
           SETB  TR0            ;T0启动
           SETB  P1.0           ;输出高电平
           SETB  TR1            ;T1启动(被TH0借用)
           SETB  P1.1           ;输出高电平
           SETB  F0             ;置1ms标志        MOV   IE,#10001010B  ;T0、T1开中
           LJMP  MAIN           ;转主程序,并等待中断
           ORG   2000H          ;T0中断服务子程序首地址
       IT0:MOV   TL0,#38H       ;重置TL0初值400μs
           CPL   P1.0           ;输出波形取反
           RET1                 ;中断返回
           ORG   2100H          ;T1中断服务子程序首地址
       IT1:MOV   TH0,#06H       ;重置TH0初值500μs
           CPL   F0             ;1ms标志取反
           JNB   F0,IT01        ;无1ms标志,转返回
           CPL   P1.1           ;有1ms标志,输出波形取反
       IT01:RETI                ;中断返回