📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 03/02/2006 23:11:50 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /************************************************************************************
2 本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负
3
4 AT89C51SND1C 解码芯片做的硬盘MP3,软件还在完善中,现在只支持一块硬盘,一个分区,
5 至少可支持15层目录。只支持FAT32文件系统。支持USB1.1下载文件,速度300KB/S左右。
6 7.5*2个汉字液晶显示。可显示歌曲名,当前曲号等。可进行前后选曲。部分MP3文件不能解码。
7 本人联系方法:QQ: 156872359 E_mail: Computer-lov@163.com 愿与大家共同学习。
8 *************************************************************************************/
9
10
11 /* MAIN.C File
12 The MP3 main file
13 Created by Computer-lov. Date: 2005.3.19
14 Last edited date: 2005.5.31
15 version 1.1
16 Copyright (c) 2005 Computer-lov
17 All rigths reserved
18 */
19
20 #include "AT89C51SND1C.H"
21 #include "ide.h"
22 #include "hardware.h"
23 #include "file_system.h"
24 #include "Initial.h"
25 #include "keyboard.h"
26 #include "MP3.H"
27 #include "LCD.H"
28
29 void usb(void);
30
31 //////////////////////////////////////////// 主函数 ///////////////////////////////
32 void main(void)
33 {
34 1 unsigned char i;
35 1 unsigned char key_press_time;
36 1 unsigned char hard_disk_sleep=0;
37 1
38 1 system_initial(); //初始化
39 1 status=START;
40 1 driver_number=0; //选择第一个分区
41 1 key=0;
42 1 function=FUN_SEL; //歌曲选择状态
43 1 while(1)
44 1 {
45 2 switch (status)
46 2 {
47 3 case START: //开机
48 3 {
49 4 vol=10;
50 4 bas=10;
51 4 med=2;
52 4 tre=10;
53 4 set_vol(vol);
54 4 set_vor(vol);
55 4 set_bas(bas);
C51 COMPILER V7.06 MAIN 03/02/2006 23:11:50 PAGE 2
56 4 set_med(med);
57 4 set_tre(tre); //音量等初始化
58 4 LCD_go_home();
59 4 for(i=0;i<14;i++)write_LCD_data(((unsigned char *)dir_name)[i]);
60 4 LCD_line_feed();
61 4 prints("停止 ");
62 4 item_count=0;
63 4 while(!key);
64 4 if(key==KEY_FUN){status=USB;break;}
65 4 status=STOP;
66 4 break;
67 4
68 4 }
69 3 case STOP:{ //停止
70 4 LCD_go_home();
71 4 for(i=0;i<14;i++)write_LCD_data(((unsigned char *)dir_name)[i]);
72 4 while(!key);
73 4 switch (key)
74 4 {
75 5 case KEY_OK:
76 5 {
77 6 key_press_time=0;
78 6 while(!(P1_3))
79 6 {
80 7 delayXms(10);
81 7 key_press_time++;
82 7 if(key_press_time==130)break;
83 7 }
84 6 if(key_press_time==130)
85 6 {
86 7 write_IDE_command(IDE_Sleep);
87 7 LCD_line_feed();
88 7 prints("现在可以关机了");
89 7 hard_disk_sleep=0xFF;
90 7 break;
91 7 }
92 6 if(hard_disk_sleep)
93 6 {
94 7 reset_IDE();
95 7 hard_disk_sleep=0;
96 7 LCD_line_feed();
97 7 prints(" ");
98 7 }
99 6 if(file_or_folder==IS_MP3FILE)
100 6 {
101 7 get_nst_file();
102 7 status=PLAY;
103 7 }
104 6 if(file_or_folder==IS_FOLDER)
105 6 {
106 7 enter_dir();
107 7 get_next_item();
108 7 LCD_line_feed();
109 7 for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
110 7 }
111 6 break;
112 6 }
113 5 case KEY_UP:
114 5 {
115 6 get_pre_item();
116 6 LCD_line_feed();
117 6 for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
C51 COMPILER V7.06 MAIN 03/02/2006 23:11:50 PAGE 3
118 6 break;
119 6 }
120 5 case KEY_DOWN:
121 5 {
122 6 get_next_item();
123 6 LCD_line_feed();
124 6 for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
125 6 break;
126 6 }
127 5 case KEY_FUN:
128 5 {
129 6 exit_dir();
130 6 get_next_item();
131 6 LCD_line_feed();
132 6 for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
133 6 break;
134 6 }
135 5 }key=0;break;
136 4 }
137 3
138 3 case PLAY:{play();break;} //播放
139 3 case USB: {usb();break;} //USB下载
140 3 key=0;
141 3 }
142 2 }
143 1 }
144 /////////////////////////////////////////////////////////////////////////////////////////
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 455 ----
CONSTANT SIZE = 46 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = ---- ----
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 + -