找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3283|回复: 4
收起左侧

菜鸟求答疑,关于一个中断程序

[复制链接]
ID:50443 发表于 2013-5-19 22:21 | 显示全部楼层 |阅读模式
111.png guangzhi接的是P3.3想实现的功能是按一下,就让所有的灯变红,再按一下恢复正常,中断程序如下,请大神看看哪里有问题
void guang()interrupt 2
{
     if(P3^3==0)          
         {
                 delayms(20);
                 if(P3^3==0)   
            {
                           while(!P3^3);
                         guangzhiflag=~guangzhiflag;
                        while(guangzhiflag == 1)
                        {
                                display(8,8,8,8);
                                P1=0x5b;
                                zhi_red=0;
                                zhi_green=1;
                        }
          }
   }
}


回复

使用道具 举报

ID:1 发表于 2013-5-20 03:21 | 显示全部楼层
你程序搞得这么复杂, 中断一次就取反一次 应该可以搞定吧,当然你要加入防抖动代码
回复

使用道具 举报

ID:50486 发表于 2013-5-22 13:00 | 显示全部楼层
1、进入外中断后最好加EX=0(关闭外中断),中断结束后再打开,即:
EX = 0;
。。。
EX  = 1;
2、while循环的语句是什么意思?zhi_red表示都变红?
回复

使用道具 举报

ID:51564 发表于 2013-7-7 15:02 | 显示全部楼层
中断中间不能有延时
回复

使用道具 举报

ID:801878 发表于 2020-7-28 10:27 | 显示全部楼层
中断取反,去抖就好了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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