找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

如何使用单片机外部中断执行四位数码管的动态显示?

查看数: 3792 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-12-21 23:00

正文摘要:

基于单片机的三路抢答器的设计 设计内容: 1.具有3路抢答输入(由独立按键实现 )             2.显示抢答剩余时间,初始为10秒,最小量化单位为1秒; 3.抢答结束后, ...

回复

ID:451718 发表于 2018-12-22 16:31
bit是位,怎么能赋值1,2,3呢,只能赋值0或者1两种状态?如果要实现多状态,你需要设置多个标志,并且在使用完标志后,记得还原标志位。
ID:439261 发表于 2018-12-22 13:44
1092648746 发表于 2018-12-22 10:26
楼主的中断函数不要放循环,容易死机。应该在外部中断放一个变量flag,当中断启动时,flag置1,主程序内放 ...

bit flag;

void main()
{       
        EA=1;
    EX0=1;
        IP=0X04;
    IT0=1;
        EX1=1;
        IT1=1;
        while(1);
        {
          if(flag==1)
          {          if(m==4)m=0;
      P1=address[m];
          P0=table1[m++];delayms(500);

          }
          if(flag==2)
          {   if(m==4)m=0;
         P1=address[m];
             P0=table2[m++];delayms(500);
          }
          if(flag==3)
          {    if(m==4)m=0;
         P1=address[m];
             P0=table3[m++];delayms(500);
          }
       
       
        }
}

void INT_1() interrupt 2
{
    EX1=0;
        delay(20);
        EX1=1;
        if(P2=0xfe)flag=1;
        if(P2=0xfd)flag=2;
        if(P2=0xfb)flag=3;
   
     

}
我把主程序和外部中断int1修改了一下,但还是不能亮
flag我也不是很了解,你能看看哪里出错了吗
ID:393699 发表于 2018-12-22 10:26
楼主的中断函数不要放循环,容易死机。应该在外部中断放一个变量flag,当中断启动时,flag置1,主程序内放循环if判断检查标志位,然后放你要做的事情即可,第三点可按照上述思路改进
ID:21069 发表于 2018-12-22 02:19
在按键按下后做一个判断函数,因抢答有一个时间差,在这其中你要判断只有一个按键按下的为通过,道时将按键置为0状态并给延时,当第二,第三个按键下时,由于低电平不是唯一的,都判定无效。

评分

参与人数 1黑币 +15 收起 理由
刀刀见红 + 15 回帖助人的奖励!

查看全部评分

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

Powered by 单片机教程网

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