📄 aa.lst
字号:
333 2 {
334 3 ad_convert1(); /////启动ad准备采样,并确定完采样周期,开始采样
335 3 }
336 2
337 2
338 2
339 2
340 2
341 2
342 2 if(N_Hz_Count > 128)
343 2 {
344 3
345 3 DispConvert();
346 3 if(x == 16 )
347 3 {EA = 0;
348 4 //init_lcd ();
349 4 //clrram();
350 4 lat_disp (0x00,0x00);
351 4
352 4
353 4 chn_disp1 (tab2); //////上半屏显示中文
354 4 img_disp1 (tab1); //////下半屏显示图形
355 4 //delay1(200);
356 4
357 4 for(a=0;a<16;a++) ////////////清除记录图形的tab1
358 4 for(b=0;b<32;b++)
359 4 tab1[a+b*16]=0x00;
360 4
361 4 N_Hz_Count = 0;
362 4 TR0 = 1; //开定时器T0
363 4 EIE2 &= ~0x02 ; //关AD中断
364 4 CPT0CN |=0x80;//开比较器
365 4 drawing_flag = 0;
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 7
366 4 ad_init_flag = 1;
367 4 EA = 1;
368 4 }
369 3 }
370 2
371 2
372 2
373 2
374 2 }
375 1 } //main的括号
376
377
378 void cp0(void)
379 {
380 1 if (TF0==1)
381 1 {
382 2 //t0_count --;
383 2 //if (t0_count == 0)
384 2 //{
385 2 EA = 0;
386 2 CPT0CN &=0x7F; //关比较器
387 2 TR0=0; //关定时器T0
388 2 t0_inter_handle();
389 2 t0_count = 25;
390 2 cp0_count= 0;
391 2 TL0 = 0xAB;
392 2 TH0 = 0x2F;
393 2 //TR0 = 1;
394 2 //CPT0CN |=0x80; //开比较器
395 2 //TF0 = 0;
396 2 EA = 1;
397 2 //}
398 2 //TL0 =0xAB; // 1/16M*12*53333=40ms 即T0 40MS中断一次
399 2 //TH0 =0x19;
400 2
401 2 }
402 1 }
403
404 void t0_inter_handle(void)
405 {
406 1 uint i,j;
407 1 uchar qian,bai,shi,gew,dian_bai,dian_shi,dian_gew;
408 1 cp0_count *= 25;
409 1 i = cp0_count/1000;
410 1 j = cp0_count%1000;
411 1 qian = i/1000;
412 1 bai = (i-qian*1000)/100;
413 1 shi = (i-qian*1000-bai*100)/10;
414 1 gew = i%10;
415 1 dian_bai = j/100;
416 1 dian_shi = (j-dian_bai*100)/10;
417 1 dian_gew = j%10;
418 1 qian += 0xB0;
419 1 bai += 0xB0;
420 1 shi += 0xB0;
421 1 gew += 0xB0;
422 1 dian_bai += 0xB0;
423 1 dian_shi += 0xB0;
424 1 dian_gew += 0xB0;
425 1 wr_lcd (comm,0x30);
426 1 wr_lcd (comm,0x0C);
427 1 wr_lcd (comm,0x88);
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 8
428 1 if (qian==0xB0)
429 1 {
430 2 wr_lcd (dat,0x20);wr_lcd (dat,0x20);
431 2 if (bai==0xB0)
432 2 {
433 3 wr_lcd (dat,0x20);wr_lcd (dat,0x20);
434 3 if (shi==0xB0){wr_lcd (dat,0x20);wr_lcd (dat,0x20);} //隐藏数字
435 3 else {wr_lcd (dat,0xA3);wr_lcd (dat,shi);}
436 3 }
437 2 else
438 2 {
439 3 wr_lcd (dat,0xA3);wr_lcd (dat,bai);
440 3 wr_lcd (dat,0xA3);wr_lcd (dat,shi);
441 3 }
442 2 }
443 1 else
444 1 {
445 2 wr_lcd (dat,0xA3);
446 2 wr_lcd (dat,qian);
447 2 wr_lcd (dat,0xA3);
448 2 wr_lcd (dat,bai);
449 2 wr_lcd (dat,0xA3);
450 2 wr_lcd (dat,shi);
451 2 }
452 1 wr_lcd (dat,0xA3);
453 1 wr_lcd (dat,gew);
454 1 wr_lcd (comm,0x8D);
455 1 wr_lcd (dat,0xA3);
456 1 wr_lcd (dat,dian_bai);
457 1 wr_lcd (dat,0xA3);
458 1 wr_lcd (dat,dian_shi);
459 1 wr_lcd (dat,0xA3);
460 1 wr_lcd (dat,dian_gew);
461 1 }
462
463
464
465 void show_init (void)
466 {
467 1
468 1 LEDA=1;
469 1 fys(tab0);
470 1 delay(1000);
471 1 }
472
473 /*void t0_init(void)
474 {
475
476
477 CKCON = 0x00;
478 TCON = 0x01;
479 TH0 = 0xfc;
480 TL0 = 0x17;
481 EA = 1;
482 TR0 = 1;
483 ET0 = 1;
484 ;
485
486 }
487 */
488 void chn_disp1 (uchar code *chn)
489 {
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 9
490 1 uchar i,j;
491 1 wr_lcd (comm,0x30);
492 1 wr_lcd (comm,0x80);
493 1 j=0;
494 1 for (i=0;i<16;i++)
495 1 wr_lcd (dat,chn[j*16+i]);
496 1 wr_lcd (comm,0x90);
497 1 j=1;
498 1 for (i=0;i<16;i++)
499 1 wr_lcd (dat,chn[j*16+i]);
500 1 }
501
502 void img_disp1 (uchar *img)
503 {
504 1 uchar i,j;
505 1 for(i=0;i<8;i++)
506 1 {
507 2 for(j=0;j<32;j++)
508 2 {
509 3 wr_lcd (comm,0x34);
510 3 wr_lcd (comm,y+j);
511 3 wr_lcd (comm,x2+i);
512 3 wr_lcd (comm,0x30);
513 3 wr_lcd (dat,img[j*16+i*2]);
514 3 wr_lcd (dat,img[j*16+i*2+1]);
515 3
516 3 wr_lcd (comm,0x36);
517 3
518 3 delay1(500);
519 3
520 3
521 3 }
522 2 // wr_lcd (comm,0x36);
523 2 }
524 1 // wr_lcd (comm,0x36);
525 1 // wr_lcd (comm,0x34); ///////////////////////////////////////////////////////////////////////////////
-/////////////
526 1
527 1 }
528
529 void fys(uchar code *tab)
530 {
531 1 uchar n;
532 1 wr_lcd (comm,0x30);
533 1 wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
534 1 for(n=0;n<64;n++)
535 1 {
536 2 wr_lcd (dat,*(tab+n));
537 2 }
538 1 n=0;
539 1 }
540
541 void chk_busy (void)
542 {
543 1
544 1 LCDRS = 0;
545 1 delay1(2);
546 1 RW =1;
547 1 delay1(2);
548 1 LCDEN = 1;
549 1 delay1(2);
550 1 P3=0xff;
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 10
551 1 while(DB7==1);
552 1 LCDEN=0;
553 1 delay1(2);
554 1
555 1 }
556
557
558 void wr_lcd (uchar dat_comm,uchar content)
559 {
560 1 chk_busy ();
561 1 if(dat_comm)
562 1 {
563 2
564 2 LCDRS=1; //data
565 2 delay1(2);
566 2 RW=0; //write
567 2 delay1(2);
568 2 }
569 1 else
570 1 {
571 2 LCDRS=0; //command
572 2 delay1(2);
573 2 RW=0; //write
574 2 delay1(2);
575 2 }
576 1
577 1 P3=content; //output data or comm
578 1 LCDEN=1;
579 1 delay1(2);
580 1 ;
581 1 // chk_busy ();
582 1
583 1 LCDEN=0;
584 1 delay1(2);
585 1 }
586
587
588 void init_lcd (void)
589 {
590 1 LEDA = 1;
591 1 LCDRST=1;
592 1 delay1(2);
593 1 wr_lcd (comm,0x30); /*30---基本指令动作*/
594 1 wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
595 1 wr_lcd (comm,0x06); /*光标的移动方向*/
596 1 wr_lcd (comm,0x0C); /*开显示,关游标*/
597 1 }
598
599 void clrram (void)
600 {
601 1 wr_lcd (comm,0x30);
602 1 wr_lcd (comm,0x01);
603 1 }
604
605 void lat_disp (uchar data1,uchar data2)
606 {
607 1 uchar i,j,x;//k,x;
608 1 x=x1;
609 1 //for(k=0;k<2;k++)
610 1 //{
611 1 for(j=0;j<16;j++)
612 1 {
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 11
613 2 for(i=0;i<8;i++)
614 2 {
615 3 wr_lcd (comm,0x34);
616 3 wr_lcd (comm,y+j*2);
617 3 wr_lcd (comm,x+i);
618 3 wr_lcd (comm,0x30);
619 3 wr_lcd (dat,data1);
620 3 wr_lcd (dat,data1);
621 3 }
622 2 for(i=0;i<8;i++)
623 2 {
624 3 wr_lcd (comm,0x34);
625 3 wr_lcd (comm,y+j*2+1);
626 3 wr_lcd (comm,x+i);
627 3 wr_lcd (comm,0x30);
628 3 wr_lcd (dat,data2);
629 3 wr_lcd (dat,data2);
630 3 }
631 2 }
632 1 //x=x2;
633 1 // }
634 1 wr_lcd (comm,0x36);
635 1 }
636
637 void delay (uint us) //delay time
638 {
639 1 while(us--);
640 1 }
641 void delay1 (uint ms)
642 {
643 1 uint i,j;
644 1 for(i=0;i<ms;i++)
645 1 for(j=0;j<15;j++)
646 1 delay(1);
647 1 }
648
649 void ad_convert1(void)
650 {ad_until=0;
651 1 ad_count = 0;
652 1 ad_add= 0;
653 1 ad_flag= 1;
654 1 EA = 0;
655 1 CKCON = 0x00; //0x00时T2时钟为系统时钟的12分频,0x02时为系统时钟.
656 1 AMX0SL = 0x01; // AMUX Channel Select Register
657 1 AMX0CF = 0x00; // AMUX Configuration Register
658 1 ADC0CN = 0xCC; // ADC Control Register
659 1 //TH2 = 0x00;
660 1 //TL2 = 0x00;
661 1 //TH2 = 0x3C;
662 1 //TL2 = 0xB0; // T2要计数50000次才会溢出.
663 1
664 1 //T2 = 65465; //最大溢出一次的时间:(1/16M)*12*65536=49.152ms 现在是70*0.75=50us
665 1
666 1 if(low_freq == 1)
667 1 {T2 = 65465;
668 2 RCAP2 = 65465;
669 2 }
670 1 else if(low_freq == 0)
671 1 {T2 = 0xffff-(int)((129/((double)cp0_count*128))/(49.152))*0xffff;
672 2 RCAP2=0xffff-(int)((129/((double)cp0_count*128))/(49.152))*0xffff; //自动重装值为0x0000 溢出一次计65536
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -