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

標(biāo)題: 關(guān)于單片機C語言全局變量的值 不明白呀,請教了 [打印本頁]

作者: abeimao    時間: 2019-1-27 10:23
標(biāo)題: 關(guān)于單片機C語言全局變量的值 不明白呀,請教了
大神們真心請教,搞不明白,為什么按健數(shù)碼管顯顯正常,為什么全局變量b,,進不了 switch(b),,俺的C語言也是個入門級,請教了/




#include <reg51.h>
#define led P2
#define shumaguan P0
#define anjian P1
sbit ls138A= P2^2;
sbit ls138B= P2^3;
sbit ls138C= P2^4;
unsigned char b  ;

unsigned char code shuzu[]={ 0x3f  ,0x06 , 0x5b , 0x4f , 0x66,
0x6d  ,0x7d  , 0x07 , 0x7f , 0x6f } ;// 0--8數(shù)字
void ls138shuju()          
{
        ls138A= 0;
    ls138B= 0;
    ls138C= 0;
}
void yanshi (unsigned int u)
{
while(u--)        ;
}

void shuzihanshu()
{
   unsigned char v ;
   shumaguan=shuzu[0];                                                       
   while(1)
   {
         ls138shuju();
        /************* 掃描最右側(cè)一例*************/
         anjian=0XFE; //把1111 1110賦于按鍵,高4位與低4位組成縱橫矩陣
            v=anjian;    //        anjian賦于V
         v=v&0XF0;    //v于1111 0000相&取出高4位,如高4位有0說明有按健按下,
         if(v!=0XF0)         //有按鍵按下高4位不等于1111會進入if
           {
             yanshi (100);
             v=anjian;   
             v=v&0XF0;          
             if(v!=0XF0)
               {
                 switch(v)
                       {
                             case 0X70 :        b=4; shumaguan=shuzu[b]; break ;
                            case 0XB0 :        b=8; shumaguan=shuzu[b]; break ;          
                       }
                }
         while(v!=0XF0)
              {
                v=anjian;   
                v=v&0XF0;   
              }
         yanshi (100);                     
        }  

   }

}
void main()
{

  while(1)
       {

                shuzihanshu();
             switch(b)  //,為什么全局變量b,,進不了 switch(b),
                      {
                             case (4) : led=0X00; break ;  //LED燈不亮呀,請教了
                               case (8) : led=0X62; break ;
                      }
       
       }
}


作者: HC6800-ES-V2.0    時間: 2019-1-27 14:05
不是全局變量的事兒啊。
你的程序中,當(dāng)執(zhí)行了void shuzihanshu()這個函數(shù)后,就死循環(huán)了
void shuzihanshu()
{
   unsigned char v ;
   shumaguan=shuzu[0];                                                        
   while(1)
再也跳不出來,根本沒有執(zhí)行這以后的程序嘛。
程序結(jié)構(gòu)有問題。自己改改吧。

作者: 1092648746    時間: 2019-1-27 15:13
shuzihanshu();這個函數(shù)是死循環(huán)嗎?那當(dāng)然就不能switch命令咯。
你想同時掃描并顯示數(shù)字吧,把掃描函數(shù)放到主循環(huán)里面
作者: abeimao    時間: 2019-2-16 08:57
HC6800-ES-V2.0 發(fā)表于 2019-1-27 14:05
不是全局變量的事兒啊。
你的程序中,當(dāng)執(zhí)行了void shuzihanshu()這個函數(shù)后,就死循環(huán)了
void shuzihans ...

老師,怎么改好呀,,我想不出,給點意見。謝
作者: mosqu    時間: 2019-2-16 09:37
把shuzihanshu()里面的while(1)去掉吧,你已經(jīng)把shuzihanshu()放到main里面的while(1)了,那shuzihanshu()就已經(jīng)無限循環(huán)了,你在shuzihanshu()里面加while(1)就在里面無限循環(huán)出不來了
作者: abeimao    時間: 2019-2-16 15:31
mosqu 發(fā)表于 2019-2-16 09:37
把shuzihanshu()里面的while(1)去掉吧,你已經(jīng)把shuzihanshu()放到main里面的while(1)了,那shuzihanshu() ...

謝謝,我試過把while(1)去過,但出現(xiàn)按健顯示正常了,好像都從子函數(shù)的開始指行了,,我的基礎(chǔ)差,想不出如何改呀

作者: 25Hzzz    時間: 2019-2-16 20:00
shuzihanshu()里面的while(1)是個死循環(huán),你的邏輯有問題。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1