📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 01/15/2006 18:22:14 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
line level source
1 #include "AT89C51SND1_REG.H"
2 #include "MCU_UART.H"
3
4 #define LED P3_5
5
6 #define EKB 0x10
7
8 #define SLESONG 1
9 #define VOLUME 2
10 #define TONE 3
11 unsigned char CurrentFun = SLESONG;
12 unsigned char NowPlaying = 1;
13 unsigned char RegVolume = 15;
14 unsigned char RegTone = 15;
15
16 unsigned char flag = 0;
17
18 void KeyBoardInit()
19 {
20 1 P1 |= 0x0f;
21 1 KBCON = 0x00;
22 1 IEN1 |=EKB;
23 1 }
24
25 void Next()
26 {
27 1 switch (CurrentFun)
28 1 {
29 2 case SLESONG: NowPlaying++;
30 2 if(NowPlaying>10)
31 2 NowPlaying=1;
32 2 flag=2;
33 2 break;
34 2 case VOLUME : RegVolume++;
35 2 if(RegVolume>31)
36 2 RegVolume=31;
37 2 flag=3;
38 2 break;
39 2 case TONE : RegTone++;
40 2 if(RegTone>31)
41 2 RegTone=31;
42 2 flag=4;
43 2 break;
44 2 }
45 1 }
46
47 void Prev()
48 {
49 1 switch (CurrentFun)
50 1 {
51 2 case SLESONG: NowPlaying--;
52 2 if(NowPlaying==0)
53 2 NowPlaying=10;
54 2 flag=2;
55 2 break;
C51 COMPILER V7.50 MAIN 01/15/2006 18:22:14 PAGE 2
56 2 case VOLUME : if(RegVolume!=0)
57 2 RegVolume--;
58 2 flag=3;
59 2 break;
60 2 case TONE : if(RegTone!=0)
61 2 RegTone--;
62 2 flag=4;
63 2 break;
64 2 }
65 1 }
66
67
68 void key_interrupt() interrupt 11
69 {
70 1 unsigned char i,j,k;
71 1 k = KBSTA&0x0f;
72 1 for(i=0;i<50;i++)
73 1 for(j=0;j<200;j++);
74 1 if(k==(~P1&0x0f))
75 1 switch (k)
76 1 {
77 2 case 1 : CurrentFun++;
78 2 if(CurrentFun>3)
79 2 CurrentFun=1;
80 2 flag = 1;
81 2 break;
82 2 case 2 : Next();
83 2 break;
84 2 case 4 : Prev();
85 2 break;
86 2 case 8 : LED = ~LED;
87 2 break;
88 2 default : break;
89 2 }
90 1 k = KBSTA;
91 1 return;
92 1 }
93
94 main()
95 {
96 1 KeyBoardInit();
97 1 EA = 1;
98 1 init_uart();
99 1 printu("JMBIE MP3 EXP4: KeyPad Interrupt.\n");
100 1 printu("Please press the Key on the MP3 Board.\n");
101 1 while(1)
102 1 {
103 2 switch(flag)
104 2 {
105 3 case 0 : break;
106 3 case 1 : printuf("Current Function is 0x%x\n",CurrentFun);
107 3 flag= 0;
108 3 break;
109 3 case 2 : printuf("Now play the song No.%d\n",NowPlaying);
110 3 flag= 0;
111 3 break;
112 3 case 3 : printuf("The volume is %d\n",RegVolume);
113 3 flag= 0;
114 3 break;
115 3 case 4 : printuf("The tone is %d\n",RegTone);
116 3 flag= 0;
117 3 break;
C51 COMPILER V7.50 MAIN 01/15/2006 18:22:14 PAGE 3
118 3 }
119 2 }
120 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 305 ----
CONSTANT SIZE = 160 ----
XDATA SIZE = ---- ----
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 + -