自学2812 写了一个矩键扫描的程序 检测按键 然后用数码管显示 自己一步一步运行的时候 没有问题 但是全速运行的时候 按下去某个键 只能检测出所在行 检测不出所在列 就是不更新列值 一直是上次的列值 求解
Uint16 Scan_KEY(void)
{
static Uint16 keyx,key;
Uint16 keyy;
Uint16 temp;
RESET_ALL();
temp=S1&0x0038;
if(temp!=0x0038)
{
DSP28x_usDelay(5000);
if(temp!=0x0038)
{
switch(temp)
{
case 0x18: keyx=0;break;
case 0x28: keyx=1;break;
case 0x30: keyx=2;break;
default:break;
}
SET0;
temp=S1&0x0038;
if(temp==0x38)
keyy=2;
RESET_ALL();
SET1;
temp=S1&0x0038;
if(temp==0x38)
keyy=1;
RESET_ALL();
SET2;
temp=S1&0x0038;
if(temp==0x38)
keyy=0;
RESET_ALL();
key=Keys[keyx][keyy];
return key;
keyx=0;
keyy=0;
}
}
}
|