⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 voice_task.lst

📁 这是atmel公司的89C51SND1C的mp3源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -