📄 voice_task.lst
字号:
431 3 break;
432 3 }
433 2
434 2
435 2 case VOICE_NO_MSG:
436 2 {
437 3 if (gl_key_press) /* a key is pressed? */
438 3 {
439 4 switch (gl_key)
440 4 {
441 5 case KEY_MEM:
442 5 mem_select_next(); /* select next memory */
443 5 voice_state = VOICE_START;
444 5 break;
445 5
446 5 case KEY_REC:
447 5 voice_state = VOICE_REC_INIT;
448 5 break;
449 5
450 5 case KEY_MODE:
451 5 mode_set_init(); /* exit from voice task */
452 5 voice_state = VOICE_START;
453 5 break;
454 5
455 5 case KEY_LOCK:
456 5 print_kbd_lock(); /* print keyboard status */
457 5 break;
458 5 }
459 4 gl_key_press = FALSE; /* ack key usage */
460 4 }
461 3 else
462 3 { /* check card presence */
463 4 if (mem_check_card() == KO)
464 4 {
465 5 mem_select_next();
466 5 voice_state = VOICE_START; /* card has been unplugged */
467 5 }
468 4 }
469 3 break;
470 3 }
471 2
472 2
473 2 case VOICE_REC_INIT:
474 2 {
475 3 disp_clock_reset(); /* reset clock timer */
476 3 if (Fopen(WRITE) != OK)
477 3 {
478 4 voice_state = VOICE_ERROR;
479 4 }
480 3 else
481 3 {
482 4 voc_cpt = 0;
483 4 print_state_record(); /* display record icon */
484 4 voc_rec_init();
485 4 disp_clock_start(); /* start clock timer */
486 4 voice_state = VOICE_RECORD;
487 4 }
488 3 break;
C51 COMPILER V6.20c VOICE_TASK 07/10/2002 15:17:43 PAGE 9
489 3 }
490 2
491 2
492 2 case VOICE_RECORD:
493 2 {
494 3 while ((Byte)voc_cpt != gl_pointer)
495 3 {
496 4 Fputc(gl_buffer[(Byte)voc_cpt]);
497 4 voc_cpt++;
498 4 if (Feof())
499 4 {
500 5 Voc_rec_stop(); /* stop voice sampling */
501 5 voice_state = VOICE_REC_STOP;
502 5 break; /* exit while loop */
503 5 }
504 4 }
505 3
506 3 if (gl_key_press) /* a key is pressed? */
507 3 {
508 4 switch (gl_key)
509 4 {
510 5 case KEY_PAUSE:
511 5 disp_clock_stop(); /* suspend clock timer */
512 5 Voc_rec_pause();
513 5 print_state_pause(); /* display pause icon */
514 5 voice_state = VOICE_REC_PAUSE;
515 5 break;
516 5
517 5 case KEY_STOP:
518 5 Voc_rec_stop(); /* stop voice sampling */
519 5 voice_state = VOICE_REC_STOP;
520 5 break;
521 5
522 5 case KEY_REC:
523 5 Voc_rec_stop(); /* stop voice sampling */
524 5 voice_state = VOICE_DELETE; /* mark file as empty */
525 5 break;
526 5
527 5 case KEY_LOCK:
528 5 print_kbd_lock(); /* print keyboard status */
529 5 break;
530 5
531 5 default:
532 5 break;
533 5 }
534 4 gl_key_press = FALSE; /* ack key usage */
535 4 }
536 3 break;
537 3 }
538 2
539 2
540 2 case VOICE_REC_PAUSE:
541 2 {
542 3 if (gl_key_press) /* a key is pressed? */
543 3 {
544 4 switch (gl_key)
545 4 {
546 5 case KEY_REC:
547 5 disp_clock_start(); /* restart clock timer */
548 5 print_state_record(); /* display record icon */
549 5 Voc_rec_start(); /* restart sampling */
550 5 voice_state = VOICE_RECORD;
C51 COMPILER V6.20c VOICE_TASK 07/10/2002 15:17:43 PAGE 10
551 5 break;
552 5
553 5 case KEY_STOP:
554 5 Voc_rec_stop(); /* stop voice sampling */
555 5 voice_state = VOICE_REC_STOP;
556 5 break;
557 5
558 5 case KEY_LOCK:
559 5 print_kbd_lock(); /* print keyboard status */
560 5 break;
561 5
562 5 default:
563 5 break;
564 5 }
565 4 gl_key_press = FALSE; /* ack key usage */
566 4 }
567 3 break;
568 3 }
569 2
570 2
571 2 case VOICE_REC_STOP:
572 2 {
573 3 /* update wave header */
574 3 Fseek(0); /* beginning of file */
575 3 Fputc(((Byte*)&gl_wav_header)[0]);
576 3 Fputc(((Byte*)&gl_wav_header)[1]);
577 3 Fputc(((Byte*)&gl_wav_header)[2]);
578 3 Fputc(((Byte*)&gl_wav_header)[3]);
579 3 Fputc(((Byte*)&voc_cpt)[3]); /* wave length */
580 3 Fputc(((Byte*)&voc_cpt)[2]);
581 3 Fputc(((Byte*)&voc_cpt)[1]);
582 3 Fputc(((Byte*)&voc_cpt)[0]);
583 3
584 3 for (i = 8; i != WAV_HEADER_SIZE-4; i++)
585 3 {
586 4 Fputc(((Byte code *)&gl_wav_header)[i]);
587 4 }
588 3 Fputc(((Byte*)&voc_cpt)[3]); /* data length */
589 3 Fputc(((Byte*)&voc_cpt)[2]);
590 3 Fputc(((Byte*)&voc_cpt)[1]);
591 3 Fputc(((Byte*)&voc_cpt)[0]);
592 3 for (i = 255; i != 0; i--)
593 3 {
594 4 Fputc(0x80); /* fill first sector data */
595 4 }
596 3 for (i = 257 - WAV_HEADER_SIZE; i != 0; i--)
597 3 {
598 4 Fputc(0x80); /* fill first sector data */
599 4 }
600 3 Fclose();
601 3 disp_clock_reset(); /* reset clock timer */
602 3 print_file_type(); /* display wav icon */
603 3 voice_state = VOICE_IDLE;
604 3 break;
605 3 }
606 2
607 2
608 2 case VOICE_ERROR:
609 2 {
610 3 disp_clock_reset(); /* reset clock timer */
611 3 print_state_error(); /* display error icon */
612 3 disp_name_stop();
C51 COMPILER V6.20c VOICE_TASK 07/10/2002 15:17:43 PAGE 11
613 3 voice_state = VOICE_IDLE;
614 3 break;
615 3 }
616 2
617 2
618 2 case VOICE_DELETE:
619 2 {
620 3 /* update wave header */
621 3 Fseek(0); /* beginning of file */
622 3 for (i = 0; i != WAV_HEADER_SIZE; i++)
623 3 {
624 4 Fputc(((Byte code *)&gl_wav_header)[i]);
625 4 }
626 3 Fclose();
627 3 disp_clock_reset(); /* reset clock timer */
628 3 print_file_type(); /* display wav icon */
629 3 voice_state = VOICE_IDLE;
630 3 break;
631 3 }
632 2 }
633 1 }
634
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1214 ----
CONSTANT SIZE = 34 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 1
IDATA SIZE = 1 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -