本帖最后由 slotg 于 2015-11-1 23:05 编辑
我所要实现的方案需要一个按键输入的功能,板上有 8 个按键我分别定义为数字 1-8,排列如下:
这与硬件安排的 KEY 顺序不一样,程序的功能就是当按键按下后会在数码管上显示按键的数字,接续上一个 EX01 程序,在 Key_Scan() 函数里判断按键的压下,并将所按的按键码存放在 g_KeyNum 里面。
- switch(Key_NO)
- {
- case Key1: g_KeyNum = 1;
- break;
- case Key2: g_KeyNum = 2;
- break;
- case Key3: g_KeyNum = 3;
- break;
- case Key4: g_KeyNum = 4;
- break;
- case Key7: g_KeyNum = 5;
- break;
- case Key6: g_KeyNum = 6;
- break;
- case Key5: g_KeyNum = 7;
- break;
- case Key8: g_KeyNum = 8;
- break;
- default: break;
- }
复制代码
g_EntKey[4] 存放按键输入的资料,在主 while 回路判断 g_KeyNum 是否有被设定?有的话更新 g_EntKey[4] 排列与数码管的显示。
- g_KeyNum = 0;
-
- while(1)
- {
- while(TMIF00 != 1); /* Wait the TAU00 interrupt flag set to 1*/
- TMIF00 = 0; /* TAU00 interrupt flag clear*/
-
- LED_Display(); /* Executive the LED_Display function*/
- TS0 |= 0x02; /* TAU01 start*/
- while(TMIF01 != 1); /* Wait the TAU01 interrupt flag set to 1*/
- TT0 |= 0x02; /* TAU01 stop*/
- TMIF01 = 0; /* TAU01 interrupt flag clear*/
- Key_Scan(); /* Executive the Key_Scan function*/
- if(g_KeyNum != 0)
- {
- g_EntKey[3] = g_EntKey[2];
- g_EntKey[2] = g_EntKey[1];
- g_EntKey[1] = g_EntKey[0];
- g_EntKey[0] = g_KeyNum;
- DS_EntKey(); /* Display Enter key number */
- g_KeyNum = 0;
- }
- }
复制代码
程序码:
EX02.rar
(69.33 KB, 下载次数: 9)
演示视频:
http://v.youku.com/v_show/id_XMTM3NTQwMTEyNA==.html