//************************************ //16F88 HI-TECH C v.9.83 // //MPG入力ー−−−入力RB0(外部割り込み) // //cw入力---------RA4 //ccw入力--------RA5 // //LED制御−−−−RA0〜RA3 // RB1〜RB4 // //ルーレットMPGテスター //************************************ #define _LEGACY_HEADERS #include "pic.h" #include "stdlib.h" //#include "lcd.h" #define _XTAL_FREQ 8000000 #define Led_On 0 #define Led_Off 1 #define cw_On 1 #define ccw_On 1 #define LED1 RA0 #define LED2 RA1 #define LED3 RA2 #define LED4 RA3 #define LED5 RB1 #define LED6 RB2 #define LED7 RB3 #define LED8 RB4 static void interrupt isr(void); //unsigned int sensor_On_Off; //unsigned int start_stop; //unsigned int ccw_on; //unsigned int swCount; unsigned int mpgCount; unsigned int cw; unsigned int ccw; __CONFIG(CCPRB3 & DEBUGDIS & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO); void main(){ OSCCON = 0x70;// 内蔵OSC 8MHz CMCON=0x7; //コンパレーターは使わない ANSEL = 0b00000000;// 全部デジタル TRISA = 0b01110000;// RA4.RA5は入力(以外出力) TRISB = 0b00000001;// RB0−MPG入力 PORTA = 0b11001111;// すべてHIGHT PORTB = 0b11111111;// すべてHIGHT //lcd_init();//SD1602の初期化 //OPTION = 0b000000000;//プリスケラ-を2 //初期値設定 //start_stop=0; //swCount=0; //ccw_on=0; //cw=0; mpgCount=1; __delay_ms(1000); //TMR0=157; //TMR0IF = 0;//タイマー0割り込みフラグクリア //TMR0IE = 1;//タイマー0割り込み発生許可 INTEDG = 0;// 立上がりで割り込み INT0IF = 0;// 外部割込みフラグをクリア INT0IE = 1;// 外部割込みの許可 GIE= 1;//割り込み全体の許可 while (1){ } } static void interrupt isr(void){ // 外部割り込みMPG回転のチェック if(INT0IF==1){ if(RA4==cw_On){ mpgCount++; if(mpgCount==9){ mpgCount=1; } } if(RA6==ccw_On){ mpgCount--; if(mpgCount==0){ mpgCount=8; } } switch(mpgCount){ case 1: LED8=Led_Off; LED1=Led_On; LED2=Led_Off; break; case 2: LED1=Led_Off; LED2=Led_On; LED3=Led_Off; break; case 3: LED2=Led_Off; LED3=Led_On; LED4=Led_Off; break; case 4: LED3=Led_Off; LED4=Led_On; LED5=Led_Off; break; case 5: LED4=Led_Off; LED5=Led_On; LED6=Led_Off; break; case 6: LED5=Led_Off; LED6=Led_On; LED7=Led_Off; break; case 7: LED6=Led_Off; LED7=Led_On; LED8=Led_Off; break; case 8: LED7=Led_Off; LED8=Led_On; LED1=Led_Off; break; } } INT0IF=0;//外部割り込みフラグクリアー }