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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2349|回復: 6
打印 上一主題 下一主題
收起左側

關于單片機C語言全局變量的值 不明白呀,請教了

[復制鏈接]
跳轉到指定樓層
樓主
ID:64817 發表于 2019-1-27 10:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大神們真心請教,搞不明白,為什么按健數碼管顯顯正常,為什么全局變量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數字
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();
        /************* 掃描最右側一例*************/
         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 ;
                      }
       
       }
}

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

使用道具 舉報

沙發
ID:164602 發表于 2019-1-27 14:05 | 只看該作者
不是全局變量的事兒啊。
你的程序中,當執行了void shuzihanshu()這個函數后,就死循環了
void shuzihanshu()
{
   unsigned char v ;
   shumaguan=shuzu[0];                                                        
   while(1)
再也跳不出來,根本沒有執行這以后的程序嘛。
程序結構有問題。自己改改吧。
回復

使用道具 舉報

板凳
ID:393699 發表于 2019-1-27 15:13 | 只看該作者
shuzihanshu();這個函數是死循環嗎?那當然就不能switch命令咯。
你想同時掃描并顯示數字吧,把掃描函數放到主循環里面
回復

使用道具 舉報

地板
ID:64817 發表于 2019-2-16 08:57 | 只看該作者
HC6800-ES-V2.0 發表于 2019-1-27 14:05
不是全局變量的事兒啊。
你的程序中,當執行了void shuzihanshu()這個函數后,就死循環了
void shuzihans ...

老師,怎么改好呀,,我想不出,給點意見。謝
回復

使用道具 舉報

5#
ID:410399 發表于 2019-2-16 09:37 | 只看該作者
把shuzihanshu()里面的while(1)去掉吧,你已經把shuzihanshu()放到main里面的while(1)了,那shuzihanshu()就已經無限循環了,你在shuzihanshu()里面加while(1)就在里面無限循環出不來了
回復

使用道具 舉報

6#
ID:64817 發表于 2019-2-16 15:31 | 只看該作者
mosqu 發表于 2019-2-16 09:37
把shuzihanshu()里面的while(1)去掉吧,你已經把shuzihanshu()放到main里面的while(1)了,那shuzihanshu() ...

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

使用道具 舉報

7#
ID:356526 發表于 2019-2-16 20:00 | 只看該作者
shuzihanshu()里面的while(1)是個死循環,你的邏輯有問題。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表