📄 kbd_task.lst
字号:
194 5 gl_key = KEY_SOUND;
195 5 }
196 4 if (func_state>=5) func_state = 0;
197 4 func_state++;
198 4 LED_FAST = 2;
199 4 if (func_state == 5)
200 4 {
201 5 LED_ON=7;
202 5 if (MP3CON & MSK_MPBBST) LED_FAST = 1;
203 5 }
204 4 else LED_ON = (16>>func_state);
205 4 }
206 3 }
207 2 }
208 1 else
209 1 {
210 2 if (gl_key == KEY_FUNC)
211 2 {
212 3 func_state=0;
213 3 if (ref_state == REF_STATE_SONG)
214 3 {
215 4 gl_key_press = TRUE;
216 4 gl_key = KEY_PLAY;
217 4 mode_state = MODE_SONG;
218 4 }
219 3 else if (ref_state == REF_STATE_VOICE)
220 3 {
221 4 gl_key_press = TRUE;
222 4 if (func_state == 2) gl_key = KEY_REC;
223 4 else gl_key = KEY_PLAY;
224 4 mode_state = MODE_VOICE;
225 4 }
226 3 else if (ref_state == REF_STATE_USB) // && !connected
227 3 {
228 4
229 4
230 4 usb_task_init ();
231 4 connected = TRUE;
232 4 mode_state = MODE_DOWNLOAD;
233 4 ENA_USB = !connected;
234 4 }
235 3
236 3 else if (ref_state == REF_STATE_FORMAT)
237 3 {
238 4
239 4 LED_TREEB = 1;
C51 COMPILER V7.02a KBD_TASK 09/13/2007 11:53:04 PAGE 5
240 4 Fformat();
241 4 if (mem_select_format() != OK) LED_FAST=1; /* check file system */
242 4 else LED_FAST = 3;
243 4
244 4
245 4 }
246 3 }
247 2 else if (gl_key == KEY_VALID)
248 2 {
249 3 if (pause)
250 3 {
251 4 pause = FALSE;
252 4 gl_key_press = TRUE;
253 4 gl_key = KEY_STOP;
254 4 }
255 3 if (ref_state >= 3)
256 3 {
257 4 Label_init_ihm:
258 4 ref_state = 0;
259 4 mode_task_init();
260 4 }
261 3 else ref_state++;
262 3 LED_ON = (8 >> ref_state);
263 3 LED_FAST = 3;
264 3 }
265 2 }
266 1
267 1 }
268
269
270 /*F**************************************************************************
271 * NAME: kbd_task
272 *----------------------------------------------------------------------------
273 * PARAMS:
274 *
275 * return:
276 *----------------------------------------------------------------------------
277 * PURPOSE:
278 * Keyboard task
279 *----------------------------------------------------------------------------
280 * EXAMPLE:
281 *----------------------------------------------------------------------------
282 * NOTE:
283 *----------------------------------------------------------------------------
284 * REQUIREMENTS:
285 *****************************************************************************/
286 void kbd_task (void)
287 {
288 1
289 1 change( );
290 1
291 1 if((mp3==3)&(connected==0))
292 1 {
293 2 P3_1=0;
294 2 k_delay( );
295 2 P3_1=1;
296 2
297 2 }
298 1
299 1
300 1 switch (kbd_state)
301 1 {
C51 COMPILER V7.02a KBD_TASK 09/13/2007 11:53:04 PAGE 6
302 2 case KBD_IDLE:
303 2 if (Kbd_key_pressed()|| (fun_key>0) )
304 2 {
305 3 gl_kbd_tick = KBD_DEBOUNCE_INIT; /* init debounce timer */
306 3 kbd_state =KBD_DEBOUNCE;
307 3 }
308 2 break;
309 2
310 2 case KBD_DEBOUNCE:
311 2 if (gl_kbd_tick > KBD_DEBOUNCE_TEMPO)
312 2 {
313 3 kbd_state = KBD_DECODE;
314 3 }
315 2 break;
316 2
317 2 case KBD_DECODE:
318 2 gl_key = kbd_decode(); /* read key pressed */
319 2 if(fun_key>0)
320 2
321 2 {
322 3 gl_key=0x02;
323 3 fun_key=0;
324 3 }
325 2 if (gl_key != NO_KEY) /* if real key pressed */
326 2 { gl_key_press = TRUE;
327 3 fun_key=0;
328 3 /* signal to other tasks */
329 3 }
330 2 kbd_state = KBD_IDLE;
331 2 break;
332 2
333 2 default:
334 2 break;
335 2 }
336 1
337 1 // Add driver keyboard for Reference Design:
338 1 // Re-map physical keys over logical demoboard keys
339 1 if (gl_key_press == TRUE && gl_key < NO_KEY) ref_mode_task();
340 1
341 1
342 1 if (connected && (mode_state == MODE_SONG))
343 1 { /* download exit */
344 2 gl_key_press = TRUE;
345 2 gl_key = KEY_FUNC;
346 2 }
347 1 }
348
349
350 /*F**************************************************************************
351 * NAME: kbd_set_stop
352 *----------------------------------------------------------------------------
353 * PARAMS:
354 *
355 * return:
356 *----------------------------------------------------------------------------
357 * PURPOSE:
358 * Simulate STOP key press
359 *----------------------------------------------------------------------------
360 * EXAMPLE:
361 *----------------------------------------------------------------------------
362 * NOTE:
363 * Called from mode task before switching to download state
C51 COMPILER V7.02a KBD_TASK 09/13/2007 11:53:04 PAGE 7
364 *----------------------------------------------------------------------------
365 * REQUIREMENTS:
366 *****************************************************************************/
367 void kbd_set_stop (void)
368 {
369 1 gl_key = KEY_STOP;
370 1 gl_key_press = TRUE;
371 1 kbd_state = KBD_IDLE;
372 1 }
373
374
375 void k_delay( )
376 {
377 1
378 1 unsigned char i;
379 1 for(i=0;i<200;i++);
380 1
381 1
382 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 647 ----
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 + -