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

📄 song_task.lst

📁 基于AT89C51SND1的MP3的程序设计(包括播放mp3和录音功能)
💻 LST
📖 第 1 页 / 共 3 页
字号:
 228   5                gl_key_press = FALSE;             /* ack key usage */
 229   5              }
 230   4            }
 231   3            break;
 232   3          }
 233   2      
 234   2      
 235   2          case SONG_IDLE:                         /* no file openned */
 236   2          {
 237   3            if (gl_key_press)                     /* a key is pressed? */
 238   3            {
 239   4              switch (gl_key)
 240   4              {
C51 COMPILER V7.06   SONG_TASK                                                             05/05/2005 12:12:04 PAGE 5   

 241   5                case KEY_PLAY:
 242   5                  if (File_type() == FILE_DIR)
 243   5                  {
 244   6                    file_entry_dir(FILE_MP3 | FILE_DIR);  /* goto sub-directory */ 
 245   6                    print_file_name();            /* display directory name */
 246   6                  }
 247   5                  else
 248   5                  { /* file_type is MP3 */
 249   6                    song_state = SONG_INIT;
 250   6                  }
 251   5                  break;
 252   5      
 253   5                case KEY_NEXT:
 254   5                  file_seek_next(FILE_MP3 | FILE_DIR, TRUE);  /* select next song with loop */
 255   5                  print_file_name();              /* display file name */
 256   5                  break;
 257   5      
 258   5                case KEY_PREV:
 259   5                  file_seek_prev(FILE_MP3 | FILE_DIR, TRUE);  /* select previous song */
 260   5                  print_file_name();              /* display file name */
 261   5                  break;
 262   5      
 263   5                case KEY_INC:
 264   5                  song_snd_inc();                 /* increment selected control */
 265   5                  print_sound_level();            /* display new level */
 266   5                  break;
 267   5      
 268   5                case KEY_DEC:
 269   5                  song_snd_dec();                 /* decrement selected control */
 270   5                  print_sound_level();            /* display new level */
 271   5                  break;
 272   5      
 273   5                case KEY_SOUND:
 274   5                  song_snd_select();              /* select next sound control */
 275   5                  print_sound();                  /* display selected sound icon */
 276   5                  print_sound_level();            /* display new level */
 277   5                  break;
 278   5      
 279   5                case KEY_PARENT:
 280   5                  File_goto_parent(FILE_MP3 | FILE_DIR); /* goto parent directory */ 
 281   5                  print_file_name();              /* display first file name */
 282   5                  break;
 283   5      
 284   5                case KEY_MODE:
 285   5                  mode_set_init();                /* exit from song task */
 286   5                  disp_name_stop();
 287   5                  song_state = SONG_START;
 288   5                  break;
 289   5      
 290   5                case KEY_MEM:
 291   5                  mem_select_next();              /* select next memory */
 292   5                  disp_name_stop();
 293   5                  song_state = SONG_START;
 294   5                  break;
 295   5      
 296   5                default:
 297   5                  break;
 298   5              }
 299   4              gl_key_press = FALSE;               /* ack key usage */
 300   4            }
 301   3            else
 302   3            { /* check card presence */
C51 COMPILER V7.06   SONG_TASK                                                             05/05/2005 12:12:04 PAGE 6   

 303   4              if (mem_check_card() == KO)
 304   4              {
 305   5                disp_name_stop();
 306   5                mem_select_next();
 307   5                song_state = SONG_START;          /* card has been unplugged */
 308   5              }
 309   4            }
 310   3            break;
 311   3          }
 312   2      
 313   2      
 314   2          case SONG_INIT:
 315   2          {
 316   3            disp_clock_reset();                   /* reset clock timer */
 317   3            if (Fopen(READ) == OK)
 318   3            {
 319   4              if (song_init() != SONG_NO_ERR)     /* init song playing */
 320   4              {
 321   5                song_stop();                      /* stop playing song */
 322   5                Fclose();
 323   5                loop = song_loop;
 324   5                song_state = SONG_NEXT;
 325   5              }
 326   4              else
 327   4              {
 328   5                song_state = SONG_PLL;
 329   5              }
 330   4            }
 331   3            else
 332   3            {
 333   4              song_state = SONG_ERROR;
 334   4            }
 335   3            break;
 336   3          }
 337   2      
 338   2      
 339   2          case SONG_PLL:
 340   2          {
 341   3            if (Pll_get_lock())                   /* pll locked? */
 342   3            {
 343   4              song_start();                       /* start playing song */
 344   4              disp_clock_start();                 /* start clock timer */
 345   4              print_state_play();                 /* display play icon */
 346   4              song_state = SONG_PLAY;
 347   4            }
 348   3            break;
 349   3          }
 350   2      
 351   2      
 352   2          case SONG_PLAY:
 353   2          {
 354   3            if (Feof() == TRUE)
 355   3            { /* end of file reached */
 356   4              song_stop();                        /* stop playing song */
 357   4              Fclose();
 358   4              loop = song_loop;
 359   4              song_state = SONG_NEXT;
 360   4                gl_key_press = FALSE;             /* no key usage */
 361   4              }
 362   3      
 363   3            if (gl_key_press)                     /* a key is pressed? */
 364   3            {
C51 COMPILER V7.06   SONG_TASK                                                             05/05/2005 12:12:04 PAGE 7   

 365   4              switch (gl_key)
 366   4              {
 367   5                case KEY_PAUSE:
 368   5                  Aud_song_pause();               /* suspend sample request */
 369   5                  disp_clock_stop();              /* suspend clock timer */
 370   5                  print_state_pause();            /* display pause icon */
 371   5                  song_state = SONG_PAUSE;
 372   5                  break;
 373   5      
 374   5                case KEY_NEXT:
 375   5                  song_pause();                   /* pause playing song */
 376   5                  disp_clock_stop();              /* suspend clock timer */
 377   5                  Fclose();
 378   5                  loop = TRUE;                    /* keypad action so loop */
 379   5                  song_state = SONG_NEXT;
 380   5                  break;
 381   5      
 382   5                case KEY_PREV:
 383   5                  song_pause();                   /* pause playing song */
 384   5                  disp_clock_stop();              /* suspend clock timer */
 385   5                  Fclose();
 386   5                  loop = TRUE;
 387   5                  song_state = SONG_PREV;
 388   5                  break;
 389   5      
 390   5                case KEY_INC:
 391   5                  song_snd_inc();                 /* increment selected control */
 392   5                  print_sound_level();            /* display new level */
 393   5                  break;
 394   5      
 395   5                case KEY_DEC:
 396   5                  song_snd_dec();                 /* decrement selected control */
 397   5                  print_sound_level();            /* display new level */
 398   5                  break;
 399   5      
 400   5                case KEY_SOUND:
 401   5                  song_snd_select();              /* select next sound control */
 402   5                  print_sound();                  /* display selected sound icon */
 403   5                  print_sound_level();            /* display new level */
 404   5                  break;
 405   5      
 406   5                case KEY_REPEAT:
 407   5                  song_loop = ~song_loop;         /* display repeat or not */
 408   5                  print_repeat(song_loop);
 409   5                  break;
 410   5      
 411   5                case KEY_STOP:
 412   5                  song_stop();                    /* stop playing song */
 413   5                  Fclose();
 414   5                  song_state = SONG_STOP;
 415   5                  break;
 416   5      
 417   5                default:
 418   5                  break;
 419   5              }
 420   4              gl_key_press = FALSE;               /* ack key usage */
 421   4            }
 422   3            break;
 423   3          }
 424   2      
 425   2      
 426   2          case SONG_PAUSE:                        /* one file openned */
C51 COMPILER V7.06   SONG_TASK                                                             05/05/2005 12:12:04 PAGE 8   

 427   2          {
 428   3            if (gl_key_press)                     /* a key is pressed? */
 429   3            {
 430   4              switch (gl_key)
 431   4              {
 432   5                case KEY_PLAY:
 433   5                  disp_clock_start();             /* restart clock timer */
 434   5                  Aud_song_play();                /* restart sample request */
 435   5                  print_state_play();             /* display play icon */
 436   5                  song_state = SONG_PLAY;
 437   5                  break;
 438   5      
 439   5                case KEY_NEXT:
 440   5                  song_pause();                   /* pause playing song */
 441   5                  Fclose();
 442   5                  loop = TRUE;                    /* keypad action so loop */
 443   5                  song_state = SONG_NEXT;
 444   5                  break;
 445   5      
 446   5                case KEY_PREV:
 447   5                  song_pause();                   /* pause playing song */
 448   5                  Fclose();
 449   5                  loop = TRUE;                    /* keypad action so loop */
 450   5                  song_state = SONG_PREV;
 451   5                  break;
 452   5      
 453   5                case KEY_INC:
 454   5                  song_snd_inc();                 /* increment selected control */
 455   5                  print_sound_level();            /* display new level */
 456   5                  break;
 457   5      
 458   5                case KEY_DEC:
 459   5                  song_snd_dec();                 /* decrement selected control */
 460   5                  print_sound_level();            /* display new level */
 461   5                  break;
 462   5      

⌨️ 快捷键说明

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