📄 voice_task.lst
字号:
212 5 break;
213 5
214 5 case KEY_MODE:
215 5 mode_set_init(); /* exit from voice task */
216 5 disp_name_stop();
217 5 voice_state = VOICE_START;
218 5 break;
219 5
220 5 case KEY_MEM:
221 5 mem_select_next(); /* select next memory */
222 5 disp_name_stop();
223 5 voice_state = VOICE_START;
224 5 break;
225 5
226 5 case KEY_LOCK:
227 5 print_kbd_lock(); /* print keyboard status */
228 5 break;
229 5
230 5 default:
231 5 break;
232 5 }
233 4 gl_key_press = FALSE; /* ack key usage */
234 4 }
235 3 else
236 3 { /* check card presence */
237 4 if (mem_check_card() == KO)
238 4 {
239 5 mem_select_next();
240 5 voice_state = VOICE_START; /* card has been unplugged */
C51 COMPILER V6.20c VOICE_TASK 07/10/2002 15:17:43 PAGE 5
241 5 }
242 4 }
243 3 break;
244 3 }
245 2
246 2
247 2 case VOICE_PLAY_INIT:
248 2 {
249 3 disp_clock_reset(); /* reset clock timer */
250 3 if (Fopen(READ) != OK)
251 3 {
252 4 voice_state = VOICE_ERROR;
253 4 }
254 3 else
255 3 {
256 4 Fseek(WAV_HEADER_SIZE - 4);
257 4 ((Byte*)&voc_length)[3] = Fgetc(); /* get wave length */
258 4 ((Byte*)&voc_length)[2] = Fgetc();
259 4 ((Byte*)&voc_length)[1] = Fgetc();
260 4 ((Byte*)&voc_length)[0] = Fgetc();
261 4 voc_play_init(); /* init voice playing */
262 4 voice_state = VOICE_PLL;
263 4 }
264 3 break;
265 3 }
266 2
267 2
268 2 case VOICE_PLL:
269 2 {
270 3
271 3 if (Pll_get_lock()) /* pll locked? */
272 3 {
273 4 voc_play_start(); /* start playing voice */
274 4 disp_clock_start(); /* start clock timer */
275 4 print_state_play(); /* display play icon */
276 4 voc_cpt = 0;
277 4 voice_state = VOICE_PLAY;
278 4 }
279 3 break;
280 3 }
281 2
282 2
283 2 case VOICE_PLAY: /* one file openned */
284 2 {
285 3 while ((Byte)voc_cpt != gl_pointer)
286 3 {
287 4 gl_buffer[(Byte)voc_cpt] = Fgetc();
288 4 voc_cpt++;
289 4 }
290 3 if (gl_mem_failure)
291 3 { /* hardware failure */
292 4 voc_play_stop(); /* stop playing */
293 4 Fclose();
294 4 voice_state = VOICE_PLAY_STOP;
295 4 break;
296 4 }
297 3 if (voc_cpt >= voc_length) /* end of data */
298 3 {
299 4 voc_play_stop(); /* stop playing */
300 4 Fclose();
301 4 voice_state = VOICE_PLAY_STOP;
302 4 gl_key_press = FALSE; /* no key usage */
C51 COMPILER V6.20c VOICE_TASK 07/10/2002 15:17:43 PAGE 6
303 4 }
304 3 if (gl_key_press) /* a key is pressed? */
305 3 {
306 4 switch (gl_key)
307 4 {
308 5 case KEY_PAUSE:
309 5 Voc_play_pause(); /* suspend playing */
310 5 disp_clock_stop(); /* suspend clock timer */
311 5 print_state_pause(); /* display pause icon */
312 5 voice_state = VOICE_PLAY_PAUSE;
313 5 break;
314 5
315 5 case KEY_NEXT:
316 5 voc_play_stop(); /* stop playing */
317 5 disp_clock_stop(); /* suspend clock timer */
318 5 Fclose();
319 5 file_seek_next(FILE_WAV, TRUE); /* select next message & loop */
320 5 voice_state = VOICE_PLAY_NEW;
321 5 break;
322 5
323 5 case KEY_PREV:
324 5 voc_play_stop(); /* stop playing */
325 5 disp_clock_stop(); /* suspend clock timer */
326 5 Fclose();
327 5 file_seek_prev(FILE_WAV); /* select previous message */
328 5 voice_state = VOICE_PLAY_NEW;
329 5 break;
330 5
331 5 case KEY_INC:
332 5 voc_inc_volume(); /* increment volume */
333 5 print_voice_vol(Voc_get_volume()); /* display new level */
334 5 break;
335 5
336 5 case KEY_DEC:
337 5 voc_dec_volume(); /* decrement volume */
338 5 print_voice_vol(Voc_get_volume()); /* display new level */
339 5 break;
340 5
341 5 case KEY_STOP:
342 5 voc_play_stop(); /* stop playing */
343 5 Fclose();
344 5 voice_state = VOICE_PLAY_STOP;
345 5 break;
346 5
347 5 case KEY_LOCK:
348 5 print_kbd_lock(); /* print keyboard status */
349 5 break;
350 5
351 5 default:
352 5 break;
353 5 }
354 4 gl_key_press = FALSE; /* ack key usage */
355 4 }
356 3 break;
357 3 }
358 2
359 2
360 2 case VOICE_PLAY_PAUSE: /* one file openned */
361 2 {
362 3 if (gl_key_press) /* a key is pressed? */
363 3 {
364 4 switch (gl_key)
C51 COMPILER V6.20c VOICE_TASK 07/10/2002 15:17:43 PAGE 7
365 4 {
366 5 case KEY_PLAY:
367 5 disp_clock_start(); /* restart clock timer */
368 5 voc_play_start(); /* restart sample request */
369 5 print_state_play(); /* display play icon */
370 5 voice_state = VOICE_PLAY;
371 5 break;
372 5
373 5 case KEY_NEXT:
374 5 voc_play_stop();
375 5 Fclose();
376 5 file_seek_next(FILE_WAV, TRUE); /* select next message with loop */
377 5 print_file_name(); /* display file name */
378 5 voice_state = VOICE_IDLE;
379 5 break;
380 5
381 5 case KEY_PREV:
382 5 voc_play_stop();
383 5 Fclose();
384 5 file_seek_prev(FILE_WAV); /* select previous message */
385 5 print_file_name(); /* display file name */
386 5 voice_state = VOICE_IDLE;
387 5 break;
388 5
389 5 case KEY_INC:
390 5 voc_inc_volume(); /* increment volume */
391 5 print_voice_vol(Voc_get_volume()); /* display new level */
392 5 break;
393 5
394 5 case KEY_DEC:
395 5 voc_dec_volume(); /* decrement volume */
396 5 print_voice_vol(Voc_get_volume()); /* display new level */
397 5 break;
398 5
399 5 case KEY_STOP:
400 5 voc_play_stop(); /* stop playing */
401 5 Fclose();
402 5 voice_state = VOICE_PLAY_STOP;
403 5 break;
404 5
405 5 case KEY_LOCK:
406 5 print_kbd_lock(); /* print keyboard status */
407 5 break;
408 5
409 5 default:
410 5 break;
411 5 }
412 4 gl_key_press = FALSE; /* ack key usage */
413 4 }
414 3 break;
415 3 }
416 2
417 2
418 2 case VOICE_PLAY_NEW:
419 2 {
420 3 voice_state = VOICE_PLAY_INIT; /* new message */
421 3 print_file_name(); /* display file name */
422 3 break;
423 3 }
424 2
425 2
426 2 case VOICE_PLAY_STOP:
C51 COMPILER V6.20c VOICE_TASK 07/10/2002 15:17:43 PAGE 8
427 2 {
428 3 disp_clock_reset(); /* reset clock timer */
429 3 print_file_type(); /* display wav icon */
430 3 voice_state = VOICE_IDLE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -