LPC2132 按键问题
智林测控的LPC2132的板子,用它来做上位机跟RFID模块进行通信,结果在用板子上得按键选择操作界面和扇区块值的时候,单步调试通过,但是全速运行的话就无法通过,请问这是什么原因?附程序代码;U32 key = 0x0000FC00; //键码, P0.1-P0.15
/*----------------------------------------------------------*\
| 按键返回 |
\*----------------------------------------------------------*/
U8 KEY_Press()
{
U8 f = 0;
if((IO0PIN & key)!=key)
{
DelayNS(500); //消抖;
if((IO0PIN & key)!=key)
{
f = 1;
}
}
else
{
f = 0;
}
return f;
}
/*----------------------------------------------------------*\
| 按键扫描 |
\*----------------------------------------------------------*/
U8 key_scan()
{
U8 i=0;
if(KEY_Press())
{
if((IO0PIN & 0X00008000)==0)
{
key_left =1;//左键被按下
i = 1;
}
if((IO0PIN & 0X00002000)==0)
{
key_right =1;//右键被按下
i = 1;
}
if((IO0PIN & 0X000000800)==0)
{
key_up = 1; //上键被按下
i = 1;
}
if((IO0PIN & 0X00004000)==0)
{
key_down = 1;//下键被按下
i = 1;
}
if((IO0PIN & 0X00000400)==0)
{
key_ok = 1;//下键被按下
i = 1;
}
while(KEY_Press()); //判断有按键按下了,也执行了选择操作,等待按键的松开
}
else
{
i = 0;
}
return i;
}
以下是扇区块值一段代码:
while(key_scan())
{
while(key_left) //选择扇区
{
if(Sector!=0X0F) //扇区值不等于15
{
key_left = 0; //左键标志置零
Sector++;
Block += 4; //对应的块值初始化
LCD_Clear_Screen(Blue);
sprintf(s,"Sector:%d",Sector);
LCD_PutString(1,40,s,0xF800,0xFFE0); //打印块值
sprintf(s,"Block:%d",Block);
LCD_PutString(1,65,s,0xF800,0xFFE0); //打印块值
if(key_ok)
{
break;
}
}
}
while(key_right) //选择块值
{
key_right = 0;
if(Block <= (Sector*4+3)) //扇区对应块值的最大值
{
LCD_Clear_Screen(Blue);
sprintf(s,"Sector:%d",Sector);
LCD_PutString(1,40,s,0xF800,0xFFE0); //打印扇区值
sprintf(s,"Block:%d",Block);
LCD_PutString(1,65,s,0xF800,0xFFE0); //打印块值
Block ++;
if(Block == (Sector*4+3))
{
LCD_PutString(1,85,"CHOOSED KEY OPERATION",0xF800,0xFFE0);
}
}
}
}
全速运行的时候按键无法进入key_scan();但是单步调试的时候按下按键才能进去,并且IO0PIN得到了相应的值,请问这是为什么?
求救高手···· 还是我自己来吧,第一个是延时的问题,第二个是键盘扫描函数的返回值都是一个标志位,大家注意到了没,小问题却磕绊了我一段时间,还需努力啊我
页:
[1]