No hay manera, el usar1 funciona el usar2 no funciona.
He programado los registros a mano de los modulos y uno funciona y el otro no.
//Practicas con dos puertos RS232
//PIC18F25K80
#include <main.h>
//Registros usart1
#BYTE SPBRG1 = 0xFAF
#BYTE BAUDCON1 = 0xFA7
#BYTE TXSTA1 = 0xFAC
#BYTE RCSTA1 = 0xFAB
#BYTE TXREG1 = 0xFAD
#BYTE RCREG1 = 0XFAE
#BYTE PIR1 = 0xF9E
#BIT PIR1_RC1IF = PIR1.5
//Registros usart2
#BYTE SPBRG2 = 0xF7B
#BYTE BAUDCON2 = 0xFB9
#BYTE TXSTA2 = 0xFBA
#BYTE RCSTA2 = 0xFA6
#BYTE TXREG2 = 0xF79
#BYTE RCREG2 = 0XF7A
#BYTE PIR3 = 0xFA4
#BIT PIR3_RC2IF = PIR3.5
//Registros estado pin
#Byte TRISB = 0xF93
#Byte TRISC = 0xF94
#Byte PORTB = 0xF81
#Byte PORTc = 0xF82
#BIT RB6 = PORTB.6
#BIT RB7 = PORTB.7
void main()
{
setup_oscillator(OSC_16MHZ);
_SetUpPic18F25k80();
//Configura usart1 a 4800
SPBRG1 = 0x33;
TRISC = 0b10111111;
BAUDCON1 = 0x00;
TXSTA1 = 0x20;
RCSTA1 = 0x90;
//Configura usart2 a 4800
SPBRG2 = 0x33;
TRISB = 0b10111111;
BAUDCON2 = 0x00;
TXSTA2 = 0x20;
RCSTA2 = 0x90;
//TRISB = 0b00111111;
//#use rs232(uart1, baud=4800, TIMEOUT=1, XMIT=PIN_C6, RCV=PIN_C7, STREAM = PORT1)
//#use rs232(uart2, baud=4800, TIMEOUT=1, XMIT= PIN_B6, RCV= PIN_B7, STREAM = PORT2)
//_SetUpRbf2();
//Establece las interrupciones
//Enable_interrupts(GLOBAL); //'Permite las interrupciones generales y las de perifericos
//Enable_interrupts(INT_TIMER1); //'Permite las interrupciones del TMR1
//Enable_interrupts(INT_RDA);
//Enable_interrupts(INT_RDA2);
//PIE3_RCIE = 1; // Interrupcion Uart
while(TRUE)
{
//If (KBHIT(PORT1)) Fputc(fgetc(port1), PORT1);
//If (KBHIT(PORT2)) Fputc(fgetc(port2), PORT2);
If (PIR1_RC1IF) TXREG1 = RCREG1;
If (PIR3_RC2IF) TXREG2 = RCREG2;
//RB6 = 0;
//RB7 = 1;
//delay_ms(500);
//RB6 = 1;
//RB7 = 0;
//delay_ms(500);
}
}
//*****************************************************************************
//#int_RDA //Interrupción Uart
// Void uart_interrupcion(Void){
//_RingBuffer(0);
// }
//*****************************************************************************
//#int_RDA2 //Interrupción Uart
// Void uart_interrupcion2(Void){
//_RingBuffer2(0);
// }
//*****************************************************************************