//************************************************************ // PIC takometer for LED // tako41.c 2010/03/28 EDIT Start // // 2010/04/03 デジタルタコメータと相合校正定数変更 //2010/04/04 デモンストレーション追加(長いです // Xtal 4MHz Bar LED only Ver // Plus RX Timer=600msec // 600rpm: T=100msec's plus //1000rpm T=60msec PLUS //5000rpm T=12msec PLUS // 6000rpm 10msec PLUS #include #include #include //timer 0 overflow cont 244x819.2usec=200nsec #define TAKOTIME 85 ///--------PIC16F873--------------------// //---set for RAM ----- BYTE Timer_flag; // interrupt ck flag 1 is INT return BYTE Tako_rxcnt; //*timer0 overflow counter if Tako_rxcnt=Takotime Plus catch BYTE Tako_rxcnt2; //600msec counte BYTE Dotled_x; //dot matrxLED X 0-15 BYTE Dotled_y; BYTE Vcyara_pointer; //HAIRETU NO "1"--> 1 Chrjene[1] [0] -->[1] [3] BYTE RPM; BYTE LED; BYTE LED2; BYTE DSP_TMP; BYTE DEMO; //////// //////// const int QuickInt = 1; // Quick Interrupt void interrupt(); void init_port(); void Led_dt(); void Wat(); ////**test waiting dummy void Start_demo(); //*************************************************************// void main() { init_port(); Wait (1); INTCON = INTCON | (1< TMR0 INTCON = 0x00 ; // All IRQ OFF ADCON1=0x07; //AN0->AN7 all digtal } //---タコメータパルス表示----------------- void Led_dt() { RPM=TMR1L; TMR1L=0; LED=0xff; LED2=0xff; if (RPM>4) { LED=0xfe; } if (RPM>10) { LED=0xfc; } if (RPM>15) { LED=0xf8;} if (RPM>20) { LED=0xf0; } if (RPM>25) { LED=0xe0; } if (RPM>30) { LED=0xc0; } if (RPM>35) { LED=0x80; } if (RPM>40) { LED=0x00; } if (RPM>45) { LED=0x00; LED2=0xfe; } if (RPM>50) { LED=0x00; LED2=0xfc; } if (RPM>56) { LED=0x00; LED2=0xf8; } if (RPM>60) { LED=0x00; LED2=0xf0; } } void Start_demo() { for (DEMO=1; DEMO<6; ++DEMO) { PORTB=0x00; PORTA=0xf0; Wait(160); PORTB=0xff; PORTA=0xff; Wait(160); } PORTB=0xff; PORTA=0xff; LED=1; for (DEMO=0; DEMO<=8; ++DEMO) {PORTB=~LED; Wait(80); LED<<=1; } LED=1; for (DEMO=0; DEMO<=4; ++DEMO) {PORTA=~LED; Wait(80); LED<<=1; } PORTB=0xff; PORTA=0xff; LED=1; for (DEMO=0; DEMO<=8; ++DEMO) {PORTB=~LED; Wait(80); LED<<=1; } LED=1; for (DEMO=0; DEMO<=4; ++DEMO) {PORTA=~LED; Wait(80); LED<<=1; } PORTB=0xff; PORTA=0xff; LED=1; for (DEMO=0; DEMO<=8; ++DEMO) {PORTB=~LED; Wait(80); LED<<=1; } LED=1; for (DEMO=0; DEMO<=4; ++DEMO) {PORTA=~LED; Wait(80); LED<<=1; } PORTB=0xff; PORTA=0xff; LED=1; for (DEMO=0; DEMO<=8; ++DEMO) {PORTB=~LED; Wait(80); LED<<=1; } LED=1; for (DEMO=0; DEMO<=4; ++DEMO) {PORTA=~LED; Wait(80); LED<<=1; } PORTB=0xff; PORTA=0xff; LED=1; for (DEMO=0; DEMO<=8; ++DEMO) {PORTB=~LED; Wait(80); LED<<=1; } LED=1; for (DEMO=0; DEMO<=4; ++DEMO) {PORTA=~LED; Wait(80); LED<<=1; } Wait(1000); PORTB=0xff; PORTA=0xff; }