#include #define myPC0bit PORTCbits.RC0 #define myPC1bit PORTCbits.RC1 void chk_isr(void); void chk_low_isr(void); void T0_ISR(void); void T1_ISR(void); void TX_ISR(void); void RC_ISR(void); #pragma code My_HiPrio_Int =0x0008 void My_HiPrio_Int (void) { _asm GOTO chk_isr _endasm } #pragma code My_Lo_Prio_Int =0x00018 void My_Lo_Prio_Int (void) { _asm GOTO chk_low_isr _endasm } #pragma interruptlow chk_low_isr void chk_low_isr (void) { if(PIR1bits.TMR1IF==1) T1_ISR(); if (PIR1bits.TXIF==1) TX_ISR( ); } #pragma interrupt chk_isr void chk_isr (void) { if (PIR1bits.TMR1IF==1) T0_ISR( ); if (PIR1bits.RCIF==1) RC_ISR( ); } void main(void) { TRISCbits.TRISC0=0; TRISCbits.TRISC1=0; TRISD = 255; TRISB = 0; T0CON=0x08; TMR0H=0xFF; TMR0L=0x00; INTCONbits.TMR0IF=0; T1CON=0x0; TMR1H=0xFF; TMR1L=0x00; PIR1bits.TMR1IF=0; TXSTA=0x20; SPBRG=15; RCSTAbits.CREN=1; RCSTAbits.SPEN=1; TRISCbits.TRISC6=0; TRISCbits.TRISC7=1; RCONbits.IPEN=1; PIE1bits.RCIE=1; PIE1bits.TXIE=1; INTCONbits.TMR0IE=1; PIE1bits.TMR1IE=1; IPR1bits.TMR1IP=0; IPR1bits.TXIP=0; T0CONbits.TMR0ON=1; T1CONbits.TMR1ON=1; INTCONbits.GIEL=1; INTCONbits.GIEH=1; while(1); } void T0_ISR(void) { TMR0H=0xFF; TMR0L=0x00; myPC0bit=~myPC0bit; INTCONbits.TMR0IF=0; } void T1_ISR(void) { TMR1H=0xFF; TMR1L=0x00; PIR1bits.TMR1IF=0; myPC1bit=~myPC1bit; } void TX_ISR(void) { TXREG=PORTD; } void RC_ISR(void) { PORTB=RCREG; RCSTAbits.CREN=0; RCSTAbits.CREN=1; }