找回密码
 立即注册
查看: 139|回复: 7

关于同一个位无法同时操作的问题

[复制链接]
  • TA的每日心情

    昨天 09:19
  • 签到天数: 31 天

    [LV.5]常住居民I

    27

    主题

    70

    回帖

    427

    积分

    中级会员

    积分
    427
    发表于 2024-3-29 10:35:02 | 显示全部楼层 |阅读模式
    void timer0_isr() interrupt 1
    {
    if(flagt && ++ countt == 20)
        {
                            countt = 0;
                flagt = 0;
                keyPadData[0] &=~ 0x08;
                            flag2 = 1;
        }

        if(flag2 && ++count2 == 40)
        {
            count2 = 0;
            flag2 = 0;
            keyPadData[0] |= 0x08;
        }
    if(flag17t && ++ count17t == 20)
        {
                            count17t = 0;
                flag17t = 0;
                keyPadData[0] &=~ 0x08;
                            flag172 = 1;
        }

        if(flag172 && ++count172 == 40)
        {
            count172 = 0;
            flag172 = 0;
            keyPadData[0] |= 0x08;
        }
    }

    如果flag2flag172 几乎同时成立,keyPadData[0];只能写一次,有什么办法执行两次吗

    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 112 天

    [LV.6]常住居民II

    10

    主题

    584

    回帖

    936

    积分

    高级会员

    积分
    936
    发表于 2024-3-29 10:41:23 | 显示全部楼层
    在定时中断中判断,只要条件成立就可以执行两次的
    if(flag2 && ++count2 == 40)
    if(flag172 && ++count172 == 40)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    昨天 09:19
  • 签到天数: 31 天

    [LV.5]常住居民I

    27

    主题

    70

    回帖

    427

    积分

    中级会员

    积分
    427
     楼主| 发表于 2024-3-29 11:18:32 | 显示全部楼层
    21cnsound 发表于 2024-3-29 10:41
    在定时中断中判断,只要条件成立就可以执行两次的
    if(flag2 && ++count2 == 40)
    if(flag172 && ++count17 ...

    谢谢您,问题是当第一次keyPadData[0] = 0x08;的时候第二次keyPadData[0] = 0x08;就不能执行了,也可能执行了但是没变化,我想让他们错开执行,或者排队等待忙,或者条件保存下来后一个一个执行那种
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 112 天

    [LV.6]常住居民II

    10

    主题

    584

    回帖

    936

    积分

    高级会员

    积分
    936
    发表于 2024-3-29 11:22:45 | 显示全部楼层
    爱吃西红柿 发表于 2024-3-29 11:18
    谢谢您,问题是当第一次keyPadData[0] = 0x08;的时候第二次keyPadData[0] = 0x08;就不能执行了,也可能执 ...

    keyPadData[0]=0xXX  #这是RAM变量操作,连续操作多少次都没问题,怎么可能第二次不能执行?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 174 天

    [LV.7]常住居民III

    26

    主题

    832

    回帖

    2114

    积分

    金牌会员

    积分
    2114
    发表于 2024-3-29 11:26:19 | 显示全部楼层
    感觉你的++count?有点乱呢
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    昨天 09:19
  • 签到天数: 31 天

    [LV.5]常住居民I

    27

    主题

    70

    回帖

    427

    积分

    中级会员

    积分
    427
     楼主| 发表于 2024-4-1 09:14:03 | 显示全部楼层
    21cnsound 发表于 2024-3-29 11:22
    keyPadData[0]=0xXX  #这是RAM变量操作,连续操作多少次都没问题,怎么可能第二次不能执行? ...

    第一次第二次间隔很短 几乎同时写入,

    点评

    不存在同时写入的问题,及时连续两条指令写都不会 有问题  发表于 2024-4-1 12:43
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 53 天

    [LV.5]常住居民I

    2

    主题

    53

    回帖

    360

    积分

    中级会员

    积分
    360
    发表于 2024-4-2 17:57:48 | 显示全部楼层
    如果keyPadData[0]的其他位没有用就错开
    一个用0x08,另一个用0x04或0x10
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 11:41 , Processed in 0.067014 second(s), 54 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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