📄 main.lst
字号:
C51 COMPILER V6.12 MAIN 04/20/2006 17:34:59 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\c51\BIN\C51.EXE main.c DB OE SMALL ROM(LARGE)
stmt level source
1 #include <main.h>
2
3 byte vlm_main; //= 0x28; //0x3f-0x17=0x28 为最大的音量0db
4 byte bass_main; //= 0x10;// = 0x10;
5 byte treble_main;// = 0x10; //= 0x10;
6 byte gain_front; // = 0x31 | 0x80;
7 byte mute=MUTE;
8 byte openedsource = 0x00; //用于判断已经打开的信源
9 sbit CS_PA = P1^5;
10 sbit CS_LED = P1^6;
11 bit set = 0;
12
13 byte bdata pa_state = 0xff;
14 sbit RADIO_C = pa_state^0;
15 sbit MIC_C = pa_state^2;
16 sbit MP3_C = pa_state^4;
17 sbit MS = pa_state^6;
18
19 byte flag_prior;// = 0x01; //当前广播优先级标志,0x01默认为LCD
20 byte prior_radio;//= 0x04;
21 byte prior_mic;//= 0x03;
22 byte prior_mp3;//= 0x02;
23 byte prior_lcd;//= 0x01; //定义各个信源的优先级别,数大的为高优先级
24
25
26 byte flag_radio = 0x00;
27 byte flag_mic = 0x00;
28 byte flag_mp3 = 0x00;
29 byte flag_lcd = 0x00;
30 /*#define RADIO_C 0xBE
31 #define MIC_C 0xBB
32 #define MP3_C 0xAF
33 #define LCD_C 0xBF
34 #define MS_R 0xBF*/
35 union BYTE_WORD
36 {
37 word item;
38 byte rx_byte[0x02];
39 }max3100;
40 void prc_max3100_data();
41 void prc_ctl();
42 void delay_50us();
43 void delay_10ms();
44 void tea6320A_ini(void)
45 { byte tmp;
46 1 //tmp = 0x2b | 0xc0;//MASTER_VLM;
47 1 //tmp = 0x37 | 0x80;
48 1 tmp = gain_front;
49 1 while(set1_master_vlm(&tmp));
50 1 //tmp = 0x10;//BASS;
51 1 tmp = bass_main;
52 1 while(set1_bass(&tmp));
53 1 //tmp = 0x10;//TREBLE;
54 1 tmp = treble_main;
55 1 while(set1_treble(&tmp));
C51 COMPILER V6.12 MAIN 04/20/2006 17:34:59 PAGE 2
56 1 //tmp = 0x05;//SELECT_CH ;
57 1 tmp = SEL_MP3;
58 1 while(set1_select_ch(&tmp));
59 1 tmp = MUTE;
60 1 while(set1_vlm(&tmp, 0));
61 1 while(set1_vlm(&tmp, 1));
62 1 }
63
64 void mcu_ini(void)
65 {
66 1 P0 = 0xff;
67 1 P1 = 0xff;
68 1 P2 = 0xff;
69 1 P3 = 0xff;
70 1 TMOD = 0x21;//设置9600波特率的T1采用方式2,T0采用方式1,为16位定时器//
71 1 TL1 = 0xfd;
72 1 TH1 = 0xfd;
73 1 TL0 = DELAY_10MS_L;
74 1 TH0 = DELAY_10MS_H;
75 1 EA = 0; // DISENABLED;
76 1 TR0 = 1;
77 1 //IT0 = TRUE; //外部中断0采用边沿触发方式
78 1 //IT1 = TRUE; //外部中断1采用边沿触发方式
79 1 IT1 = 0; //'0'为边沿触发方式,‘1’为电平触发方式
80 1 init_com();
81 1 EX0 = 0;//DISENABLED;
82 1 EX1 = 1;//ENABLED;
83 1 ET0 = 1;
84 1 EA = 1;//ENABLED;
85 1 //WDRE = 0; //disable WDT during initialization
86 1 //WDTD = 0x00; //load your interval value to WDTD
87 1 //WDRE = 1; //enable WDT reset
88 1 //SWDT = 1; //start WDT
89 1 //WDT=1;
90 1 }
91 void prc_ctl()
92 {
93 1 switch(com_command)
94 1 {
95 2
96 2 case COM_CMD_FRONTGAIN: //设置前级增益
97 2 gain_front = rx_para[4];
98 2 set1_master_vlm(&gain_front);
99 2 SaveData_SFR();
100 2 break;
101 2 case COM_CMD_MAINTREBLE: //设置总音量的高音
102 2 treble_main = rx_para[4];
103 2 set1_treble(&treble_main);
104 2 SaveData_SFR();
105 2 break;
106 2 case COM_CMD_MAINBASS: //设置总音量的低音
107 2 bass_main = rx_para[4];
108 2 set1_bass(&bass_main);
109 2 SaveData_SFR();
110 2 break;
111 2 case COM_CMD_MAINVOLUME: //设置总音量
112 2 vlm_main = rx_para[4];
113 2 set1_vlm(&vlm_main,CH_MAIN);
114 2 SaveData_SFR();
115 2 break;
116 2 case COM_CMD_PRIOR: //设置信源优先级
117 2 prior_radio = rx_para[4];
C51 COMPILER V6.12 MAIN 04/20/2006 17:34:59 PAGE 3
118 2 prior_mic = rx_para[5];
119 2 prior_mp3 = rx_para[6];
120 2 prior_lcd = rx_para[7];
121 2 SaveData_SFR();
122 2 break;
123 2 case COM_CMD_READGAIN:
124 2 max3100_senddata(0x7e);
125 2 max3100_senddata(0x03);
126 2 max3100_senddata(0x00);
127 2 max3100_senddata(0x0c);
128 2 max3100_senddata(gain_front);
129 2 max3100_senddata(0x00);
130 2 max3100_senddata(0x0d);
131 2 delay_50us();
132 2 break;
133 2 case COM_CMD_READMVOLUME: //回读音量
134 2 max3100_senddata(0x7e);
135 2 max3100_senddata(0x03);
136 2 max3100_senddata(0x00);
137 2 max3100_senddata(0x0d);
138 2 max3100_senddata(vlm_main);
139 2 max3100_senddata(0x00);
140 2 max3100_senddata(0x0d);
141 2 delay_50us();
142 2 max3100_senddata(0x7e);
143 2 max3100_senddata(0x03);
144 2 max3100_senddata(0x00);
145 2 max3100_senddata(0x0e);
146 2 max3100_senddata(treble_main);
147 2 max3100_senddata(0x00);
148 2 max3100_senddata(0x0d);
149 2 delay_50us();
150 2 max3100_senddata(0x7e);
151 2 max3100_senddata(0x03);
152 2 max3100_senddata(0x00);
153 2 max3100_senddata(0x0f);
154 2 max3100_senddata(bass_main);
155 2 max3100_senddata(0x00);
156 2 max3100_senddata(0x0d);
157 2 break;
158 2 case COM_CMD_READPRIOR: //回读优先级
159 2 max3100_senddata(0x7e);
160 2 max3100_senddata(0x06);
161 2 max3100_senddata(0x00);
162 2 max3100_senddata(0x12);
163 2 max3100_senddata(prior_radio);
164 2 max3100_senddata(prior_mic);
165 2 max3100_senddata(prior_mp3);
166 2 max3100_senddata(prior_lcd);
167 2 max3100_senddata(0x00);
168 2 max3100_senddata(0x0d);
169 2 break;
170 2 default:
171 2
172 2 break;
173 2 }
174 1
175 1 }
176
177 void delay_50us()
178 {
179 1 byte i;
C51 COMPILER V6.12 MAIN 04/20/2006 17:34:59 PAGE 4
180 1 for(i=0;i<0x40;i++)
181 1 {
182 2 _nop_();
183 2 }
184 1
185 1 }
186
187 void prc_max3100_data()
188 {
189 1 byte i = 0x00;
190 1 for(i=0;i<18;i++)
191 1 {
192 2 rx_para[i] = 0x00;
193 2 }
194 1 for(i=0;i<18;i++)
195 1 {
196 2 max3100.item = MAX3100_Serial_Input(0x00,0x00);
197 2 rx_para[i] = max3100.rx_byte[0x01];
198 2 delay_50us();
199 2 }
200 1
201 1 }
202
203 void delay_10ms()
204 {
205 1 byte i = 0x00;
206 1 byte j = 0x00;
207 1 for(i=0;i<20;i++)
208 1 {
209 2 for(j=0;j<125;j++)
210 2 {
211 3 _nop_();
212 3 }
213 2 }
214 1
215 1 _nop_();
216 1 }
217
218 void main(void)
219 {
220 1 byte Nsource = 0x00;
221 1 mcu_ini();
222 1 max3100_ini();
223 1 init_flash();
224 1 i2cA_ini();
225 1 tea6320A_ini();
226 1 CS_PA = 0;
227 1 CS_LED = 0;
228 1 flag_mp3 = 0x00;
229 1 flag_mic = 0x00;
230 1 flag_radio = 0x00;
231 1 flag_lcd = 0x00;
232 1 flag_prior = prior_lcd;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -