level 1
RYCD
楼主
求助
为什么按了图示钮后p0口不为·00001101而是01001111
代码
#include <STC89C5xRC.H>
unsigned char LED7Code[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82,0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
int i;
void delay(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
{
for(n=110;n>0;n--);
}
return ;
}
void main(void)
{
P0 = 0xf0;
while(P0 == 0xf0);
delay(10);
switch(P0) #确定行赋予i行权
{
case 0xe0 :
i = 0;
break;
case 0xd0 :
i = 4;
break;
case 0xb0 :
i = 8;
break;
case 0x70 :
i = 12;
break;
}
P0 = 0x0f;
switch(P0) #确定列得到行权+列权赋予i(此时i为输入数字
{
case 0x07 :
break;
case 0x0b :
i = i + 1;
break;
case 0x0d :
i = i + 2;
break;
case 0x0e :
i = i + 3;
break;
}
P2 = LED7Code[i];
while(1);
}
矩阵排序(理论
0 1 2 3
4 5 6 7
8 9 a b
c d e f



(自学三天瞎搞的44矩阵求大佬轻喷)
2023年08月02日 15点08分
1
为什么按了图示钮后p0口不为·00001101而是01001111
代码
#include <STC89C5xRC.H>
unsigned char LED7Code[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82,0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
int i;
void delay(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
{
for(n=110;n>0;n--);
}
return ;
}
void main(void)
{
P0 = 0xf0;
while(P0 == 0xf0);
delay(10);
switch(P0) #确定行赋予i行权
{
case 0xe0 :
i = 0;
break;
case 0xd0 :
i = 4;
break;
case 0xb0 :
i = 8;
break;
case 0x70 :
i = 12;
break;
}
P0 = 0x0f;
switch(P0) #确定列得到行权+列权赋予i(此时i为输入数字
{
case 0x07 :
break;
case 0x0b :
i = i + 1;
break;
case 0x0d :
i = i + 2;
break;
case 0x0e :
i = i + 3;
break;
}
P2 = LED7Code[i];
while(1);
}
矩阵排序(理论
0 1 2 3
4 5 6 7
8 9 a b
c d e f



(自学三天瞎搞的44矩阵求大佬轻喷)