TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: E_Castillo en 13 de Mayo de 2012, 00:11:17
-
tengo el problema que no puedo establecer comunicación con el PIC18F4550, estoy usando un cristal de 20MHZ para el oscilador. Como podrán ver el código es de lo mas simple, pues con el simple echo de activarse la interrupción del RS232 debería de cambiar el estado de los leds, pero NO LO HACE!!!!
#include <18f4550.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay (clock = 20000000)
#use rs232(baud=9600, parity=N, bits=8, STOP=1, xmit=PIN_C6, rcv=PIN_C7)
//char Dato;
#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
//Dato= getc();
output_B (0xFF); //enciende los leds si se activa la interrupción
}
void main()
{
enable_interrupts(global);//Habilito interrupción USART
enable_interrupts(int_rda);
set_tris_b( 0x00 ); // Puerto B como salida.
output_B (0x00); //inicializo puerto B
while(true){
//Código principal
}
}
-
Yo tenia el mismo problema con un 18f4525, y despues de darle muchas vueltas creo que el problema viene al definir el puerto RS232, prueba a definir solo velocidad y los pines del puerto HW y ya contaras
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
Saludos
-
tengo el problema que no puedo establecer comunicación con el PIC18F4550, estoy usando un cristal de 20MHZ para el oscilador. Como podrán ver el código es de lo mas simple, pues con el simple echo de activarse la interrupción del RS232 debería de cambiar el estado de los leds, pero NO LO HACE!!!!
#include <18f4550.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay (clock = 20000000)
#use rs232(baud=9600, parity=N, bits=8, STOP=1, xmit=PIN_C6, rcv=PIN_C7)
//char Dato;
#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
//Dato= getc();
output_B (0xFF); //enciende los leds si se activa la interrupción
}
void main()
{
enable_interrupts(global);//Habilito interrupción USART
enable_interrupts(int_rda);
set_tris_b( 0x00 ); // Puerto B como salida.
output_B (0x00); //inicializo puerto B
while(true){
//Código principal
}
}
En FUSES cambia XT por HS.