- 打卡等级:初来乍到
- 打卡总天数:3
- 最近打卡:2025-05-23 09:43:31
中级会员
- 积分
- 335
|
io中断的标志位寄存器不能位读写,只能字节读写。
假如现在P10, P11都使用了IO中断,作了以下处理
if (P1INTF & 0x01) //p10
{
P1INTF &= ~0x01;
//
}
if (P1INTF & 0x02) //p11
{
P1INTF &= ~0x02;
//
}
有如下汇编代码。
79: if (P1INTF & 0x01) //p10
C:0x0034 90FD11 MOV DPTR,#0xFD11
C:0x0037 E0 MOVX A,@DPTR
C:0x0038 30E004 JNB 0xE0.0,C:003F
80: {
81: P1INTF &= ~0x01;
82: //
C:0x003B E0 MOVX A,@DPTR
C:0x003C 54FE ANL A,#0xFE
C:0x003E F0 MOVX @DPTR,A
83: }
如果运行到 C:0x003C 54FE ANL A,#0xFE 时P11的中断标志位刚好更新到 P1INTF, 运行完 C:0x003E F0 MOVX @DPTR,A P11的中断标记位会被清除掉。
上面的情况会不会发生。 |
|