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