欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3518|回復(fù): 4
收起左側(cè)

如何使用單片機(jī)外部中斷執(zhí)行四位數(shù)碼管的動(dòng)態(tài)顯示?

[復(fù)制鏈接]
ID:439261 發(fā)表于 2018-12-21 23:00 | 顯示全部樓層 |閱讀模式
基于單片機(jī)的三路搶答器的設(shè)計(jì)
設(shè)計(jì)內(nèi)容:
1.具有3路搶答輸入(由獨(dú)立按鍵實(shí)現(xiàn) )            
2.顯示搶答剩余時(shí)間,初始為10秒,最小量化單位為1秒;
3.搶答結(jié)束后,成功的那一路,并顯示搶答成功的號(hào)碼;失敗的其他路,并顯示F;
4.如果沒(méi)有人搶答,報(bào)警,并重新進(jìn)入開(kāi)始搶答狀態(tài)。


我不知道如何該在外部中斷執(zhí)行第三條要求

#include<reg51.h>
#include <intrins.h>
#define uint unsigned int                 
#define uchar unsigned char
uchar code table[]={0xc0,0x90,0x80,0xF8,0x82,0x92,0x99,0xb0,0xa4,0xf9};
uchar code table1[]={0x71,0x06,0x00,0x71};//一搶
uchar code table2[]={0x06,0x71,0x00,0x71};        // 二搶
uchar code table3[]={0x71,0x71,0x00,0x06};        //        三搶
uchar code address[]={0x08,0x04,0x02,0x01};      
void delayms(uint);
sbit w=P3^6;
sbit p=P3^0;
sbit a=P3^2;
int n;
uint m;
void delay(uint z)          //延時(shí)子程序
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void delayms(uint m)
{
        while(m--);      
}
void main()
{        
        EA=1;
    EX0=1;
        IP=0X04;
    IT0=1;
        EX1=1;
        IT1=1;
        while(1);
}
void INT_0() interrupt 0
{        
        if(p==0)                                   //中斷0,按下p3.2開(kāi)始,d9亮并開(kāi)始倒計(jì)時(shí)
        w=0;                                            
        EX0=0;
        delay(20);
        EX0=1;
        while(1)
        {
        if(m==10)
                {
                        P0=0x89;
                        a=0;
                        delayms(20);
                }
        else
                {P0=table[m];
                delay(1000);
                m++;}         
        }        
}
void INT_1() interrupt 2
{
    EX1=0;
        delay(20);
        EX1=1;
        while(1)
        if(w==0)
  {if(P2=0xfe)
     while(1)
    {
          if(m==4)m=0;
      P1=address[m];
          P0=table1[m++];delayms(500);
    }
        else if(P2=0xfd)
            {
             if(m==4)m=0;
         P1=address[m];
             P0=table2[m++];delayms(500);
                }
                else
                {
                 if(m==4)m=0;
         P1=address[m];
             P0=table3[m++];delayms(500);
                }

           }


}

255.PNG
回復(fù)

使用道具 舉報(bào)

ID:21069 發(fā)表于 2018-12-22 02:19 來(lái)自觸屏版 | 顯示全部樓層
在按鍵按下后做一個(gè)判斷函數(shù),因搶答有一個(gè)時(shí)間差,在這其中你要判斷只有一個(gè)按鍵按下的為通過(guò),道時(shí)將按鍵置為0狀態(tài)并給延時(shí),當(dāng)?shù)诙谌齻(gè)按鍵下時(shí),由于低電平不是唯一的,都判定無(wú)效。

評(píng)分

參與人數(shù) 1黑幣 +15 收起 理由
刀刀見(jiàn)紅 + 15 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:393699 發(fā)表于 2018-12-22 10:26 | 顯示全部樓層
樓主的中斷函數(shù)不要放循環(huán),容易死機(jī)。應(yīng)該在外部中斷放一個(gè)變量flag,當(dāng)中斷啟動(dòng)時(shí),flag置1,主程序內(nèi)放循環(huán)if判斷檢查標(biāo)志位,然后放你要做的事情即可,第三點(diǎn)可按照上述思路改進(jìn)
回復(fù)

使用道具 舉報(bào)

ID:439261 發(fā)表于 2018-12-22 13:44 | 顯示全部樓層
1092648746 發(fā)表于 2018-12-22 10:26
樓主的中斷函數(shù)不要放循環(huán),容易死機(jī)。應(yīng)該在外部中斷放一個(gè)變量flag,當(dāng)中斷啟動(dòng)時(shí),flag置1,主程序內(nèi)放 ...

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我也不是很了解,你能看看哪里出錯(cuò)了嗎
回復(fù)

使用道具 舉報(bào)

ID:451718 發(fā)表于 2018-12-22 16:31 | 顯示全部樓層
bit是位,怎么能賦值1,2,3呢,只能賦值0或者1兩種狀態(tài)?如果要實(shí)現(xiàn)多狀態(tài),你需要設(shè)置多個(gè)標(biāo)志,并且在使用完標(biāo)志后,記得還原標(biāo)志位。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表