跟着江科大的51教程走,学到矩阵键盘这一章,按自己的理解写下了这段代码,想问问大家这段代码逻辑上有什么问题啊,一直没有办法输出键码值,调了好久, 大哭
#include <REGX52.H>
#include "delay.h"
unsigned char keydata[4][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
unsigned char i, keypads_value;
unsigned char keypads()
{
P1 = 0x7F;
for(i = 0; i < 4; i++)
{
P1 = ~((~P1) >> i);
if (P1_3 == 0)
{
Delay1ms(20);
keypads_value = keydata[i][0];
while(P1_3 == 0);
Delay1ms(20);
}
if (P1_2 == 0)
{
Delay1ms(20);
keypads_value = keydata[i][1];
while(P1_2 == 0);
Delay1ms(20);
}
if (P1_1 == 0)
{
Delay1ms(20);
keypads_value = keydata[i][2];
while(P1_1 == 0);
Delay1ms(20);
}
if (P1_0 == 0)
{
Delay1ms(20);
keypads_value = keydata[i][3];
while(P1_0 == 0);
Delay1ms(20);
}
}
return keypads_value;
}