📄 timerauto.lst
字号:
259 1 else if(f==0&&g==0)
260 1 {
261 2 speedchange(modi,1);
262 2 speedchange(modi,0);
263 2 }
264 1 else
265 1 {
266 2 START=0;
267 2 stage_clk_stop();
268 2 TR0=0;
269 2
270 2 }
271 1 delayms(dem);
272 1 }
273
274
275 void main(void)
276 {
277 1 uchar chazhi=4;
278 1 uchar chazhi1;
279 1 Init_Device();
280 1 CH452_Init(); /* CH452初始化 */
281 1 LEDG=0;
282 1 SPOKER=0;
283 1 IN0=1;
284 1 IN1=1;
285 1 IN2=1;
286 1 //IN3=1;
287 1 //IN4=1;
288 1 IN5=1;
289 1 IN6=1;
290 1 START=0;
291 1 time1=1;
292 1 time2=1;
293 1 counter1=170;
294 1 counter2=30;
295 1 EA=1;
296 1
297 1 //BACK=0;
298 1 while(1)
299 1 {
300 2 LEDG=~LEDG;
301 2 avge=pingjun();
302 2 if(xianshi==1)
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 6
303 2 {BCD_H_L(avge-200,0); }
304 2 a=IN0;
305 2 bb=IN1;
306 2 c=IN2;
307 2 //d=IN3;
308 2 //e=IN4;
309 2 f=IN5;
310 2 g=IN6;
311 2 if(backward==1)
312 2 {
313 3 START=1;
314 3 BACK=0;
315 3 judgementback(90,20,20);
316 3 }
317 2
318 2 if(forward==1)
319 2 {
320 3 START=1;
321 3 BACK=1; //前进
322 3 judgement(90,20,20);
323 3
324 3 }
325 2 if(black==1)
326 2 {
327 3 START=1;
328 3 TR1=1; //开定时器
329 3 time2=0;
330 3 judgement(90,20,20);
331 3 }
332 2 if(keykey==1)
333 2
334 2 {
335 3 chazhi1=abs((int)(avge-avge0));
336 3 if(chazhi1>=20)
337 3 {
338 4 START=1;
339 4 counter2=30;
340 4 if(avge>(avge0+chazhi-3))
341 4 {
342 5 BACK=0;
343 5 //delayms(5);
344 5 judgementback(0,50,15);
345 5 }
346 4 if(avge<(avge0-chazhi))
347 4 {
348 5
349 5 BACK=1;
350 5 //delayms(5);
351 5 judgement(0,50,15);
352 5
353 5 }
354 4 }
355 3 else if((chazhi1<20)&&(chazhi1>10))
356 3 {
357 4 counter2=30;
358 4 if(avge>(avge0+chazhi-3))
359 4 {
360 5 START=1;
361 5 BACK=0;
362 5 //delayms(5);
363 5 judgementback(0,50,15);
364 5 }
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 7
365 4 if(avge<(avge0-chazhi))
366 4 {
367 5 START=1;
368 5 BACK=1;
369 5 //delayms(5);
370 5 judgement(0,50,15);
371 5 }
372 4 }
373 3 else
374 3 {
375 4 START=0;
376 4 TR1=1; //开定时器
377 4 time1=0;
378 4 time2=1;
379 4
380 4 }
381 3 }
382 2
383 2 }
384 1 }
385 /*PCA中断子程序*/
386 void PCA_ISR (void) interrupt 9
387 {
388 1
389 1 CCF0 = 0; /*清匹配中断标志*/
390 1
391 1 }
392 /*键盘中断子程序*/
393 void led(void) interrupt 19
394 {
395 1 uchar key,t;
396 1 EA=0;
397 1
398 1 key=CH452_Read();
399 1
400 1 if(0x62==key)
401 1 {
402 2 delayms(2);
403 2 avge0=avge;
404 2 black=0;
405 2 BCD_H_L(avge0-200,1);
406 2 }
407 1 if(0x63==key)
408 1 {
409 2 delayms(2);
410 2 black=1;
411 2 xianshi=0;
412 2 TR0=1;
413 2 for(t=0;t<8;t++)
414 2 CH452_Write((CH452_DIG0+ (t<<8))|16);
415 2 CH452_Write(CH452_DIG1);
416 2 stage_clk_start();
417 2 }
418 1 if(0x7A==key)
419 1 {
420 2 delayms(2);
421 2 counter1=counter1+10;
422 2 CH452_Write(CH452_DIG3 | 1);
423 2 }
424 1
425 1 if(0x7B==key)
426 1 {
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 8
427 2 delayms(2);
428 2 counter1=counter1-10;
429 2 CH452_Write(CH452_DIG3 | 0);
430 2 }
431 1
432 1 EA=1;
433 1 }
434
435 /*定时器0中断子程序*/
436 void T0_ISR(void) interrupt 1 using 0
437 {
438 1 TR0=0;
439 1 TF0=0;
440 1 TH0=0x7D ;
441 1 TL0=0xCC ; //0xCC由0xCB+1得来
442 1 TR0=1;
443 1 if(T0_OF<10)
444 1 T0_OF++;
445 1 else
446 1 {
447 2
448 2 if(sec<59)
449 2 sec++;
450 2 if(sec==59)
451 2 {
452 3 sec=0;
453 3 min++;
454 3 CH452_Write(CH452_DIG3 | min); //先写min,因为人眼分辨不出
455 3 //CH452_Write(CH452_DIG3 | (min/10));
456 3 CH452_Write(0x1FB);
457 3 }
458 2 CH452_Write(CH452_DIG1 | (sec%10));
459 2 CH452_Write(CH452_DIG2 | (sec/10));
460 2 if(stage_clk_flag)
461 2 {
462 3 stage_sec++;
463 3 CH452_Write(CH452_DIG4 | (stage_sec%10));
464 3 if(stage_sec/10) CH452_Write(CH452_DIG5 | (stage_sec/10));
465 3 }
466 2 T0_OF=0;
467 2 }
468 1 }
469
470 /*定时器1中断子程序*/
471 void TIMER1_ISR (void) interrupt 3 using 1
472 {
473 1 uchar i;
474 1 TF1=0;
475 1 TH1=0x7D;
476 1 TL1=0xFB;
477 1 if(time1==1) //执行黑线判断程序17s
478 1 {
479 2 if(--counter1==0)
480 2 {
481 3 TR1=0; //关定时器
482 3 time1=0; //标志
483 3 keykey=1;//执行角度黑线判断程序
484 3 black=0; //不执行黑线判断程序
485 3 }
486 2
487 2 }
488 1 if(time2==1) //判断3s后5s显示
C51 COMPILER V8.02 TIMERAUTO 09/05/2007 11:19:18 PAGE 9
489 1 { if(--counter2==0)
490 2 {
491 3 TR1=0; //关定时器
492 3 time2=0;//标志
493 3 keykey=0;
494 3 stage_clk_stop();//显示平衡的时间
495 3 for(i=5;i>0;i--)
496 3 {
497 4 CH452_Write(CH452_DIG7 | i);
498 4 SPOKER=1;
499 4 delay_s(1);
500 4 SPOKER=0;
501 4 delay_s(1);
502 4 }
503 3 CH452_Write(CH452_DIG7);//计数显示
504 3 stage_clk_start();
505 3 forward=1;//平衡后前进
506 3
507 3 }
508 2 }
509 1
510 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1780 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 60 ----
PDATA SIZE = ---- ----
DATA SIZE = 31 27
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -