麻烦各位帮我看看一个函数。想在实验板上实现四个按键分别控制四个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变量 } } } |