麻烦各位帮我看看一个函数。想在实验板上实现四个按键分别控制四个led。分别按键1、键2、键3、键4时分别是led1、led2、led3、led4其中一个亮。
可我的程序运行结果却是:第一次按了其中一个键,对应的led亮了;但是随后不管按哪个键,都一直是那个led亮。检查了多次,还是没有发现问题所在。帮帮忙:)
#include "excalibur.h"
int main(void)
{
int buttons,buttonsLast=0x000F; //按键变量
int price,cost,number=1; //默认购买一张票
np_pio *pio1=na_button_pio; //按键指针
np_pio *pio2=na_led_pio; //得到LED指针
pio1->np_piodirection=0; //设置按键端口全为输入端口
while(1)
{
buttons=pio1->np_piodata; //读取按键数据输入码
if(buttons!=buttonsLast && buttonsLast==0x000F) //判断是否有按键按下
{
switch(buttons & 0x000F)
{
case 0x000E: //站点1 led1亮
pio2->np_piodata=0x01;
price=2;
//液晶显示车票单价
break;
case 0x000D: //站点2 led2亮
pio2->np_piodata=(0x01<<1);
price=3;
break;
case 0x000B: //站点3,led3亮
pio2->np_piodata=(0x01<<2);
price=5;
break;
case 0x0007: //站点4,led4亮
pio2->np_piodata=(0x01<<3);
price=6;
break;
case 0x000F: //没有按键按下
buttons=buttonsLast=0x000F;
break;
default:
break;
}
buttonsLast=buttons; //保存当前按键值到buttonsLast变量
}
}
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |