hola, como bien dice el hilo, estoy teniendo problemas con el codigo a la hora de poder tener acciones en el pic cuando en alguno de los dos puertos seriales le llega una instruccion. me explico, tengo un pic en el cual tengo 2 entradas seriales una por la uardt y la otra por RB0, en ambas con sus respectivas interrupciones. este pic se conecta a otros dos dispositivos, el cual ifual son seriales, pero el punto es que el "maestro" no hace nada cuando le llegan los comando para que haga algo, y no se por que. bueno a todo esto es primera vez que intento hacer esto y estoy experimentando en esto algo nada complejo, pero aun asi no logro ver por que no me hace nada este "maestro". les dejo el codigo para que vean en que me equivoque.
saludos y gracias por lacomprencion de antemano.
:
"maestro"
#include <16f873a.h> //pic a utilizar
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT //ordenes para el programador
#use delay (clock=20000000) //clock=20Mhz
#use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7, stream=Modem)
#use rs232(baud=9600, xmit=PIN_B1, rcv=PIN_B0, stream=Modulo)
#include <stdio.h>
char Cad,Cad2;
#int_rda
void serial_isr() {
if(kbhit()) { //Esto es para que no se te cuelgue el pic
Cad=fgetc(modem);
fputc(fgetc(),modem);
}
}
#int_EXT
void ext_isr() {
if(kbhit()) { //Esto es para que no se te cuelgue el pic
Cad2=fgetc(Modulo);
fputc(fgetc(),modulo);
}
}
void main()
{
ext_int_edge(H_TO_L);
enable_interrupts(int_ext);
enable_interrupts(int_rda);
enable_interrupts(global);
port_b_pullups(TRUE);
output_low(PIN_C0);
output_low(PIN_C1);
while(TRUE){
fprintf (modem,"hola a uno");
fprintf (modulo,"hola a uno");
if(cad==0x03){
output_high(PIN_C0);
}
else if(cad==0x04){
output_low(PIN_C0);
}
if(cad2==0x01){
output_high(PIN_C1);
}
else if(cad2==0x02){
output_low(PIN_C1);
}
}}