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

📄 voice_task.lst

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