大神們真心請教,搞不明白,為什么按健數碼管顯顯正常,為什么全局變量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 ; 。疞ED燈不亮呀,請教了
case (8) : led=0X62; break ;
}
}
}
|