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

📄 voice_task.lst

📁 基于AT89C51SND1的MP3的程序设计(包括播放mp3和录音功能)
💻 LST
📖 第 1 页 / 共 3 页
字号:
 228   3            else
 229   3            { /* check card presence */
 230   4              if (mem_check_card() == KO)
 231   4              {
 232   5                mem_select_next();
 233   5                voice_state = VOICE_START;        /* card has been unplugged */
 234   5              }
 235   4            }
 236   3            break;
 237   3          }
 238   2      
 239   2      
 240   2          case VOICE_PLAY_INIT:
C51 COMPILER V7.06   VOICE_TASK                                                            05/05/2005 12:12:04 PAGE 5   

 241   2          {
 242   3            disp_clock_reset();                   /* reset clock timer */
 243   3            if (Fopen(READ) != OK)
 244   3            {
 245   4              voice_state = VOICE_ERROR;
 246   4            }
 247   3            else
 248   3            {
 249   4              Fseek(WAV_HEADER_SIZE);
 250   4              voc_play_init();                    /* init voice playing */
 251   4              voice_state = VOICE_PLL;
 252   4            }
 253   3            break;
 254   3          }
 255   2      
 256   2      
 257   2          case VOICE_PLL:
 258   2          {
 259   3            if (Pll_get_lock())                   /* pll locked? */
 260   3            {
 261   4              voc_play_start();                   /* start playing voice */
 262   4              disp_clock_start();                 /* start clock timer */
 263   4              print_state_play();                 /* display play icon */
 264   4              voc_cpt = 0;
 265   4              voice_state = VOICE_PLAY;
 266   4            }
 267   3            break;
 268   3          }
 269   2      
 270   2      
 271   2          case VOICE_PLAY:                        /* one file openned */
 272   2          {
 273   3            while ((Byte)voc_cpt != gl_pointer)
 274   3            {
 275   4              voice_buffer[(Byte)voc_cpt] = Fgetc();
 276   4              voc_cpt++;
 277   4            }
 278   3            if (gl_mem_failure)
 279   3            { /* hardware failure */
 280   4              voc_play_stop();                    /* stop playing */
 281   4              Fclose();
 282   4              voice_state = VOICE_PLAY_STOP;
 283   4              gl_key_press = FALSE;               /* no key usage */
 284   4              break;
 285   4            }
 286   3            if (Feof())
 287   3            { /* end of file reached */
 288   4              voc_play_stop();                    /* stop playing */
 289   4              Fclose();
 290   4              voice_state = VOICE_PLAY_STOP;
 291   4              gl_key_press = FALSE;               /* no key usage */
 292   4              break;
 293   4            }      
 294   3            if (gl_key_press)                     /* a key is pressed? */
 295   3            {
 296   4              switch (gl_key)
 297   4              {
 298   5                case KEY_PAUSE:
 299   5                  Voc_play_pause();               /* suspend playing */
 300   5                  disp_clock_stop();              /* suspend clock timer */
 301   5                  print_state_pause();            /* display pause icon */
 302   5                  voice_state = VOICE_PLAY_PAUSE;
C51 COMPILER V7.06   VOICE_TASK                                                            05/05/2005 12:12:04 PAGE 6   

 303   5                  break;
 304   5        
 305   5                case KEY_NEXT:
 306   5                  voc_play_stop();                /* stop playing */
 307   5                  disp_clock_stop();              /* suspend clock timer */
 308   5                  Fclose();
 309   5                  file_seek_next(FILE_WAV, TRUE); /* select next message & loop */
 310   5                  voice_state = VOICE_PLAY_NEW;
 311   5                  break;
 312   5        
 313   5                case KEY_PREV:
 314   5                  voc_play_stop();                /* stop playing */
 315   5                  disp_clock_stop();              /* suspend clock timer */
 316   5                  Fclose();
 317   5                  file_seek_prev(FILE_WAV, TRUE);       /* select previous message */
 318   5                  voice_state = VOICE_PLAY_NEW;
 319   5                  break;
 320   5        
 321   5                case KEY_INC:
 322   5                  voc_inc_volume();               /* increment volume */
 323   5                  print_voice_vol(Voc_get_volume());  /* display new level */
 324   5                  break;
 325   5        
 326   5                case KEY_DEC:
 327   5                  voc_dec_volume();               /* decrement volume */
 328   5                  print_voice_vol(Voc_get_volume());  /* display new level */
 329   5                  break;
 330   5        
 331   5                case KEY_REC:
 332   5                  voc_play_stop();                /* stop playing */
 333   5                  Fclose();
 334   5                  voice_state = VOICE_DELETE;     /* remove file from FAT */
 335   5                  break;
 336   5      
 337   5                case KEY_STOP:
 338   5                  voc_play_stop();                /* stop playing */
 339   5                  Fclose();
 340   5                  voice_state = VOICE_PLAY_STOP;
 341   5                  break;
 342   5        
 343   5                default:
 344   5                  break;
 345   5              }
 346   4              gl_key_press = FALSE;               /* ack key usage */
 347   4            }
 348   3            break;
 349   3          }
 350   2      
 351   2      
 352   2          case VOICE_PLAY_PAUSE:                  /* one file openned */
 353   2          {
 354   3            if (gl_key_press)                     /* a key is pressed? */
 355   3            {
 356   4              switch (gl_key)
 357   4              {
 358   5                case KEY_PLAY:
 359   5                  disp_clock_start();             /* restart clock timer */
 360   5                  voc_play_start();               /* restart sample request */
 361   5                  print_state_play();             /* display play icon */
 362   5                  voice_state = VOICE_PLAY;
 363   5                  break;
 364   5      
C51 COMPILER V7.06   VOICE_TASK                                                            05/05/2005 12:12:04 PAGE 7   

 365   5                case KEY_NEXT:
 366   5                  voc_play_stop();
 367   5                  Fclose();
 368   5                  file_seek_next(FILE_WAV, TRUE); /* select next message with loop */
 369   5                  print_file_name();              /* display file name */
 370   5                  voice_state = VOICE_IDLE;
 371   5                  break;
 372   5      
 373   5                case KEY_PREV:
 374   5                  voc_play_stop();
 375   5                  Fclose();
 376   5                  file_seek_prev(FILE_WAV, TRUE);       /* select previous message */
 377   5                  print_file_name();              /* display file name */
 378   5                  voice_state = VOICE_IDLE;
 379   5                  break;
 380   5      
 381   5                case KEY_INC:
 382   5                  voc_inc_volume();               /* increment volume */
 383   5                  print_voice_vol(Voc_get_volume());  /* display new level */
 384   5                  break;
 385   5      
 386   5                case KEY_DEC:
 387   5                  voc_dec_volume();               /* decrement volume */
 388   5                  print_voice_vol(Voc_get_volume());  /* display new level */
 389   5                  break;
 390   5      
 391   5                case KEY_STOP:
 392   5                  voc_play_stop();                /* stop playing */
 393   5                  Fclose();
 394   5                  voice_state = VOICE_PLAY_STOP;
 395   5                  break;
 396   5      
 397   5                default:
 398   5                  break;
 399   5              }
 400   4              gl_key_press = FALSE;               /* ack key usage */
 401   4            }
 402   3            break;
 403   3          }
 404   2      
 405   2      
 406   2          case VOICE_PLAY_NEW:
 407   2          {
 408   3            voice_state = VOICE_PLAY_INIT;        /* new message */
 409   3            print_file_name();                    /* display file name */
 410   3            break;
 411   3          }
 412   2      
 413   2      
 414   2          case VOICE_PLAY_STOP:
 415   2          {
 416   3            disp_clock_reset();                   /* reset clock timer */
 417   3            print_file_type();                    /* display wav icon */
 418   3            disp_end_of_play();
 419   3            voice_state = VOICE_IDLE;
 420   3            break;
 421   3          }
 422   2      
 423   2          case VOICE_NO_MSG:
 424   2          {
 425   3            if (gl_key_press)                     /* a key is pressed? */
 426   3            {
C51 COMPILER V7.06   VOICE_TASK                                                            05/05/2005 12:12:04 PAGE 8   

 427   4              switch (gl_key)
 428   4              {
 429   5                case KEY_MEM:
 430   5                  mem_select_next();              /* select next memory */
 431   5                  voice_state = VOICE_START;
 432   5                  break;
 433   5      
 434   5              case KEY_PLAY:
 435   5              print_state_play();
 436   5              voice_state = VOICE_PLAY_STOP;
 437   5              break;
 438   5      
 439   5                case KEY_REC:
 440   5                  voice_state = VOICE_REC_INIT;
 441   5                  break;
 442   5      
 443   5                case KEY_MODE:
 444   5                  mode_set_init();                /* exit from voice task */
 445   5                  voice_state = VOICE_START;
 446   5                  break;
 447   5              }
 448   4              gl_key_press = FALSE;               /* ack key usage */
 449   4            }
 450   3            else
 451   3            { /* check card presence */
 452   4              if (mem_check_card() == KO)
 453   4              {
 454   5                mem_select_next();
 455   5                voice_state = VOICE_START;        /* card has been unplugged */
 456   5              }
 457   4            }
 458   3            break;
 459   3          }
 460   2      
 461   2      
 462   2          case VOICE_REC_INIT:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -