8051在响应中断后,CPU能自动撤除中断请求的中断源有
时间: 2023-10-04 20:11:33 浏览: 194
8051在响应中断后,CPU能自动撤除中断请求的中断源有两个,分别是外部中断(INT0、INT1)和定时器中断(T0、T1)。
当8051响应外部中断后,CPU会自动撤除中断请求。同时,当8051响应定时器中断时,CPU也会自动撤除中断请求。这是因为在8051中,外部中断和定时器中断都是边沿触发中断,即只在引脚电平发生变化或定时器计数器溢出时触发中断,中断请求只有在触发中断的瞬间才会发出,因此CPU在响应中断后会自动撤除中断请求。
需要注意的是,在使用8051时,为了保证程序的正确性和可靠性,应该在中断服务程序中尽快地处理完中断请求,并在最后使用RET指令返回到主程序中。这样可以保证中断服务程序的执行时间尽可能短,不会影响主程序的正常运行。
相关问题
如下图所示,外部数据经P1口输入单元,每准备好一个数据。便发出连通信号,使触发器输出“1”,再经非门得“0”,输入至INT0,向CPU发出中断请求,CPU响应中断请求后,在中断处理程序中先撤除中断请求信号(通过P3.0=0,使INT0=1),再由P1口输入数据到单片机内部。请写出初始化程序和中断服务程序。
好的,以下是示例代码:
初始化程序:
```c
void init()
{
EA = 1; // 开启总中断
EX0 = 1; // 开启INT0中断
IT0 = 1; // 设置INT0为下降沿触发
}
```
中断服务程序:
```c
void int0_isr() interrupt 0
{
INT0 = 0; // 撤除中断请求信号
uint8_t data = P1; // 从P1口读取数据
// 进行数据处理
}
```
在初始化程序中,我们开启了总中断并开启了INT0中断,并将INT0设置为下降沿触发。在中断服务程序中,我们先撤除了中断请求信号,然后从P1口读取数据并进行相应的处理。
阅读全文