标题: 为什么单片机中断号改了,仿真结果却不受影响? [打印本页]

作者: 834733157    时间: 2023-11-14 16:21
标题: 为什么单片机中断号改了,仿真结果却不受影响?
请教大家:外部中断0控制第一个灯的亮灭,为什么中断号改成其他的数字,仿真结果依旧正确。

程序.png (140.98 KB, 下载次数: 47)

程序.png

仿真电路.png (38.65 KB, 下载次数: 49)

仿真电路.png

作者: csmyldl    时间: 2023-11-14 19:04
不可能进入中断服务程序,肯定实现不了(我改成4不能进中断)
作者: c0f9a4    时间: 2023-11-14 21:06
加个工作寄存器组
作者: npn    时间: 2023-11-14 22:01
interrupt 4 这是一个串口中断,你没有配置串口寄存器。
作者: 834733157    时间: 2023-11-15 07:40
csmyldl 发表于 2023-11-14 19:04
不可能进入中断服务程序,肯定实现不了(我改成4不能进中断)

我改成0-4都可以我都懵了
作者: 834733157    时间: 2023-11-15 07:40
npn 发表于 2023-11-14 22:01
interrupt 4 这是一个串口中断,你没有配置串口寄存器。

我的意思是我把中断号改了  仿真依然不受影响  不懂为什么
作者: 834733157    时间: 2023-11-15 07:42
c0f9a4 发表于 2023-11-14 21:06
加个工作寄存器组

请问怎么操作  我不会
作者: lkc8210    时间: 2023-11-15 09:44
你的发现是合符单片机运作的
如果有学过汇编就会很好理解

interrupt 0的向量地址是0003H
interrupt 4的向量地址是0023H
你初始化了外中断0
当外中断0引脚收到信号时
CPU会响应中断申请
先保存现在的PC指针值
再把PC指针指向向量地址
由于编程上没有在0003H地址写中断函数
所以PC会一直累加
如果刚好0004H~0022H都没有代码
加到0023H(interrupt 4)
运行完中断函数后就会执行RETI指令
PC就取回中断前的保存值运行下去
但由于IE0没有被硬件清零
所以外中断0只会响应一次





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1