📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 02/08/2007 11:18:08 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "REGSND1.H"
3 #include "UART.H"
4 /** 宏定义USB端点中断的标志位 **/
5 #define EP2 (0x1<<2)
6 #define EP1 (0x1<<1)
7 #define EP0 (0x1<<0)
8
9 #define EKB (0x10)
10 /** 宏定义MP3播放功能的标志位 **/
11 #define SELECTSONG 3
12 #define PLAY 1
13 #define STOP 0
14 /** 声明外部函数 **/
15 extern void AtmelUSBInit();
16 extern void EpEnable();
17 extern void Ep0();
18 extern void main_txdone();
19 extern void main_rxdone();
20 extern void Flash_Reset(void);
21
22 extern void MP3_Init();
23 extern void PlayInit(unsigned char *SongName);
24 extern unsigned char GetMP3List(void);
25
26 extern void Func();
27 extern void Next();
28 extern void Previous();
29 extern void PlayPause();
30 extern void PlayMP3(unsigned char *SongName);
31 extern void KeyBoardInit();
32 extern void Format_Fat12Media(void);
33 //extern void ReadPage(unsigned int block, unsigned int page, unsigned char *pPage)
34 /** 定义MP3播放相关的变量 **/
35 unsigned char SONG[88] = {'M', 'O', 'O', 'N', ' ', ' ', ' ', ' ', 'T', 'X', 'T'};
36 unsigned char data CurrentFun = SELECTSONG;
37 unsigned char data PlayState = STOP;
38 unsigned char data NowPlaying = 0;
39 unsigned char data NumofSong = 0;
40 unsigned char data MP3InitFlag;
41
42
43 void key_interrupt() interrupt 11
44 {
45 1
46 1 unsigned char i = 200;
47 1 EA = 0; //关中断
48 1 IEN1 &= (~EKB); //Enable KeyBoard Interrupt
49 1 while (i)
50 1 {
51 2 i--;
52 2 }
53 1
54 1 i = KBSTA; //取键盘中断位
55 1 switch (i)
C51 COMPILER V7.50 MAIN 02/08/2007 11:18:08 PAGE 2
56 1 { //依次处理四个键中的某个键
57 2 case 2 : {printu(">>>> FUNC <<<<\n"); Func(); break; } //被按下时的情况
58 2 case 8 : { printu(">>>> NEXT <<<<\n"); Next(); break;}
59 2 case 4 : { printu(">>>> PREV <<<<\n"); Previous(); break;}
60 2 case 1 : { printu(">>>> PLAY <<<<\n"); PlayPause(); break;}
61 2 default : break;
62 2 }
63 1 IEN1 |= EKB; //Enable KeyBoard Interrupt
64 1
65 1 EA = 1; //开中断
66 1 return;
67 1 }
68
69 void main()
70 {
71 1
72 1 // unsigned char a=2;
73 1 CKCON|=0x01; //使能该单片机的X2模式
74 1 printu(">>>> KT MP3 USB Disk V1.00 <<<<\n");
75 1
76 1
77 1 //CKCON|=0x01; //使能该单片机的X2模式
78 1 Flash_Reset(); //Flash 芯片复位
79 1 //printu(">>>> FLASH RESET SUCCESS <<<<\n");
80 1 //delay();
81 1
82 1 if(P3_4) //此引脚为USB接入检测端
83 1 //if(a==1)
84 1 { //在此将设备做为U盘处理
85 2 printu(">>>>Entering USB Mode...<<<<\n"); //输出进入U盘功能的信息
86 2 AtmelUSBInit(); //USB寄存器配置函数
87 2 EpEnable(); //使能有关USB的配置
88 2 while(1)
89 2 {
90 3 if (UEPINT & EP0) Ep0();
91 3 if (UEPINT & EP1) main_txdone();
92 3 if (UEPINT & EP2) main_rxdone();
93 3
94 3 UEPINT=0;
95 3 }
96 2 }
97 1 else //进入MP3播放模式
98 1 {
99 2 printu("Entering MP3 Mode...\n");
100 2 MP3_Init(); //MP3初始化
101 2 KeyBoardInit(); //键盘初始化
102 2 //CKCON|=0x01; //使能该单片机的X2模式
103 2 MP3InitFlag = 1;
104 2 EA = 1; //开中断,键盘可以开始工作
105 2 P3_5 = 0; //打开USB灯亮
106 2 PlayState=PLAY;
107 2
108 2 NumofSong = GetMP3List(); //得到U盘中的MP3歌曲列表
109 2 CKCON|=0x01; //使能该单片机的X2模式
110 2 printuf("Song:%x\n", NumofSong); //输出歌曲总数信息
111 2 if(NumofSong == 0)
112 2 {
113 3 printu("There is no MP3 file in USB Disk!\n");
114 3 P3_5 = 1; //关闭指示LED
115 3 }
116 2
117 2 while(1)
C51 COMPILER V7.50 MAIN 02/08/2007 11:18:08 PAGE 3
118 2 {
119 3 if(NumofSong != 0)
120 3 {
121 4 if(MP3InitFlag)
122 4 {
123 5 PlayInit(&SONG[11 * NowPlaying]);
124 5 MP3InitFlag = 0;
125 5 }
126 4
127 4 //printu("playing...\n");
128 4 PlayMP3(&SONG[11 * NowPlaying]); //如果处于播放状态,则播放当前歌曲
129 4 //printu("end of playing\n");
130 4 }
131 3 if(NowPlaying == NumofSong)
132 3 {
133 4 printu("end of playing\n");
134 4 PlayState = STOP; //全部歌曲播放完了,播放器停止
135 4 NowPlaying = 0; //循环播放
136 4 }
137 3 P3_5 =~P3_5; //指示LED闪烁
138 3 }
139 2
140 2 }
141 1
142 1 // else ; // printu(">>>> KT MP3 USB Disk V5.55 <<<<\n");
143 1
144 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 335 ----
CONSTANT SIZE = 209 ----
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 + -