📄 108.lst
字号:
318: WR=0;
319: delay1();
320: WR=1;
321: delay1(); //d=0
322:
323: DATA=1;
324: delay1();
325: WR=0;
326: delay1();
327: WR=1;
328: delay1(); //d=1
329: addr=0x1b;
330: addr<<=2; //surpose that ADDR=8bit
331: for (k=0;k<6;k++)
332: {
333: if (addr&0x80)
334: DATA=1;
335: else
336: DATA=0;
337: WR=0;
338: delay1();
339: WR=1;
340: delay1();
341: addr<<=1;
342: }
343: da=j; //0x01--Q1; 0x0e--P; 0x0f--Q1P
344: for(m=0;m<4;m++)
345: {
346: if(da&0x08) //send DATA first ,WR clock second for safety
347: DATA=1;
348: else
349: DATA=0;
350: WR=0;
351: delay1();
352: WR=1;
353: delay1();
354: da<<=1;
355: }
356: }
357:
358: //#pragma interrupt_level 1
359: void Lcd_Black() //全黑屏
360: {
361: uchar k,m,da,i,addr;
362: //write data mode :101
363: CS=1; // pre-initialize
364: delay1();
365: CS=0; // pre-initialize
366: delay1();
367:
368: DATA=1;
369: delay1();
370: WR=0;
371: delay1();
372: WR=1;
373: delay1(); //d=1 data mode 101
374:
375: DATA=0;
376: delay1();
377: WR=0;
378: delay1();
379: WR=1;
380: delay1(); //d=0
381:
382: DATA=1;
383: delay1();
384: WR=0;
385: delay1();
386: WR=1;
387: delay1(); //d=1
388:
389: addr=0x00; //the digit 5's address
390:
391: // Lcd_Write_Data_Addr();
392: //addr<<=2; //surpose that cpu sets ADDR=8bit
393:
394: for (k=0;k<6;k++)
395: {
396: DATA=0;
397: WR=0;
398: delay1();
399: WR=1;
400: delay1();
401: }
402:
403: for(m=0;m<32;m++) //32 addr:00000--------11111
404: {
405: //da=0x08; //TEST DA=0X00,0X01,0X02,0X04,0X08
406: //da<<=4;
407: da=0x00; //TEST DA=0X00,0X10,0X20,0X40,0X80
408: for(i=0;i<4;i++)
409: {
410: if(da&0x80)
411: DATA=1;
412: else
413: DATA=0;
414: WR=0;
415: delay1();
416: WR=1;
417: delay1();
418: da<<=1;
419: }
420: }
421: }
422:
423:
424: void Lcd_Init(void) //initialize the lcd
425: {
426: delay2();
427: Lcd_Write_Com(0b00101001); //own to LCM141 only
428: Lcd_Write_Com(0b00010100); // external oscillator mode
429: Lcd_Write_Com(0b00000001); //open oscillater
430: Lcd_Write_Com(0b00000011);
431: }
432:
433: void Timer_Init(void)
434: {
435: Lcd_Black();
436: clrwdt();
437: INTCON=0xe8; //ei();//GIE=1;PEIE=1;T0IF=0;T0IE=1; T0CS=0;//选内部时钟
438: OPTION=0x87; //分频比为 1:256 ,屏蔽RB口弱上拉~RBPU=1//PSA=0;
439: //TMR0=0x62;
440: TMR1IE=0;
441: //TMR1IF=0;
442: T1CON=0x03; //P13WLT//分频比1:1T1CKPS1=0;T1CKPS0=0;~T1SYNC=0同步;
443: TMR1H=0x00; //赋初值;TMR1CS=1计数;TMR1ON=1;//开启计数器
444: TMR1L=0x00;
445: TMR0=0x97;
446: clrwdt();
447: }
448:
449: #pragma interrupt_level 1
450: void interrupt ISR(void)
451: {
452:
453: if(KEY_F) //莫用 if(RBIE&&RBIF)语句,否则任意键按下都会中断(起作用)
454: {key_f=1;
455: }
456: else
457: {key_f=0;
458: RBIF=0;
459: }
460: if(KEY_SR)
461: {key_sr=1;
462: }
463: else
464: {key_sr=0;
465: RBIF=0;
466: }
467: if(KEY_ADD)
468: {key_add=1;
469: }
470: else
471: {key_add=0;
472: RBIF=0;
473: }
474: if(KEY_F&&KEY_SR) //进入置数状态标志
475: {
476: key_f_sr=1;
477: }
478: else
479: {key_f_sr=0;
480: RBIF=0;
481: }
482: if(KEY_SR&&KEY_ADD)
483: {
484: key_sr_add=1;
485: }
486: else
487: {key_sr_add=0;
488: RBIF=0;
489: }
490:
491: if(KEY_F&&KEY_ADD) //莫用 if(RBIE&&RBIF)语句,清累计量标志
492: {key_f_add=1;
493: } //也可读一下PORTB口
494: else
495: {key_f_add=0;
496: RBIF=0;
497: }
498:
499: if(T0IF&&T0IE) //定时时间1s=(4/640k)*(256-tm0)[158]*(分频比256)*循环次数c[4]
500: {
501: T0IF=0;
502: ct++;
503: TMR0=0x97; //可设初值为4,然后c--;
504: if(ct%2==0)
505: {flag_tmr1=1;
506: flag_turn=!flag_turn;
507: flag_tmr1=0;}
508: if(ct==6) //原为4
509: {
510: flag_tmr0=1;
511: ct=0; }
512: }
513: }
514:
515: void Read_Fre_K() //读出仪表系数
516: {
517: uchar i;
518: uint a,b,c,e;
519: float d,g;
520: uchar da_ee[12];
521:
522: for(i=0;i<4;i++)
523: {da_ee[i]=eeprom_read(255-i);clrwdt();}
524:
525: a=da_ee[0]*1000;clrwdt();
526: b=da_ee[1]*100;clrwdt();
527: c=da_ee[2]*10;clrwdt();
528: F1=a+b+c+da_ee[3];clrwdt();
529:
530: for(i=0;i<8;i++)
531: {da_ee[4+i]=eeprom_read(251-i);clrwdt();}
532: da_ee[4]=eeprom_read(251);
533: d=da_ee[4]*1000;clrwdt();
534: e=da_ee[5]*100;clrwdt();
535: d=(d+e)*100;
536: a=da_ee[6]*1000;clrwdt();
537: b=da_ee[7]*100;clrwdt();
538: c=da_ee[8]*10;clrwdt();
539: K1=da_ee[9]+c+b+a+d;clrwdt();
540:
541:
542: for(i=0;i<4;i++)
543: {da_ee[i]=eeprom_read(243-i);clrwdt();}
544:
545: a=da_ee[0]*1000;
546: b=da_ee[1]*100;
547: c=da_ee[2]*10;
548: F2=a+b+c+da_ee[3];clrwdt();
549:
550: for(i=0;i<8;i++)
551: {da_ee[4+i]=eeprom_read(239-i);clrwdt();}
552:
553: d=da_ee[4]*1000;clrwdt();
554: e=da_ee[5]*100;clrwdt();
555: d=(d+e)*100;
556: a=da_ee[6]*1000;clrwdt();
557: b=da_ee[7]*100;clrwdt();
558: c=da_ee[8]*10;clrwdt();
559: K2=da_ee[9]+c+b+a+d;clrwdt();
560:
561:
562: for(i=0;i<4;i++)
563: {da_ee[i]=eeprom_read(231-i);clrwdt();}
564:
565: a=da_ee[0]*1000;
566: b=da_ee[1]*100;
567: c=da_ee[2]*10;
568: F3=a+b+c+da_ee[3];clrwdt();
569:
570: for(i=0;i<8;i++)
571: {da_ee[4+i]=eeprom_read(227-i);clrwdt();}
572:
573: d=da_ee[4]*1000;clrwdt();
574: e=da_ee[5]*100;clrwdt();
575: d=(d+e)*100;
576: a=da_ee[6]*1000;clrwdt();
577: b=da_ee[7]*100;clrwdt();
578: c=da_ee[8]*10;clrwdt();
579: K3=da_ee[9]+c+b+a+d;clrwdt();
580:
581:
582: for(i=0;i<4;i++)
583: {da_ee[i]=eeprom_read(219-i);clrwdt();}
584:
585: a=da_ee[0]*1000;clrwdt();
586: b=da_ee[1]*100;clrwdt();
587: c=da_ee[2]*10;clrwdt();
588: F4=a+b+c+da_ee[3];clrwdt();
589:
590: for(i=0;i<8;i++)
591: {da_ee[4+i]=eeprom_read(215-i);clrwdt();}
592: d=da_ee[4]*1000;clrwdt();
593: e=da_ee[5]*100;clrwdt();
594: d=(d+e)*100;
595: a=da_ee[6]*1000;clrwdt();
596: b=da_ee[7]*100;clrwdt();
597: c=da_ee[8]*10;clrwdt();
598: K4=da_ee[9]+c+b+a+d;clrwdt();
599:
600:
601: for(i=0;i<4;i++)
602: {da_ee[i]=eeprom_read(207-i);clrwdt();}
603:
604: a=da_ee[0]*1000;clrwdt();
605: b=da_ee[1]*100;clrwdt();
606: c=da_ee[2]*10;clrwdt();
607: F5=a+b+c+da_ee[3];clrwdt();
608:
609: for(i=0;i<8;i++)
610: {da_ee[4+i]=eeprom_read(203-i);clrwdt();}
611: d=da_ee[4]*1000;clrwdt();
612: e=da_ee[5]*100;clrwdt();
613: d=(d+e)*100;
614: a=da_ee[6]*1000;clrwdt();
615: b=da_ee[7]*100;clrwdt();
616: c=da_ee[8]*10;clrwdt();
617: K5=da_ee[9]+c+b+a+d;clrwdt();
618:
619:
620: for(i=0;i<4;i++)
621: {da_ee[i]=eeprom_read(195-i);clrwdt();}
622: a=da_ee[0]*1000;clrwdt();
623: b=da_ee[1]*100;clrwdt();
624: c=da_ee[2]*10;clrwdt();
625: F6=a+b+c+da_ee[3];clrwdt();
626:
627: for(i=0;i<8;i++)
628: {da_ee[4+i]=eeprom_read(191-i);clrwdt();}
629: d=da_ee[4]*1000;clrwdt();
630: e=da_ee[5]*100;clrwdt();
631: d=(d+e)*100;
632: a=da_ee[6]*1000;clrwdt();
633: b=da_ee[7]*100;clrwdt();
634: c=da_ee[8]*10;clrwdt();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -