#include<reg52.h>
char dizhi[20] = {0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d
, 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c, 0x39 , 0x5e , 0x79 , 0x71 , 0x00
};
char xb;
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
void delay (unsigned int a)
{
while (a--);
}
void Keydonw()
{
char a;
P1 = 0x0f;
if(P1 != 0x0f)
{
delay (1000);
if(P1 != 0x0f)
{
P1 = 0x0f;
switch(P1){
case (0x07):xb = 0;break;
case (0x0b):xb = 1;break;
case (0x0d):xb = 2;break;
case (0x0e):xb = 3;break;}
P1 = 0xf0;
switch(P1){
case (0x70):xb = xb;break;
case (0xb0):xb = xb+4;break;
case (0xd0):xb = xb+8;break;
case (0xe0):xb = xb+12;break;}
while((a<50)&&(P1 !=0xf0)) //檢測按鍵松手檢測
{
delay(100);
a++;
}
}
}
}
void main()
{
LSA = 0;
LSB = 0;
LSC = 0;
while(1)
{
Keydown();
P0 = ~dizhi[xb];
}
}
uj5u.com熱心網友回復:
檢測到按鍵按下夠,你把0x0f又直接賦給了P1 switch陳述句中的P1就永遠是0x0f了,你把P1=0x0f;改為P1=P1 & 0x0f; 試一下看看uj5u.com熱心網友回復:
switch上面那句uj5u.com熱心網友回復:
對,有道理,我改天試試
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/79963.html
標籤:單片機/工控
