typedef struct A
{
char num[3];
long n;
struct user *next;
};
struct A *p;
p=(struct A*)malloc(LEN);
p->n=0;
怎么表示新开辟的单元里数组的首地址啊
p->num好像不对
而且用液晶显示p->n却是-1
编写的液晶显示函数没有问题,可以显示数字和用首地址显示字符串
图片中矩阵键盘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++)//循环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;
}
}
|