/* タッチセンサー 2012/10/25 BY M.K CONFIG1 :$8007 : 0x3984 CONFIG2 :$8008 : 0x1613 [1603=OK] mikroC PRO V5.61 PIC12F1822 RA0/1=入力 RA5/4=出力 8MHz OSC 2012/10/30 Used Rom = 570 words */ unsigned int CPS_ave=0; //平均値 unsigned int CPS_Ref[1]; //初期値 char CPS_CH; //チヤンネル void interrupt(){ if (INTCON.TMR0IF==1) //Timer0 INTCON.TMR0IF=0; if (PIR1.TMR1GIF==1) //Timer1 PIR1.TMR1GIF=0; } unsigned int CPS_sns() //CP READ { CPSCON1=CPS_CH; //set of CPS_CH TMR1H=0; TMR1L=0; TMR0 =0; INTCON.GIE=1; T1GCON.T1GGO_NOT_DONE=1; while(T1GCON.T1GGO_NOT_DONE); INTCON.GIE=0; return TMR1L; } unsigned int CPS_avsns() { char i; if(CPS_CH==0){ // CH=0 TRISA0_bit=1; TRISA1_bit=0; AN0_bit=1; //ANSELA0 AN1_bit=0; } else { TRISA0_bit=0; //CH=1 TRISA1_bit=1; AN0_bit=0; AN1_bit=1; } CPS_ave = 0; for(i=0;i<16;i++){ CPS_ave += CPS_sns(); } return (CPS_ave/16); } char sw_f() // TSW ON? { if(CPS_avsns() < CPS_Ref[CPS_CH]) return 1; else return 0; } void main() { OSCCON=0xF0; // 8MHz ANSELA=0b00000011; TRISA =0b00000011; PORTA=0; OPTION_REG=0b11000100; //TMR0 8MHz*4*256*32=4096uS T1CON =0b11000101; //TMR1 Pre=0 T1GCON=0b11111001; CPSCON0=0b10001100; // CPS-MODULE low 18uA Delay_ms(1000); // for CPS-MODULE // Interrupt PIR1.TMR1GIF=0; //Timer1 PIE1.TMR1GIE=1; INTCON.TMR0IF=0; //Timer0 INTCON.TMR0IE=1; INTCON.PEIE=1; INTCON.GIE=0; // set of References LATA5_bit=1; // LED-ON CPS_CH=0; // 0ch CPS_Ref[CPS_CH]=CPS_avsns()*0.9; CPS_CH=1; // 1ch CPS_Ref[CPS_CH]=CPS_avsns()*0.9; Delay_ms(500); LATA5_bit=0; //OFF // while(1){ CPS_CH=0; //CH=0 if (sw_f()==1) LATA5_bit=1; else LATA5_bit=0; // CPS_CH=1; //CH=1 if (sw_f()==1) LATA4_bit=1; else LATA4_bit=0; } }