久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

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

搜索
查看: 4360|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)程序問(wèn)題 按一下顯示加一

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:245521 發(fā)表于 2017-11-28 21:09 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
為什么程序不能運(yùn)行1,按一下顯示加一呢??



#include<reg52.h>
char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit y=P3^3;
int num=0;
int ge=0;
int shi=0;
void delay(){
        int i,j=0;
        for(i=1000;i<0;i--)
                for(;j<100;j++);
                        }
main(){
        while(1){
        if(y==0)
        delay();
        if(y==0)
         num++;
          if(num==100) num=0;
                ge=num%10;
                shi=num/10;
                P1=tab[ge];
                P2=0x01;
                delay();
                P1=0xff;
                P1=tab[shi];
                P2=0x02;
                delay();
                P1=0xff;
                while(y==0);        
          }
}





1.jpg (133.04 KB, 下載次數(shù): 96)

1.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:245521 發(fā)表于 2017-11-28 21:13 | 只看該作者
請(qǐng)問(wèn)是哪里出問(wèn)題了呢?
回復(fù)

使用道具 舉報(bào)

板凳
ID:164602 發(fā)表于 2017-11-29 08:54 | 只看該作者
我運(yùn)行了你的程序。
你的程序問(wèn)題,在按鍵消抖上。
按鍵的抖動(dòng),時(shí)間至少10ms,你的消抖延時(shí),只有0.15ms左右,不能確實(shí)消抖,所以按一次會(huì)加很多。
我這里有一個(gè)延時(shí)10ms的程序,你試試看。
void Delay10ms(uc c)
{
    unsigned char a,b;
    for(c;c>0;c--)
                for(b=44;b>0;b--)
                        for (a=112;a>0;a--);
}
回復(fù)

使用道具 舉報(bào)

地板
ID:255045 發(fā)表于 2017-11-29 11:20 | 只看該作者
Afan的單片機(jī) 發(fā)表于 2017-11-28 21:13
請(qǐng)問(wèn)是哪里出問(wèn)題了呢?

給樓主提個(gè)建議,將按鍵掃描和動(dòng)態(tài)顯示分別做一個(gè)模塊,  #include<reg51.h>   #define uchar unsigned char   sbit com1=P1^0;   sbit com2=P1^1;   sbit key=P3^0;         sbit key2=P3^1;         bit keyflag2;   bit keyflag;   char counter=0;   uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽(yáng)極                  //**********延時(shí)10ms*********//   void delay()   {                 uchar i,j=10;                 while(j--)                 {                         for(i=120;i>0;i--);                 }         }                                   //**********數(shù)碼管動(dòng)態(tài)掃描*********//   void display(void)   {                  P1=0xfd;                  P0=seg[counter/10];                  delay();                             P1=0xfe;            P0=seg[counter%10];                  delay();           }                  //***********按鍵掃描*********//         void keyread(void)         {           if(!key)                 {                                 if(keyflag==0)                                 {                              delay();                                          if(!key)                                    {                                                 keyflag=1;                                           counter++;                                           if(counter==100)                                                 counter=0;                                   }                           }                         }                         else                                 keyflag=0; }  void main(void) {          for(   ;    ;   )         {          keyread();          display();         } } }
回復(fù)

使用道具 舉報(bào)

5#
ID:255045 發(fā)表于 2017-11-29 12:20 | 只看該作者
Afan的單片機(jī) 發(fā)表于 2017-11-28 21:13
請(qǐng)問(wèn)是哪里出問(wèn)題了呢?

給樓主提個(gè)建議,將按鍵掃描和動(dòng)態(tài)顯示分別做一個(gè)模塊。采用分時(shí)的方法,在鍵盤(pán)掃描中定義一個(gè)標(biāo)志位keyflag,當(dāng)按鍵按下按下時(shí),keyflag=1;按鍵彈起來(lái)時(shí),keyflag置1,這樣就檢測(cè)標(biāo)志位就不用一行一行的掃描鍵盤(pán),消耗cpu的時(shí)間,同時(shí)也避免了按鍵掃描和動(dòng)態(tài)顯示之間的時(shí)間沖突,比如,按一下按鍵,數(shù)碼管會(huì)閃一下。一個(gè)小段程序可能體現(xiàn)不出來(lái),但如果是一個(gè)大型復(fù)雜的程序,問(wèn)題就非常重要了,所以分時(shí)的思想在單片機(jī)中非常重要。當(dāng)然也可以用中斷解決,但是單片機(jī)中斷源有限,能節(jié)約硬件資源就節(jié)約一下吧。
標(biāo)志位的狀態(tài),如果不清楚的話,可以自己寫(xiě)一下,就會(huì)明白了。
  #include<reg51.h>
  #define uchar unsigned char
  sbit key=P3^3;
  bit keyflag;
  char counter=0;
  uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
       
        //***********延時(shí)10ms*********//
  void delay()
  {
        uchar i,j=10;
        while(j--)
      {
           for(i=120;i>0;i--);
      }
   }
       
                  
  
  //**********動(dòng)態(tài)掃描*********//
  void display(void)
  {
        P2=0xfd;
        P1=seg[counter/10];
        delay();
               
        P2=0xfe;
        P1=seg[counter%10];
        delay();       
  }
       
//***********按鍵掃描*********//
  void keyread(void)
  {
        if(!key)
      {
                               
          if(keyflag==0)//按鍵標(biāo)志位
                               
         {
              delay();
              if(!key)
            {
                 keyflag=1;
                 counter++;
                 if(counter==100)//計(jì)滿100,清0
                 counter=0;
             }
          }               
      }
        else
              keyflag=0;
  }
                       
               

    void main(void)
  {
      while( 1 )
      {
          keyread();
          display();
      }  
  }  
               
回復(fù)

使用道具 舉報(bào)

6#
ID:255045 發(fā)表于 2017-11-29 12:25 | 只看該作者
廖宇航 發(fā)表于 2017-11-29 11:20
給樓主提個(gè)建議,將按鍵掃描和動(dòng)態(tài)顯示分別做一個(gè)模塊,  #include   #define uchar unsigned char   sbi ...

不知道怎么回事,發(fā)表主題后格式亂了,樓主只有自己復(fù)制一下,自己排一下版了
回復(fù)

使用道具 舉報(bào)

7#
ID:255156 發(fā)表于 2017-11-29 13:58 | 只看該作者
廖宇航 發(fā)表于 2017-11-29 12:25
不知道怎么回事,發(fā)表主題后格式亂了,樓主只有自己復(fù)制一下,自己排一下版了

標(biāo)志位keyFlag在程序中沒(méi)體現(xiàn)出來(lái)
回復(fù)

使用道具 舉報(bào)

8#
ID:245521 發(fā)表于 2017-11-29 17:52 來(lái)自觸屏版 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-11-29 08:54
我運(yùn)行了你的程序。
你的程序問(wèn)題,在按鍵消抖上。
按鍵的抖動(dòng),時(shí)間至少10ms,你的消抖延時(shí),只有0.15ms ...

謝謝!原來(lái)是軟件消抖的問(wèn)題啊
回復(fù)

使用道具 舉報(bào)

9#
ID:245521 發(fā)表于 2017-11-29 17:53 來(lái)自觸屏版 | 只看該作者
J木昜 發(fā)表于 2017-11-29 13:58
標(biāo)志位keyFlag在程序中沒(méi)體現(xiàn)出來(lái)

是的!看不懂呢
回復(fù)

使用道具 舉報(bào)

10#
ID:245521 發(fā)表于 2017-11-29 19:13 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-11-29 08:54
我運(yùn)行了你的程序。
你的程序問(wèn)題,在按鍵消抖上。
按鍵的抖動(dòng),時(shí)間至少10ms,你的消抖延時(shí),只有0.15ms ...

100*1000比你的44*112大啊但是。。。。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜免费看 | 色婷婷久久久久swag精品 | 日日日干干干 | 成人黄色电影免费 | 日本欧美在线观看视频 | 色综合一区二区 | 中文字幕一区在线观看视频 | 一级欧美一级日韩片 | 成人免费观看视频 | 亚洲成人自拍 | 黄色片视频免费 | 国产激情网 | 一区二区免费在线 | 欧美亚洲视频在线观看 | 给我免费的视频在线观看 | 欧美日韩在线免费 | 国产传媒| av网站免费看| 毛片免费视频 | 综合久久色 | 欧美视频1区 | 亚洲午夜精品一区二区三区他趣 | 欧美日韩国产中文字幕 | 中文字幕1区| 天天射天天操天天干 | 欧美成人在线网站 | 国产一区二| 91精品国产91久久综合桃花 | 欧美一区二区三区在线观看 | 欧美精品第一页 | 久久精品手机视频 | 黄色大片在线免费观看 | 午夜日韩| 欧美国产精品一区二区 | 四虎最新地址 | 中文字幕在线一 | 亚洲精品区 | 日韩成人在线免费视频 | 青青草av在线播放 | 亚洲人人舔人人 | 亚洲v区|