📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 05/17/2007 23:04:22 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<REG51F.H>
2 #include<KEY.h>
3 #include<LED.h>
4 #include<communicate.h>
5
6 sbit pwms=P1^6;
7 sbit pwmout=P1^7;
8 sbit key1=P1^0;
9 sbit key2=P1^1;
10 sbit key3=P1^2;
11 sbit key4=P1^3;
12 unsigned char pkey;
13 unsigned int pwmset[4];
14 unsigned char highTh[4],highTl[4],lowTh[4],lowTl[4],mode,i,Mtoset;
15 float ftemp;
16 unsigned int temp;
17 bit pwmhigh;
18 /////
19
20 ////
21
22
23
24 void delay()
25 {unsigned i;
26 1 for(i=0;i<200;i++);
27 1 }
28 void INIT_PWM()
29 {
30 1 TMOD=0x01;
31 1 IP=0x08;
32 1 IE|=0x02;
33 1 EA=1;
34 1 TH0=0xee; //20us;
35 1 TL0=0xee;
36 1 TR0=1;
37 1 }
38
39 #if 0
void init_serialcomm( void )
{
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable receive */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xF4; /* TH1: reload value for 2400 baud @ 11.0592MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 0;
ES=1;
RI =0; /* TI: set TI to send first char of UART */
}
#endif
52
53
54
55
C51 COMPILER V7.50 MAIN 05/17/2007 23:04:22 PAGE 2
56
57
58
59 void int1() interrupt 1
60 {
61 1
62 1 EA=0;
63 1 TF0=0;
64 1
65 1
66 1 if(pwmhigh)
67 1 {
68 2 P1=P1&(~(0x80>>Mtoset));
69 2 TH0=lowTh[Mtoset];
70 2 TL0=lowTl[Mtoset];
71 2 pwmhigh=0;
72 2 Mtoset++;
73 2 if(Mtoset>=4)Mtoset=0;
74 2 }
75 1 else
76 1 {
77 2 P1=P1|(0x80>>Mtoset);
78 2 TH0=highTh[Mtoset];
79 2 TL0=highTl[Mtoset];
80 2 pwmhigh=1;
81 2
82 2 }
83 1 EA=1;
84 1
85 1 }
86
87 void sett(unsigned char a,unsigned int temp2)
88 {
89 1 pwmset[a]=temp2;
90 1 if(pwmset[a]>5000)pwmset[a]=0;
91 1 if(pwmset[a]>995)pwmset[a]=995;
92 1 ftemp=(pwmset[a]+1000)/1.085;
93 1 temp=0xffff-ftemp;
94 1 highTh[a]=temp>>8;
95 1 highTl[a]=temp&0x00ff;
96 1 temp=0xffff-(temp-0xedff);
97 1 lowTh[a]=temp>>8;
98 1 lowTl[a]=temp&0x00ff;
99 1 }
100
101 void comintreputer()
102 {
103 1 switch(command[0])
104 1 {
105 2
106 2 case 0x01: //+=5,as key1
107 2 {
108 3 if(mode==0)
109 3 {
110 4 for(i=0;i<4;i++)
111 4 {
112 5 sett(i,pwmset[i]+5);
113 5 setdig(&pwmset[0]);
114 5 }
115 4
116 4 }
117 3 else
C51 COMPILER V7.50 MAIN 05/17/2007 23:04:22 PAGE 3
118 3 {
119 4 sett(mode-1,pwmset[mode-1]+5);
120 4 if(pwmset[mode-1]>995)pwmset[mode-1]=995;
121 4 setdig(&pwmset[mode-1]);
122 4 }
123 3 break;
124 3 }
125 2 case 0x02: //-=5,as key2
126 2 {
127 3 if(mode==0)
128 3 {
129 4 for(i=0;i<4;i++)
130 4 {
131 5 sett(i,pwmset[i]-5);
132 5 setdig(&pwmset[0]);
133 5 }
134 4 }
135 3 else
136 3 {
137 4 sett(mode-1,pwmset[mode-1]-5);
138 4 setdig(&pwmset[mode-1]);
139 4 }
140 3 break;
141 3 }
142 2 case 0x03: //set pwmset=0;
143 2 {
144 3 if(mode==0)
145 3 {
146 4 for(i=0;i<4;i++)
147 4 {
148 5 sett(i,0);
149 5 setdig(&pwmset[0]);
150 5 }
151 4
152 4 }
153 3 else
154 3 {
155 4 sett(mode-1,0);
156 4
157 4 setdig(&pwmset[mode-1]);
158 4
159 4 }
160 3
161 3 break;
162 3 }
163 2 case 0x04: //mode++;
164 2 {
165 3 mode++;
166 3 if(mode>=5)mode=0;
167 3 if(!mode)
168 3 {setdig(&pwmset[0]);}
169 3 else
170 3 {
171 4 setdig(&pwmset[mode-1]);
172 4 }
173 3 dig[3]=mode;
174 3 break;
175 3
176 3 }
177 2 case 0x05: //set mode
178 2 {
179 3 mode=command[1]%4;
C51 COMPILER V7.50 MAIN 05/17/2007 23:04:22 PAGE 4
180 3 if(!mode)
181 3 {setdig(&pwmset[0]);}
182 3 else
183 3 {
184 4 setdig(&pwmset[mode-1]);
185 4 }
186 3 dig[3]=mode;
187 3 break;
188 3
189 3 }
190 2 case 0x06: //set pmw[command[1]]=command[2]<<8+command[3]
191 2 { mode=command[1];
192 3 temp=command[2];
193 3 temp=temp<<8;
194 3 temp+=command[3];
195 3 sett(mode-1,temp);
196 3 setdig(&pwmset[mode-1]);
197 3 dig[3]=mode;
198 3 break;
199 3 }
200 2
201 2 }//end of switch
202 1 }//end of comintpretor
203
204 void main()
205 {
206 1
207 1
208 1 INIT_PWM();
209 1 Init_UART();
210 1 SBUF='#';
211 1 IP=0x02;//set timer0 high interrupt level
212 1 mode=0;
213 1 for(i=0;i<4;i++)
214 1 {
215 2 sett(i,0);
216 2 }
217 1 setdig(&pwmset[0]);
218 1 dig[3]=mode;
219 1
220 1 while(1)
221 1 {
222 2 //key4
223 2 if((P1&0x08)==0)
224 2 {
225 3 if(pkey&0x08)
226 3 {
227 4 //begin of cottents a keypress
228 4 mode++;
229 4 if(mode>=5)
230 4 mode=0;
231 4 if(!mode)
232 4 {setdig(&pwmset[0]);}
233 4 else
234 4 {
235 5 setdig(&pwmset[mode-1]);
236 5 }
237 4 dig[3]=mode;
238 4
239 4
240 4 //end of cottens of a keypress
241 4 }
C51 COMPILER V7.50 MAIN 05/17/2007 23:04:22 PAGE 5
242 3 pkey&=0xff-0x08;
243 3 }
244 2 else
245 2 {
246 3 pkey|=0x08;
247 3 }//end key4
248 2
249 2
250 2 ///key1
251 2 if((P1&0x01)==0)
252 2 { if(pkey&0x01==1)
253 3 {
254 4
255 4 //////////
256 4 if(mode==0)
257 4 {
258 5 for(i=0;i<4;i++)
259 5 {
260 6 sett(i,pwmset[i]+5);
261 6
262 6 setdig(&pwmset[0]);
263 6
264 6
265 6 }
266 5
267 5 }
268 4 else
269 4 {
270 5 sett(mode-1,pwmset[mode-1]+5);
271 5 setdig(&pwmset[mode-1]);
272 5
273 5
274 5 }
275 4
276 4 ////////////////
277 4 }
278 3 pkey&=0xfe; //set pkey.0=0;
279 3 }
280 2 else
281 2 {
282 3 pkey|=0x01; //set pkey.0=1;
283 3 }
284 2
285 2
286 2 //key2
287 2 if((P1&0x02)==0)
288 2 {
289 3 if(pkey&0x02)
290 3 {
291 4 ////////////////
292 4 if(mode==0)
293 4 {
294 5 for(i=0;i<4;i++)
295 5 {
296 6 sett(i,pwmset[i]-5);
297 6
298 6 setdig(&pwmset[0]);
299 6
300 6
301 6 }
302 5
303 5 }
C51 COMPILER V7.50 MAIN 05/17/2007 23:04:22 PAGE 6
304 4 else
305 4 {
306 5 sett(mode-1,pwmset[mode-1]-5);
307 5 setdig(&pwmset[mode-1]);
308 5
309 5
310 5 }
311 4 /////////////////////
312 4 }
313 3 pkey&=0xff-0x02;
314 3 }
315 2 else{
316 3 pkey|=0x02;
317 3 }
318 2
319 2 ///key3
320 2
321 2 if(SW3_Pressed)
322 2 {
323 3
324 3 if(mode==0)
325 3 {
326 4 for(i=0;i<4;i++)
327 4 {
328 5 sett(i,pwmset[i]-5);
329 5
330 5 setdig(&pwmset[0]);
331 5
332 5
333 5 }
334 4
335 4 }
336 3 else
337 3 {
338 4 sett(mode-1,pwmset[mode-1]-5);
339 4
340 4 setdig(&pwmset[mode-1]);
341 4 }
342 3
343 3 }
344 2
345 2 if(commandready)
346 2 {
347 3 ES=0;
348 3 comintreputer();
349 3 commandready=0;
350 3 ES=1;
351 3 }
352 2 showdig();
353 2 }//end while
354 1 }//end main
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1115 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILER V7.50 MAIN 05/17/2007 23:04:22 PAGE 7
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -