4. 用汇编语言编写一段程序,设单片机89S51的时钟频率为6MHz,使用定时器T0工作在方式2,在P1.4输出占空比为2:1的矩形脉冲。
时间: 2023-11-22 07:51:59 浏览: 169
完整word版-用51单片机汇编语言编写八位抢答器程序-推荐文档.doc
以下是汇编语言程序:
```
ORG 0H ;程序从地址0开始存储
MOV TMOD, #00000010 ;设置T0为方式2
MOV TH0, #0 ;计数初值为0
MOV TL0, #0 ;计数初值为0
SETB TR0 ;启动T0定时器
MAIN:
JB TF0, $ ;等待T0计时结束
CLR TF0 ;清除T0计时标志
MOV P1.4, #1 ;P1.4输出高电平
MOV TH0, #0 ;重新设置计数初值为0
MOV TL0, #100 ;设置T0计时100个机器周期
SETB TR0 ;启动T0定时器
JB TF0, $ ;等待T0计时结束
CLR TF0 ;清除T0计时标志
MOV P1.4, #0 ;P1.4输出低电平
MOV TH0, #0 ;重新设置计数初值为0
MOV TL0, #200 ;设置T0计时200个机器周期
SETB TR0 ;启动T0定时器
SJMP MAIN ;跳转到MAIN处,循环执行
END ;程序结束
```
解释:
1. `ORG 0H`:程序从地址0开始存储。
2. `MOV TMOD, #00000010`:设置T0为方式2。
3. `MOV TH0, #0` 和 `MOV TL0, #0`:将T0计数初值设置为0。
4. `SETB TR0`:启动T0定时器。
5. `MAIN:`:程序的主循环。
6. `JB TF0, $`:等待T0计时结束。TF0是T0计时标志,当T0计时结束时会置位。
7. `CLR TF0`:清除T0计时标志。
8. `MOV P1.4, #1`:将P1.4设置为高电平,输出占空比为2:1的矩形脉冲。
9. `MOV TH0, #0` 和 `MOV TL0, #100`:重新设置T0计数初值为0和T0计时100个机器周期,实现50%的占空比。
10. `SETB TR0`:启动T0定时器。
11. `JB TF0, $`:等待T0计时结束。
12. `CLR TF0`:清除T0计时标志。
13. `MOV P1.4, #0`:将P1.4设置为低电平。
14. `MOV TH0, #0` 和 `MOV TL0, #200`:重新设置T0计数初值为0和T0计时200个机器周期,实现50%的占空比。
15. `SETB TR0`:启动T0定时器。
16. `SJMP MAIN`:跳转到MAIN处,循环执行程序。
17. `END`:程序结束。
阅读全文