#include #include //遅延処理用 #include //INT0,INT1割り込み用 #include //シリアル通信用 #include //これ入れるとprintfが使える #pragma config OSC=HSPLL, PWRT=ON #pragma config BOR=ON, BORV=42, WDT=OFF #pragma config STVR=OFF, LVP=OFF, DEBUG=OFF #pragma config CP0=OFF, CP1=OFF, CP2=OFF, CP3=OFF, CPB=OFF #pragma config CPD=OFF, WRT0=OFF, WRT1=OFF, WRT2=OFF, WRT3=OFF #pragma config EBTR1=OFF, EBTR2=OFF, EBTR3=OFF, EBTRB=OFF // int i = 0; int k = 0; int bufout = 0; char data = 0; char temp_Buf[20] = {0}; char* Buf_point; //割り込み処理*************************************/ #pragma interrupt hi_int//HIGE INT Sub name is hi_int #pragma interruptlow low_int//LOW INT Sub name is low_int #pragma code HIGH_INTERRUPT_VECTOR=0x08//HIGH INT AdrSet void HIGH_ISR (void){_asm goto hi_int _endasm} #pragma code LOW_INTERRUPT_VECTOR = 0x18//LOW INT AdrSet void LOR_ISR (void){_asm goto low_int _endasm} #pragma code void hi_int(void){ USART_Read////////////////////////////////// if(PIR1bits.RCIF == 1){ PIR1bits.RCIF = 0; temp_Buf[i] = getcUSART(); if(temp_Buf[i] == '\n' || temp_Buf[i] == '\r'){ temp_Buf[i] = '0'; //Buf_point = &temp_Buf[0]; //printf("%s\r\n",Buf_point); bufout = 1; i = 0; }else{ if(i == 20) i = 0; else i++; } } INT0//////////////////////////////////////// if(INTCONbits.INT0IF == 1){ INTCONbits.INT0IF = 0; LATDbits.LATD2 = !LATDbits.LATD2; printf("Hello TGK!\r\n"); } } void low_int(void){ INT1//////////////////////////////////////// if(INTCON3bits.INT1IF == 1){ INTCON3bits.INT1IF = 0; LATDbits.LATD2 = !LATDbits.LATD2; printf("int2\r\n"); } } //************************************************/ void main(void) { /*PORT sample TRISA = 0xC3; LATA = 0x24; //8bit全出力 LATB LATC・・・・ LATAbits.LATA3 = 1; //1bit出力 LATBbits.LATB・・・・ Data = PORTA; //8bit入力 PORTB PORTC・・・ SW1 = PORTA,RA0; //1bit入力 PORTB,RB2・・・ */ TRISA = 0; TRISB = 0xFF; TRISC = 0x80; TRISD = 0; TRISE = 0; /*INT0 sample //#include PORTB_CHANGE_INT_ON;//INT0 on FALLING_EDGE_INT;//Low Edge PORTB_PULLUPS_ON;//pullup on */ OpenRB0INT(PORTB_CHANGE_INT_ON & PORTB_PULLUPS_ON & FALLING_EDGE_INT); OpenRB1INT(PORTB_CHANGE_INT_ON & PORTB_PULLUPS_ON & FALLING_EDGE_INT); //USART -> TRISC = 0x80;//USART RC6=0:OUT:TX RC7=1:IN:RX OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 129); //all mode RCONbits.IPEN = 1;//INT HiLow ON=1 OFF=0; IPR1bits.RCIP =1;//USART_READ HI INTCON3bits.INT1IP = 0;//int1 low INTCONbits.GIEL = 1;//low int ok INTCONbits.GIEH = 1;//high int ok while(1) { /*USART 1char Read data = getcUSART(); //Key -> [\n]=[CTRL+ENTER] [\r]=[ENTER] if(data == 'a' || data == '\n' || data == '\r'){ LATDbits.LATD2 = !LATDbits.LATD2; printf("Read OK\r\n"); } */ if(bufout == 1){ Buf_point = &temp_Buf[0]; printf("%s\r\n",Buf_point); for(k=0;k<20;k++) temp_Buf[k] = 0;//temp_Buf Cleare bufout = 0; } } }