📄 1415.lst
字号:
C51 COMPILER V6.12 1415 12/12/2007 00:28:05 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 1415
OBJECT MODULE PLACED IN .\1415.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE .\1415.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #include<stdio.h>
4 #include<intrins.h>
5
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 sbit MUTE = P2^4;
10 sbit DI = P2^5;
11 sbit CLK = P2^6;
12 sbit CE = P2^7;
13 sbit KEY_1= P1^4;
14 sbit KEY_2= P1^5;
15 sbit KEY_3= P1^6;
16 sbit KEY_4= P1^7;
17
18 sbit rs = P2^0;
19 sbit rw = P2^1;
20 sbit ep = P2^2;
21 sbit lg = P2^3;
22
23 void Send_16(uint ui_Date, uchar uc_MONO ,uchar uc_PD); //发送数据函数
24 void Key_Scan_1(void); //控制静音
25 void Key_Scan_2(void); //频率步进 精度0.1MHZ
26 void Key_Scan_3(void); //频率步退 精度0.1MHZ
27 void Key_Scan_4(void); //立体声控制
28
29 void Delay(uchar ms);
30
31 void Disp(void);
32 void lcd_wdat(uchar dat);
33 void lcd_wcmd(uchar cmd);
34 void lcd_pos(uchar pos);
35 void lcd_init(void);
36 void lcd_disp(uchar pos,uchar dat);
37 bit lcd_bz(void);
38
39
40 uchar uc_Count_1;
41 uchar uc_Count_2;
42 uchar uc_Count_3;
43 uchar uc_Count_4;
44 uint ui_TEMP_1; //保存频率数据
45 uint ui_TEMP_2; //保存立体声数据
46 uint ui_TEMP_3; //保存静音数据
47 uint ui_TEMP_4; //
48
49 /**********************************主程序*************************************/
50
51 void main(void)
52 {
53 1
54 1 Send_16(0x3e7,0x01,0x00);
55 1 ui_TEMP_2=0x01;
C51 COMPILER V6.12 1415 12/12/2007 00:28:05 PAGE 2
56 1 MUTE=0;
57 1 Disp();
58 1 while(1)
59 1 {
60 2
61 2 Key_Scan_1();
62 2 Key_Scan_2();
63 2 Key_Scan_3();
64 2 Key_Scan_4();
65 2 // Disp();
66 2 }
67 1
68 1
69 1 }
70
71 /**********************************主程序*************************************/
72
73 /**********************************显示子程序*************************************/
74
75 void Disp(void)
76 {
77 1
78 1 lcd_init(); // 初始化LCD
79 1 Delay(10);
80 1
81 1 lcd_disp(0,70);
82 1 lcd_disp(1,77);
83 1 lcd_disp(2,58);
84 1 if(ui_TEMP_1>=1000)
85 1 {
86 2 lcd_disp(3,ui_TEMP_1/1000%10+48);
87 2 }
88 1 lcd_disp(4,ui_TEMP_1/100%10+48);
89 1 lcd_disp(5,ui_TEMP_1/10%10+48);
90 1 lcd_disp(6,46);
91 1 lcd_disp(7,ui_TEMP_1%10+48);
92 1
93 1 if(ui_TEMP_2)
94 1 {
95 2 lcd_disp(9,83);
96 2 lcd_disp(10,84);
97 2 lcd_disp(11,69);
98 2 }
99 1
100 1 if(ui_TEMP_3)
101 1 {
102 2 lcd_disp(13,77);
103 2 lcd_disp(14,85);
104 2 }
105 1 lcd_disp(15,127);
106 1 lcd_disp(64,126);
107 1 lcd_disp(66,57);
108 1 lcd_disp(67,57);
109 1 lcd_disp(69,77);
110 1 lcd_disp(70,85);
111 1 lcd_disp(71,83);
112 1 lcd_disp(72,73);
113 1 lcd_disp(73,67);
114 1 lcd_disp(76,79);
115 1 lcd_disp(77,78);
116 1 lcd_disp(79,127);
117 1
C51 COMPILER V6.12 1415 12/12/2007 00:28:05 PAGE 3
118 1
119 1 }
120
121 /**********************************显示子程序*************************************/
122
123 /**********************************延时子程序********************************/
124
125
126 void Delay(uchar ms)
127 { // lcd延时子程序
128 1 uchar i;
129 1 while(ms--)
130 1 {
131 2 for(i = 0; i< 250; i++)
132 2 {
133 3 _nop_();
134 3 _nop_();
135 3 _nop_();
136 3 _nop_();
137 3 }
138 2 }
139 1 }
140
141 /**********************************延时子程序********************************/
142
143 /**********************************LCD函数*********************************/
144
145 void lcd_init()
146 { //LCD初始化设定
147 1 lcd_wcmd(0x38); //
148 1 Delay(1);
149 1 lcd_wcmd(0x38); //
150 1 Delay(1);
151 1 lcd_wcmd(0x38); //
152 1 Delay(1);
153 1 lcd_wcmd(0x0c); //
154 1 Delay(1);
155 1 lcd_wcmd(0x06); //
156 1 Delay(1);
157 1 lcd_wcmd(0x01); //清除LCD的显示内容
158 1 Delay(1);
159 1 }
160
161
162 bit lcd_bz()
163 { // 测试LCD忙碌状态
164 1 bit result;
165 1 rs = 0;
166 1 rw = 1;
167 1 ep = 1;
168 1 _nop_();
169 1 _nop_();
170 1 _nop_();
171 1 _nop_();
172 1 result = (bit)(P0 & 0x80);
173 1 ep = 0;
174 1 return result;
175 1 }
176
177 void lcd_wcmd(uchar cmd) // 写入指令数据到LCD
178 {
179 1
C51 COMPILER V6.12 1415 12/12/2007 00:28:05 PAGE 4
180 1 while(lcd_bz());
181 1 rs = 0;
182 1 rw = 0;
183 1 ep = 0;
184 1 _nop_();
185 1 _nop_();
186 1 P0 = cmd;
187 1 _nop_();
188 1 _nop_();
189 1 _nop_();
190 1 _nop_();
191 1 ep = 1;
192 1 _nop_();
193 1 _nop_();
194 1 _nop_();
195 1 _nop_();
196 1 ep = 0;
197 1 }
198
199 void lcd_disp(uchar pos,uchar dat)
200 {
201 1
202 1 lcd_wcmd(pos | 0x80); //设定显示位置
203 1 while(lcd_bz()); //写入字符显示数据到LCD
204 1 rs = 1;
205 1 rw = 0;
206 1 ep = 0;
207 1 P0 = dat;
208 1 _nop_();
209 1 _nop_();
210 1 _nop_();
211 1 _nop_();
212 1 ep = 1;
213 1 _nop_();
214 1 _nop_();
215 1 _nop_();
216 1 _nop_();
217 1 ep = 0;
218 1 }
219
220 /**********************************LCD函数*********************************/
221
222 /**********************************键盘扫描1*********************************/
223
224 void Key_Scan_1(void) //控制静音
225 {
226 1 if(KEY_1==0)
227 1 {
228 2 {
229 3 Delay(20);
230 3 if(KEY_1==0)
231 3 {
232 4 MUTE=(uc_Count_1++)%2;
233 4 ui_TEMP_3=MUTE;
234 4 while(KEY_1==0);
235 4 }
236 3 Disp();
237 3 while(KEY_1==0);
238 3 }
239 2 }
240 1 }
241 /**********************************键盘扫描1*************************************/
C51 COMPILER V6.12 1415 12/12/2007 00:28:05 PAGE 5
242
243 /**********************************键盘扫描2*************************************/
244
245 void Key_Scan_2(void) //频率步进
246 {
247 1 if(KEY_2==0)
248 1 {
249 2 Delay(20);
250 2 if(KEY_2==0)
251 2 {
252 3 uc_Count_2++;
253 3 if(uc_Count_2==200)
254 3 {
255 4 uc_Count_2=0;
256 4 Send_16(0x3e7,ui_TEMP_2,0x00);
257 4 }
258 3 Send_16(ui_TEMP_1+1,ui_TEMP_2,0x00);
259 3 Disp();
260 3 while(KEY_2==0);
261 3 }
262 2 }
263 1
264 1 }
265
266 /**********************************键盘扫描2*************************************/
267
268 /**********************************键盘扫描3*************************************/
269
270 void Key_Scan_3(void) //频率步退
271 {
272 1 if(KEY_3==0)
273 1 {
274 2 Delay(20);
275 2 if(KEY_3==0)
276 2 {
277 3 uc_Count_3++;
278 3 if(uc_Count_3==300)
279 3 {
280 4 uc_Count_3=0;
281 4 Send_16(0x3e7,ui_TEMP_2,0x00);
282 4 }
283 3 Send_16(ui_TEMP_1-1,ui_TEMP_2,0x00);
284 3 Disp();
285 3 while(KEY_3==0);
286 3 }
287 2 }
288 1
289 1 }
290
291 /**********************************键盘扫描3*************************************/
292
293 /**********************************键盘扫描4*************************************/
294
295 void Key_Scan_4(void) //立体声控制
296 {
297 1 if(KEY_4==0)
298 1 {
299 2 Delay(20);
300 2 if(KEY_4==0)
301 2 {
302 3 uc_Count_4++;
303 3 if(ui_TEMP_2=uc_Count_4%2)
C51 COMPILER V6.12 1415 12/12/2007 00:28:05 PAGE 6
304 3 Send_16(ui_TEMP_1,0x01,0x00);
305 3 else
306 3 Send_16(ui_TEMP_1,0x00,0x00);
307 3 Disp();
308 3 while(KEY_4==0);
309 3 }
310 2 }
311 1 }
312
313 /**********************************键盘扫描4*************************************/
314
315 /**********************************数据发送*************************************/
316
317 void Send_16(uint ui_Date,uchar uc_MONO ,uchar uc_PD)
318 {
319 1 uchar i;
320 1 ui_TEMP_1=ui_Date;
321 1 CLK=0;
322 1 CE=0;
323 1 CE=1;
324 1 for(i=11;i;--i)
325 1 {
326 2 DI=ui_Date&0x01;
327 2 ui_Date>>=1;
328 2 CLK=1;
329 2 CLK=0;
330 2 }
331 1 DI=uc_MONO&0x01;
332 1 CLK=1;
333 1 CLK=0;
334 1 DI=uc_PD&0x20;
335 1 CLK=1;
336 1 CLK=0;
337 1 uc_PD<<=1;
338 1 DI=uc_PD&0x20;
339 1 CLK=1;
340 1 CLK=0;
341 1 DI=1;
342 1 CLK=1;
343 1 CLK=0;
344 1 DI=0;
345 1 CLK=1;
346 1 CLK=0;
347 1 CE=0;
348 1 }
349
350 /**********************************数据发送*************************************/
351
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 750 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 2
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -