找回密码
 立即注册
查看: 357|回复: 4

IO中断标志位会不会被错误清除掉

[复制链接]
  • TA的每日心情
    开心
    2024-1-9 10:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    0

    回帖

    49

    积分

    新手上路

    积分
    49
    发表于 2023-10-6 18:03:54 | 显示全部楼层 |阅读模式
    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的中断标记位会被清除掉。
    上面的情况会不会发生。
    回复 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9550

    回帖

    1万

    积分

    管理员

    积分
    14011
    发表于 2023-10-6 18:44:08 | 显示全部楼层
    截图202310061844045173.jpg
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9550

    回帖

    1万

    积分

    管理员

    积分
    14011
    发表于 2023-10-6 18:49:24 | 显示全部楼层
    STC8H 的【普通I/O都支持的外部中断】参考程序
    不是传统的 INT0/INT1/INT2/INT3/INT4
    截图202310061848011551.jpg
    https://www.stcaimcu.com/forum.p ... id=304&pid=1273



    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3053

    回帖

    6883

    积分

    超级版主

    积分
    6883
    发表于 2023-10-23 15:50:23 | 显示全部楼层
    先判断为1再清除的方法是不会误清除的。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 14:13
  • 签到天数: 100 天

    [LV.6]常住居民II

    10

    主题

    46

    回帖

    628

    积分

    高级会员

    积分
    628
    发表于 2023-10-27 09:09:39 | 显示全部楼层
    如果使能了中断,显然只有标志位为1时才能进入中断服务程序,在中断服务程序中对其清零就可以了,不存在误清零的可能性吧
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-21 00:17 , Processed in 0.061189 second(s), 48 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表