typedef struct A
{
char num[3];
long n;
struct user *next;
};
struct A *p;
p=(struct A*)malloc(LEN);
p->n=0;
怎么表示新開辟的單元里數(shù)組的首地址啊
p->num好像不對
而且用液晶顯示p->n卻是-1
編寫的液晶顯示函數(shù)沒有問題,可以顯示數(shù)字和用首地址顯示字符串
圖片中矩陣鍵盤y5也接收不到信號,不管按沒按下,一直是高,我是用x1-x4輸出掃描,其中輸入檢測y1-y4為P0上的,y5是P2^3,就接收不到了
以下是代碼
sbit y1 = P0^4;
sbit y2 = P0^5;
sbit y3 = P0^6;
sbit y4 = P0^7;
sbit y5 = P2^3;
sbit x4 = P0^3;
sbit x3 = P0^2;
sbit x2 = P0^1;
sbit x1 = P0^0;
void KeyScan(void)
{
char i=0,a=0;
for(i=0;i<4;i++)//循環(huán)4次,i逐次加1
{
switch(i)
{
case 0:x1=0;x2=1;x3=1;x4=1;break;
case 1:x1=1;x2=0;x3=1;x4=1;break;
case 2:x1=1;x2=1;x3=0;x4=1;break;
case 3:x1=1;x2=1;x3=1;x4=0;break;
}
if(!y1){delayms(20);if(!y1){a=i+1;while(!y1);break;}}
if(!y2){delayms(20);if(!y2){a=i+5;while(!y2);break;}}
if(!y3){delayms(20);if(!y3){a=i+9;while(!y3);break;}}
if(!y4){delayms(20);if(!y4){a=i+13;while(!y4);break;}}
if(!y5){delayms(20);if(!y5){a=i+17;while(!y5);break;}}
/*鍵盤通過a值來判斷按哪個鍵
第一列 第二列 第三列 第四列
第一行 a=1 a=2 a=3 a=4
第二行 a=5 a=6.......
第三行 a=9.......
第四行 a=13...*/
}
switch(a)
{
case 1:KeySta[0][0]=KeyMap[0][0];break;
case 2:KeySta[0][1]=KeyMap[0][1];break;
case 3:KeySta[0][2]=KeyMap[0][2];break;
case 4:KeySta[0][3]=KeyMap[0][3];break;
case 5:KeySta[1][0]=KeyMap[1][0];break;
case 6:KeySta[1][1]=KeyMap[1][1];break;
case 7:KeySta[1][2]=KeyMap[1][2];break;
case 8:KeySta[1][3]=KeyMap[1][3];break;
case 9:KeySta[2][0]=KeyMap[2][0];break;
case 10:KeySta[2][1]=KeyMap[2][1];break;
case 11:KeySta[2][2]=KeyMap[2][2];break;
case 12:KeySta[2][3]=KeyMap[2][3];break;
case 13:KeySta[3][0]=KeyMap[3][0];break;
case 14:KeySta[3][1]=KeyMap[3][1];break;
case 15:KeySta[3][2]=KeyMap[3][2];break;
case 16:KeySta[3][3]=KeyMap[3][3];break;
case 17:KeySta[4][0]=KeyMap[4][0];break;
case 18:KeySta[4][1]=KeyMap[4][1];break;
case 19:KeySta[4][2]=KeyMap[4][2];break;
case 20:KeySta[4][3]=KeyMap[4][3];break;
default:break;
}
}
|