volatile bit rx_event;volatile bit sw_u;volatile bit sw_d;volatile bit btnSW;char RxDat[10];char tmp[7];#define LswD PORTA.B0#define LswU PORTA.B1#define Proxity PORTA.B2#define TraRED PORTB.B6#define TraGREEN PORTB.B0#define MotorDn PORTB.B2#define MotorUp PORTA.B3void RxStatus() { //data receive part char *res; res = strpbrk("U",RxDat); if(res > 0) { sw_d=0; sw_u=1; } res = strpbrk("D",RxDat); if(res > 0) { sw_u=0; sw_d=1; } res = strpbrk("R",RxDat); if(res > 0) { TraRED = 1; TraGREEN = 0; } res = strpbrk("G",RxDat); if(res > 0) { TraRED = 0; TraGREEN = 1; } res = strpbrk("S",RxDat); if(res > 0) { TraRED = 0; TraGREEN = 0; }}void main() { rx_event=0; sw_u=0; sw_d=0; btnSW=0; PORTA = 0; PORTB = 0; TRISA = 0b00000111; TRISB = 0b00110010; ADCON1 = 0b11111111; UART1_Init(9600); //initialize baud rate 9600 Delay_ms(100); // delay by 100ms PIR1.RCIF = 0; //? PIE1.RCIE = 1; //? RCSTA.SPEN = 1; //? INTCON.PEIE = 1; //? INTCON.GIE = 1; //? PWM1_Init(255); //? Delay_ms(100); // delay by 100ms PWM1_Set_Duty(130); //? PWM1_Start(); //? Delay_ms(1000); // delay by 1000ms while(1) { // loop forever if(rx_event) { rx_event=0; RxStatus(); } if(PORTB.B5 == 0) { Delay_ms(20); // delay by 20ms if(PORTB.B5 == 1) { if(LswU == 0) sw_d=1; else if(LswD == 0) sw_u=1; } } if(Proxity == 0) { Delay_ms(15); // delay by 15ms if(Proxity == 1) { Delay_ms(1000); // delay by 1000ms if(LswU == 0) sw_d=1; UART1_Write_Text("PASS"); } } if(sw_u) { PWM1_Set_Duty(150); MotorDn = 0; MotorUp = 1; sw_u=0; } if(sw_d) { PWM1_Set_Duty(80); MotorUp = 0; MotorDn = 1; sw_d=0; } if(LswU == 0) MotorUp = 0; if(LswD == 0) MotorDn = 0; }}void interrupt(void) { if(PIR1.RCIF) { UART1_Read_Text(RxDat, "\n", 10); // "\n"? rx_event=1; }}
PIR1.RCIF = 0; //? PIE1.RCIE = 1; //? RCSTA.SPEN = 1; //? INTCON.PEIE = 1; //? INTCON.GIE = 1; //?
PIC18F1220 pala ginamit ko dito
PWM1_Init(255); //? PWM1_Set_Duty(130); //? PWM1_Start(); //?
salamat.. i'll try