📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 03/07/2005 09:36:39 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE MAIN.C LARGE ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /*********************************************************************************************************
3 **
4 ** MP3 and U Disk Source Code
5 ** Copyright (c) 2005,北京博创兴业科技有限公司
6 ** All Rights Reserved
7 ** V3.00.0
8 **
9 **--------------文件信息--------------------------------------------------------------------------------
10 **文 件 名: MAIN.C
11 **创 建 人: Frank Wang Xiao Jun
12 **创 建 日 期: 2003.12
13 **描 述: ATMEL AT89C51SND1 U盘和MP3播放功能的主函数
14 **
15 **--------------历史版本信息----------------------------------------------------------------------------
16 ** 创建人: Frank Wang Xiao Jun
17 ** 版 本: V1.00.0
18 ** 日 期: 2003.12
19 ** 描 述: ATMEL AT89C51SND1 U盘和MP3播放功能的主函数
20 **
21 **------------------------------------------------------------------------------------------------------
22 ** 修改人: Kent Zou Ying
23 ** 版 本: V2.00.0
24 ** 日 期: 2004.5
25 ** 描 述: ATMEL AT89C51SND1 U盘和MP3播放功能的主函数
26 **
27 **--------------当前版本修订------------------------------------------------------------------------------
28 ** 修改人: Phoenix Hua Yue Guang
29 ** 版 本: V3.00.0
30 ** 日 期: 2005.3
31 ** 描 述: ATMEL AT89C51SND1 U盘和MP3播放功能的主函数
32 **
33 **------------------------------------------------------------------------------------------------------
34 ********************************************************************************************************/
35 #include "REGSND1.H"
36 #include "UART.H"
37 /** 宏定义USB端点中断的标志位 **/
38 #define EP2 (0x1<<2)
39 #define EP1 (0x1<<1)
40 #define EP0 (0x1<<0)
41
42 #define EKB (0x10)
43 /** 宏定义MP3播放功能的标志位 **/
44 #define SELECTSONG 3
45 #define PLAY 1
46 #define STOP 0
47 /** 声明外部函数 **/
48 extern void AtmelUSBInit();
49 extern void EpEnable();
50 extern void Ep0();
51 extern void main_txdone();
52 extern void main_rxdone();
53 extern void Flash_Reset(void);
54
55 extern void MP3_Init();
C51 COMPILER V7.50 MAIN 03/07/2005 09:36:39 PAGE 2
56 extern void PlayInit(unsigned char *SongName);
57 extern unsigned char GetMP3List(void);
58
59 extern void Func();
60 extern void Next();
61 extern void Previous();
62 extern void PlayPause();
63 extern void PlayMP3(unsigned char *SongName);
64 extern void KeyBoardInit();
65
66 /** 定义MP3播放相关的变量 **/
67 unsigned char SONG[88] = {'M', 'O', 'O', 'N', ' ', ' ', ' ', ' ', 'T', 'X', 'T'};
68 unsigned char data CurrentFun = SELECTSONG;
69 unsigned char data PlayState = STOP;
70 unsigned char data NowPlaying = 0;
71 unsigned char data NumofSong = 0;
72 unsigned char data MP3InitFlag;
73
74
75 void key_interrupt() interrupt 11
76 {
77 1 unsigned char i = 200;
78 1 EA = 0; //关中断
79 1 IEN1 &= (~EKB); //Enable KeyBoard Interrupt
80 1
81 1 while (i)
82 1 {
83 2 i--;
84 2 }
85 1
86 1 i = KBSTA; //取键盘中断位
87 1 switch (i)
88 1 { //依次处理四个键中的某个键
89 2 case 1 : Func(); break; //被按下时的情况
90 2 case 2 : Next(); break;
91 2 case 4 : Previous(); break;
92 2 case 8 : PlayPause(); break;
93 2 default : break;
94 2 }
95 1 IEN1 |= EKB; //Enable KeyBoard Interrupt
96 1
97 1 EA = 1; //开中断
98 1 return;
99 1 }
100
101 void main()
102 {
103 1 printu(">>>> UP-TECH MP3 USB Disk V3.00 <<<<\n");
104 1 CKCON|=0x01; //使能该单片机的X2模式
105 1 Flash_Reset(); //Flash 芯片复位
106 1 /* if(P3_4) //此引脚为USB接入检测端
107 1 { //在此将设备做为U盘处理
108 1 printu("Entering USB Mode...\n"); //输出进入U盘功能的信息
109 1 AtmelUSBInit(); //USB寄存器配置函数
110 1 EpEnable(); //使能有关USB的配置
111 1 while(1)
112 1 {
113 1 if (UEPINT & EP0) Ep0();
114 1 if (UEPINT & EP1) main_txdone();
115 1 if (UEPINT & EP2) main_rxdone();
116 1
117 1 UEPINT=0;
C51 COMPILER V7.50 MAIN 03/07/2005 09:36:39 PAGE 3
118 1 }
119 1 }
120 1 else */ //进入MP3播放模式
121 1 {
122 2 printu("Entering MP3 Mode...\n");
123 2 MP3_Init(); //MP3初始化
124 2 KeyBoardInit(); //键盘初始化
125 2
126 2 MP3InitFlag = 1;
127 2 EA = 1; //开中断,键盘可以开始工作
128 2 P3_5 = 0; //打开USB灯亮
129 2
130 2 NumofSong = GetMP3List(); //得到U盘中的MP3歌曲列表
131 2 printuf("Song:%x\n", NumofSong); //输出歌曲总数信息
132 2 if(NumofSong == 0)
133 2 {
134 3 printu("There is no MP3 file in USB Disk!\n");
135 3 P3_5 = 1; //关闭指示LED
136 3 }
137 2
138 2 while(1)
139 2 {
140 3 if(NumofSong != 0)
141 3 {
142 4 if(MP3InitFlag)
143 4 {
144 5 PlayInit(&SONG[11 * NowPlaying]);
145 5 MP3InitFlag = 0;
146 5 }
147 4 PlayMP3(&SONG[11 * NowPlaying]); //如果处于播放状态,则播放当前歌曲
148 4 }
149 3 if(NowPlaying == NumofSong)
150 3 {
151 4 PlayState = STOP; //全部歌曲播放完了,播放器停止
152 4 // NowPlaying = 0; //循环播放
153 4 }
154 3 P3_5 =~P3_5; //指示LED闪烁
155 3 }
156 2
157 2 }
158 1
159 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 236 ----
CONSTANT SIZE = 104 ----
XDATA SIZE = 88 ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
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 + -