主程序为流水灯程序,编写中断程序,使得发生外部中断0,且为边沿触发时,蜂鸣器发音,LED灯全灭。中断结束LED继续接上次状态进行流水灯循坏。汇编语言
时间: 2024-03-10 08:51:11 浏览: 33
好的,以下是汇编代码实现:
```
ORG 0x0000 ; 程序入口地址
MOV P1, #0xFF ; 初始化 P1 端口为输出状态,全部灯灭
MOV TMOD, #0x01 ; 定时器 0 工作在模式 1 下
MOV TH0, #0xE8 ; 定时器初值为 0xE800,即 1ms
MOV TL0, #0x00
SETB TR0 ; 启动定时器 0
MAIN:
JNB TF0, $ ; 判断定时器 0 是否溢出
CLR TF0 ; 清除定时器 0 溢出标志
MOV A, P1 ; 将 P1 端口的值取出
CPL A ; 取反 A 寄存器
MOV P1, A ; 将 P1 端口设置为 A 寄存器的值
SJMP MAIN ; 跳转到 MAIN 标签,不断循环流水灯
ORG 0x0023 ; 外部中断 0 的中断向量地址
INT0_ISR:
MOV P1, #0xFF ; 将 P1 端口全部灭掉
SETB P3.5 ; 使蜂鸣器发出声音
RETI ; 中断结束,返回主程序
END ; 程序结束
```
在这个程序中,我们使用了定时器 0 来控制流水灯的循环。当定时器 0 溢出时,LED 灯的状态会翻转一次,从而实现流水灯的效果。同时,我们也设置了外部中断 0,当发生边沿触发时,程序会跳转到 INT0_ISR 标签处,让蜂鸣器发出声音,并将 LED 灯全部熄灭。中断结束后,程序会返回到 MAIN 标签处,继续循环流水灯。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)