📄 kbd_task.lst
字号:
173 2 else if (gl_key == KEY_VALID)
174 2 {
175 3 if (ref_state == REF_STATE_VOICE)
176 3 {
177 4 if (func_state == 1) { func_state=2; LED_ON = 4; }
178 4 else { func_state=1; LED_ON = 8; }
C51 COMPILER V7.50 KBD_TASK 09/20/2005 21:47:42 PAGE 4
179 4 LED_FAST = 2;
180 4 }
181 3 else
182 3 {
183 4 if (func_state)
184 4 {
185 5 gl_key_press = TRUE;
186 5 gl_key = KEY_SOUND;
187 5 }
188 4 if (func_state>=5) func_state = 0;
189 4 func_state++;
190 4 LED_FAST = 2;
191 4 if (func_state == 5)
192 4 {
193 5 LED_ON=7;
194 5 if (MP3CON & MSK_MPBBST) LED_FAST = 1;
195 5 }
196 4 else LED_ON = (16>>func_state);
197 4 }
198 3 }
199 2 }
200 1 else
201 1 {
202 2 if (gl_key == KEY_FUNC)
203 2 {
204 3 func_state=0;
205 3 if (ref_state == REF_STATE_SONG)
206 3 {
207 4 gl_key_press = TRUE;
208 4 gl_key = KEY_PLAY;
209 4 mode_state = MODE_SONG;
210 4 }
211 3 else if (ref_state == REF_STATE_VOICE)
212 3 {
213 4 gl_key_press = TRUE;
214 4 if (func_state == 2) gl_key = KEY_REC;
215 4 else gl_key = KEY_PLAY;
216 4 mode_state = MODE_VOICE;
217 4 }
218 3 else if (ref_state == REF_STATE_USB) // && !connected
219 3 {
220 4 usb_task_init ();
221 4 connected = TRUE;
222 4 mode_state = MODE_DOWNLOAD;
223 4 ENA_USB = !connected;
224 4 }
225 3 else if (ref_state == REF_STATE_FORMAT)
226 3 {
227 4 LED_TREEB = 1;
228 4 Fformat();
229 4 if (mem_select_format() != OK) LED_FAST=1; /* check file system */
230 4 else LED_FAST = 3;
231 4 }
232 3 }
233 2 else if (gl_key == KEY_VALID)
234 2 {
235 3 if (pause)
236 3 {
237 4 pause = FALSE;
238 4 gl_key_press = TRUE;
239 4 gl_key = KEY_STOP;
240 4 }
C51 COMPILER V7.50 KBD_TASK 09/20/2005 21:47:42 PAGE 5
241 3 if (ref_state >= 3)
242 3 {
243 4 Label_init_ihm:
244 4 ref_state = 0;
245 4 mode_task_init();
246 4 }
247 3 else ref_state++;
248 3 LED_ON = (8 >> ref_state);
249 3 LED_FAST = 3;
250 3 }
251 2 }
252 1 }
253
254
255 /*F**************************************************************************
256 * NAME: kbd_task
257 *----------------------------------------------------------------------------
258 * PARAMS:
259 *
260 * return:
261 *----------------------------------------------------------------------------
262 * PURPOSE:
263 * Keyboard task
264 *----------------------------------------------------------------------------
265 * EXAMPLE:
266 *----------------------------------------------------------------------------
267 * NOTE:
268 *----------------------------------------------------------------------------
269 * REQUIREMENTS:
270 *****************************************************************************/
271 void kbd_task (void)
272 {
273 1 switch (kbd_state)
274 1 {
275 2 case KBD_IDLE:
276 2 if (Kbd_key_pressed())
277 2 {
278 3 gl_kbd_tick = KBD_DEBOUNCE_INIT; /* init debounce timer */
279 3 kbd_state = KBD_DEBOUNCE;
280 3 }
281 2 break;
282 2
283 2 case KBD_DEBOUNCE:
284 2 if (gl_kbd_tick > KBD_DEBOUNCE_TEMPO)
285 2 {
286 3 kbd_state = KBD_DECODE;
287 3 }
288 2 break;
289 2
290 2 case KBD_DECODE:
291 2 gl_key = kbd_decode(); /* read key pressed */
292 2 if (gl_key != NO_KEY) /* if real key pressed */
293 2 gl_key_press = TRUE; /* signal to other tasks */
294 2 kbd_state = KBD_IDLE;
295 2 break;
296 2
297 2 default:
298 2 break;
299 2 }
300 1
301 1 // Add driver keyboard for Reference Design:
302 1 // Re-map physical keys over logical demoboard keys
C51 COMPILER V7.50 KBD_TASK 09/20/2005 21:47:42 PAGE 6
303 1 if (gl_key_press == TRUE && gl_key < NO_KEY) ref_mode_task();
304 1 if (connected && (mode_state == MODE_SONG))
305 1 { /* download exit */
306 2 gl_key_press = TRUE;
307 2 gl_key = KEY_FUNC;
308 2 }
309 1 }
310
311
312 /*F**************************************************************************
313 * NAME: kbd_set_stop
314 *----------------------------------------------------------------------------
315 * PARAMS:
316 *
317 * return:
318 *----------------------------------------------------------------------------
319 * PURPOSE:
320 * Simulate STOP key press
321 *----------------------------------------------------------------------------
322 * EXAMPLE:
323 *----------------------------------------------------------------------------
324 * NOTE:
325 * Called from mode task before switching to download state
326 *----------------------------------------------------------------------------
327 * REQUIREMENTS:
328 *****************************************************************************/
329 void kbd_set_stop (void)
330 {
331 1 gl_key = KEY_STOP;
332 1 gl_key_press = TRUE;
333 1 kbd_state = KBD_IDLE;
334 1 }
335
336
337
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 619 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 3 ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -