Hola, retomé todo desde cero a ver que tal, y sigo sin obtener el resultado que quiero.
#include <16f877A.h>
#FUSES XT,NOWDT
#USE delay (clock = 4M)
#USE RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#BYTE TRISB = 0x86
#BYTE PORTB = 0x06
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <lcd.c>
char valor;
#int_rda // Interrupción por dato recibido por rs232
void serial_isr(){
valor = getc();
putc(valor);
}
void main(){
TRISB = 0x00;
// Habilito las interrupciones
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
lcd_init();
lcd_gotoxy(1,1);
lcd_putc ("Prueba RS232");
while(true){
lcd_gotoxy(1,2);
printf(lcd_putc, "ch = %c", valor);
delay_ms(2000);
}
}
- El código anterior me funciona perfecto en la simulación, pero no en la realidad. Aca dejo las imágenes.
En la simulación envio el caracter ´a´ y como se ve en el LCD se muestra el caracter que envié. Cuando lo hago de manera fisica en la protoboard sale un simbolo que no es el que envié.