?? 12.lst
字號:
311 1 {
312 2 for(i=0;i<8-j;i++)
313 2 {
314 3 if(value_buf[i]>value_buf[i+1])
315 3 {
316 4 temp=value_buf[i];
317 4 value_buf[i]=value_buf[i+1];
318 4 value_buf[i+1]=temp;
319 4 }
320 3 }
321 2 }
322 1 b_out = value_buf[3];
323 1
324 1 }
325
326 void deal_BLB(void)
327 {
328 1 if(b_out<1300)
329 1 {
330 2 c_0++;
331 2 if(c_0>15)flag=1;
332 2 }
333 1
334 1 if(b_out>1350)
335 1 {
336 2 c_1++;
337 2 if(c_1>15)flag = 0;
338 2
339 2 }
340 1 if((b_out<1350)&&(b_out>1300))
341 1 {
342 2 c_2++;
343 2 c_0=0;
344 2 c_1=0;
345 2 flag = 2;
346 2 }
347 1 }
348
349 void T0INT( ) interrupt 1
350 {
351 1 TH0 = 0x3C;
352 1 TL0 = 0xAF;
353 1 tick ++;
354 1 if(tick>=19)
355 1 {
356 2 tick =0;
357 2 second++ ;
358 2 if(second>=60)
359 2 {
360 3 second=0;
361 3 minute++;
362 3 }
363 2 }
364 1 BLB(); deal_BLB();
365 1 }
C51 COMPILER V8.02 12 10/10/2008 16:00:14 PAGE 7
366
367 //*****************獲取按鍵狀態函數******************
368 unsigned char keyscan(void)
369 {
370 1 uchar recode,sccode;
371 1 KEYROW=0xE0; //將行都設置為低電平
372 1 recode=KEYCOLUM; //獲取列的狀態
373 1 if((recode&0x0F)!=0x0F) //判斷是否有鍵按下和延時去抖動
374 1 {
375 2 // delay(60);
376 2 if((recode&0x0F)!=0x0F)
377 2 {
378 3 sccode=0xFE; //設置行掃描的初始值
379 3 while((sccode&0x20)!=0) //判斷并逐行掃描
380 3 {
381 4 KEYROW=sccode;
382 4 recode=KEYCOLUM;
383 4 if((recode&0x0F)!=0x0F)
384 4 {
385 5 recode=(recode&0x0F)|0xF0; //記錄列號
386 5 sccode=~sccode; //記錄行號
387 5 sccode=sccode<<4; //把行號方到高四位
388 5 keystate=(sccode)+(~recode); //記錄行列狀態,高四位為行號,低四位為列號
389 5 return keystate;
390 5 break;
391 5 }
392 4 else
393 4 sccode=(sccode<<1)|0x01; //行掃描后沒找到按鍵狀態則轉到下一行
394 4 }
395 3 }
396 2 }
397 1 return(0);
398 1 }
399 //**********************按鍵對應的顯示字符**********************************
400 unsigned char Gatkey(char keystate)
401 {
402 1
403 1 switch (keystate)
404 1 {
405 2 case 0x11: keyin='a';
406 2 break;
407 2 case 0x12: keyin='b';
408 2 break;
409 2 case 0x14: keyin='c';
410 2 break;
411 2 case 0x18: keyin='d';
412 2 break;
413 2 case 0x21: keyin='e';
414 2 break;
415 2 case 0x22: keyin='f';
416 2 break;
417 2 case 0x24: keyin='g';
418 2 break;
419 2 case 0x28: keyin='h';
420 2 break;
421 2 case 0x41: keyin='i';
422 2 break;
423 2 case 0x42: keyin='j';
424 2 break;
425 2 case 0x44: keyin='k';
426 2 break;
427 2 case 0x48: keyin='l';
C51 COMPILER V8.02 12 10/10/2008 16:00:14 PAGE 8
428 2 break;
429 2 case 0x81: keyin='m';
430 2 break;
431 2 case 0x82: keyin='n';
432 2 break;
433 2 case 0x84: keyin='0';
434 2 break;
435 2 case 0x88: keyin='p';
436 2 break;
437 2 case 0x01: keyin='q';
438 2 break;
439 2 case 0x02: keyin='r';
440 2 break;
441 2 case 0x04: keyin='s';
442 2 break;
443 2 case 0x08: keyin='t';
444 2 break;
445 2 default: keyin='N' ;
446 2 }
447 1 return keyin;
448 1
449 1 }
450
451 void Setpwm(char channel, unsigned char pwmval)
452 {
453 1 switch (channel )
454 1 {
455 2 case 0:
456 2 CCAP0L = pwmval;
457 2 CCAP0H = pwmval;
458 2 break;
459 2 case 1:
460 2 CCAP1L = pwmval;
461 2 CCAP1H = pwmval;
462 2 break;
463 2 default:
464 2 CCAP0L = pwmval;
465 2 CCAP0H = pwmval;
466 2
467 2 }
468 1
469 1
470 1 }
471 //*****************************************
472 void back(long speed, int no)
473 {
474 1 int i;
475 1 for(i=0;i<no;i++)
476 1 {
477 2 HC573C1 = mai[i%8];
478 2 delay(speed);
479 2 }
480 1 }
481
482 void go(long speed, int no)
483 {
484 1 int i;
485 1 for(i=no;i>0;i--)
486 1 {
487 2 HC573C1 = mai[i%8];
488 2 delay(speed);
489 2 }
C51 COMPILER V8.02 12 10/10/2008 16:00:14 PAGE 9
490 1 }
491
492 void go_left(long speed, int no) //750為90度轉彎
493 {
494 1 int i;
495 1 for(i=no;i>0;i--)
496 1 {
497 2 HC573C1 = mai[i%8]&0x0F+0x10;
498 2 delay(speed);
499 2 }
500 1 }
501
502 void go_right(long speed, int no) //750為90度轉彎
503 {
504 1 int i;
505 1 for(i=no;i>0;i--)
506 1 {
507 2 HC573C1 = mai[i%8]&0xF0+0x01;
508 2 delay(speed);
509 2 }
510 1 }
511
512 void deal_go(void)
513 {
514 1 char mid;
515 1 mid=HC245C1%4;
516 1 if(mid==2)go_left(250,30);
517 1 if(mid==1)go_right(250,30);
518 1 if(mid==3)go(250,50);
519 1 if(mid==0)go(250,50);
520 1 }
521
522 void deal_bi(void)
523 {
524 1 char mid;
525 1 mid=HC245C2%4;
526 1 if(mid==2)go_left(250,50);
527 1 if(mid==1)go_right(250,30);
528 1 if(mid==3)go(250,50);
529 1 if(mid==0)go(250,30);
530 1 }
531
532
533
534 //*****************************************
535 void main()
536 {
537 1
538 1 unsigned int ADs,c,i;
539 1 unsigned int b1=0,b2;
540 1 char ADval[10];
541 1 unsigned int BB=3000;
542 1
543 1 SpiInit();
544 1 LCDInit();
545 1 DisplayString(0,0,"Hello World");
546 1 // delay(10000);
547 1 HC573C1 = 0x01;
548 1 HC573C2 = 0x0F;
549 1 KEYROW = 0x00;
550 1 P1 = 0x01;
551 1
C51 COMPILER V8.02 12 10/10/2008 16:00:14 PAGE 10
552 1 TMOD = 0x01;
553 1 TL0 = 0xAF;
554 1 TH0 = 0x3C;
555 1 ET0 = 1;
556 1 TR0 = 1;
557 1 EA = 1;
558 1 EX0 = 1;
559 1
560 1 CMOD = 0x02;
561 1 CCAPM0 = 0x4A;
562 1 CL =0;
563 1 CCAP0H = 16;
564 1 CCON = 0x40;
565 1
566 1 LcdWCMD( 0x01) ; //顯示清屏
567 1 /*
568 1 b1 = (HC245C1/16)%4;
569 1 while(b1==3)
570 1 {
571 1 deal_go();
572 1 b1 = (HC245C1/16)%4;
573 1 }
574 1 delay(50000);
575 1 go_right(250,750);
576 1 delay(50000);
577 1 b1 = (HC245C1/16)%4;
578 1 while(b1==3)
579 1 {
580 1 deal_bi();
581 1 b1 = (HC245C1/16)%4;
582 1 }
583 1 delay(50000);
584 1 go_left(250,750);
585 1
586 1 delay(50000);
587 1
588 1 b1 = (HC245C1/16)%4;
589 1 while(b1==3)
590 1 {
591 1 deal_bi();
592 1 b1 = (HC245C1/16)%4;
593 1 }
594 1
595 1 delay(50000);
596 1 go_left(250,750);
597 1
598 1 i=1100;
599 1 while(i)
600 1 {
601 1 if(HC245C2%4==3)
602 1 {
603 1 HC573C1 = mai[i%8];
604 1 delay(250);
605 1 i--;
606 1 }
607 1 if(HC245C2%4==2)go_left(250,10);
608 1 if(HC245C2%4==1)go_right(250,10);
609 1 }
610 1 delay(50000);
611 1
612 1 go_right(250,750);
613 1
C51 COMPILER V8.02 12 10/10/2008 16:00:14 PAGE 11
614 1 delay(50000);
615 1 go(250,800);
616 1
617 1 LcdWCMD( 0x01) ;
618 1 while(1){
619 1 DisplayString(11,0,"m s ");
620 1 sprintf(ADval,"%d",second);
621 1 DisplayString(13,0,ADval);
622 1 sprintf(ADval,"%d",minute);
623 1 DisplayString(10,0,ADval);
624 1 }
625 1 */
626 1
627 1 HC573C1 = 0x00;
628 1 EA = 0;
629 1 go(180,1420);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -