📄 laststop.lst
字号:
234 1 LASTS=1;
235 1 LASTB=0;
236 1 time1=1;
237 1 time2=1;
238 1 counter1=170;
239 1 counter2=30;
240 1 EA=1;
241 1 while(1)
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 PAGE 5
242 1 {
243 2 LEDG=~LEDG;
244 2 avge=pingjun();
245 2 if(xianshi==1)
246 2 {BCD_H_L(avge-200,0); }
247 2 a=IN0;
248 2 bb=IN1;
249 2 c=IN2;
250 2 //d=IN3;
251 2 //e=IN4;
252 2 f=IN5;
253 2 g=IN6;
254 2 if(backward==1)
255 2 {
256 3 START=1;
257 3 LASTS=0;
258 3 BACK=0;
259 3 LASTB=1;
260 3 judgementback(90,20,20);
261 3 }
262 2 if(forward==1)
263 2 {
264 3 START=1;
265 3 LASTS=0;
266 3 BACK=1; //前进
267 3 LASTB=0;
268 3 judgement(90,20,20);
269 3 }
270 2 if(black==1)
271 2 {
272 3 START=1;
273 3 LASTS=0;
274 3 TR1=1; //开定时器
275 3 time2=0;
276 3 judgement(90,20,20);
277 3 }
278 2 if(keykey==1)
279 2 {
280 3 chazhi1=abs((int)(avge-avge0));
281 3 if(chazhi1>10) //chazhi1>=20
282 3 {
283 4 START=1;
284 4 LASTS=0;
285 4 counter2=30;
286 4 if(avge>(avge0+chazhi-3))
287 4 {
288 5 BACK=0;
289 5 LASTB=1;
290 5 //delayms(5);
291 5 judgementback(0,50,15);
292 5 }
293 4 if(avge<(avge0-chazhi))
294 4 {
295 5
296 5 BACK=1;
297 5 LASTB=0;
298 5 //delayms(5);
299 5 judgement(0,50,15);
300 5
301 5 }
302 4 }
303 3 /*/else if((chazhi1<20)&&())
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 PAGE 6
304 3 //{
305 3 counter2=30;
306 3 if(avge>(avge0+chazhi-3))
307 3 {
308 3 START=1;
309 3 BACK=0;
310 3 //delayms(5);
311 3 judgementback(0,50,15);
312 3 }
313 3 if(avge<(avge0-chazhi))
314 3 {
315 3 START=1;
316 3 BACK=1;
317 3 //delayms(5);
318 3 judgement(0,50,15);
319 3 }
320 3 //}*/
321 3 else
322 3 {
323 4 START=0;
324 4 LASTS=1;
325 4 TR1=1; //开定时器
326 4 time1=0;
327 4 time2=1;
328 4
329 4 }
330 3 }
331 2
332 2 }
333 1 }
334 /*PCA中断子程序*/
335 void PCA_ISR (void) interrupt 9
336 {
337 1
338 1 CCF0 = 0; /*清匹配中断标志*/
339 1
340 1 }
341 /*键盘中断子程序*/
342 void led(void) interrupt 19
343 {
344 1 uchar key,t;
345 1 EA=0;
346 1 key=CH452_Read();
347 1 if(0x62==key)
348 1 {
349 2 delayms(2);
350 2 avge0=avge;
351 2 black=0;
352 2 BCD_H_L(avge0-200,1);
353 2 }
354 1 if(0x63==key)
355 1 {
356 2 delayms(2);
357 2 black=1;
358 2 xianshi=0;
359 2 TR0=1;
360 2 for(t=0;t<8;t++)
361 2 CH452_Write((CH452_DIG0+ (t<<8))|16);
362 2 CH452_Write(CH452_DIG1);
363 2 stage_clk_start();
364 2 }
365 1 if(0x7A==key)
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 PAGE 7
366 1 {
367 2 delayms(2);
368 2 counter1=counter1+10;
369 2 CH452_Write(CH452_DIG3 | 1);
370 2 }
371 1 if(0x7B==key)
372 1 {
373 2 delayms(2);
374 2 counter1=counter1-10;
375 2 CH452_Write(CH452_DIG3 | 0);
376 2 }
377 1 EA=1;
378 1 }
379
380 /*定时器0中断子程序*/
381 void T0_ISR(void) interrupt 1 using 0
382 {
383 1 TR0=0;
384 1 TF0=0;
385 1 TH0=0x7D ;
386 1 TL0=0xCC ; //0xCC由0xCB+1得来
387 1 TR0=1;
388 1 if(T0_OF<10)
389 1 T0_OF++;
390 1 else
391 1 {
392 2
393 2 if(sec<59)
394 2 sec++;
395 2 else
396 2 {
397 3 sec=0;
398 3 min++;
399 3 CH452_Write(CH452_DIG3 | min); //先写min,因为人眼分辨不出
400 3 CH452_Write(0x1FB);
401 3 }
402 2 CH452_Write(CH452_DIG1 | (sec%10));
403 2 CH452_Write(CH452_DIG2 | (sec/10));
404 2 if(stage_clk_flag)
405 2 {
406 3 stage_sec++;
407 3 CH452_Write(CH452_DIG4 | (stage_sec%10));
408 3 if(stage_sec/10) CH452_Write(CH452_DIG5 | (stage_sec/10));
409 3 }
410 2 T0_OF=0;
411 2 }
412 1 }
413
414 /*定时器1中断子程序*/
415 void TIMER1_ISR (void) interrupt 3 using 1
416 {
417 1 uchar i;
418 1 TR1=0;
419 1 TF1=0;
420 1 TH1=0x7D;
421 1 TL1=0xFB;
422 1 TR1=1;
423 1 if(time1==1) //执行黑线判断程序17s
424 1 {
425 2 if(--counter1==0)
426 2 {
427 3 TR1=0; //关定时器
C51 COMPILER V8.02 LASTSTOP 09/05/2007 15:15:53 PAGE 8
428 3 time1=0; //标志
429 3 keykey=1;//执行角度黑线判断程序
430 3 black=0; //不执行黑线判断程序
431 3 }
432 2
433 2 }
434 1 if(time2==1) //判断3s后5s显示
435 1 { if(--counter2==0)
436 2 {
437 3 TR1=0; //关定时器
438 3 time2=0;//标志
439 3 keykey=0;
440 3 stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
441 3 CH452_Write(CH452_TWINKLE | 0x30);
442 3 for(i=5;i>0;i--)
443 3 {
444 4 CH452_Write(CH452_DIG7 | i);
445 4 SPOKER=1;
446 4 delay_s(1);
447 4 SPOKER=0;
448 4 delay_s(1);
449 4 }
450 3 CH452_Write(CH452_DIG7);//计数显示
451 3 stage_clk_start();
452 3 forward=1;//平衡后前进
453 3
454 3 }
455 2 }
456 1
457 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2034 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 60 ----
PDATA SIZE = ---- ----
DATA SIZE = 31 25
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 + -