
Hola amigos ya comprobé el fin de semana algunas cosas y entre esas pude determinar que una de esas es que el max-232 estaba defectuoso, por lo que lo cambie y con ayuda de otro programa que conseguí pude por fin realizar una comunicación.
Luego de esto, después de varios intentos en la reforma del programa inicial que planteé pude conseguir el objetivo básico de lo que deseo. Una de las modificaciones que hice fue la que hizo el compañero “lovando”: cree las rutinas especificas de las funciones antes del main y parece que esto ayudo mucho; de igual manera probé con la inserción de los parámetros bits=8 y parity=n y sin estos en la definición de la usart y de ambos modos funciono.
Aquí les paso el codigo:
#include <16F877.h>
#fuses HS, NOPROTECT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay(clock=20000000)
#use rs232(baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
char tarjeta;
int multiplexor_H, multiplexor_L;
int i,maximo;
void incremento(int multiplexor_H, int multiplexor_L, int maximo)
{
output_d(multiplexor_H);
for(i=0;i<maximo;i++)
{
output_b(multiplexor_L);
++multiplexor_L;
delay_ms(1000);
}
}
set_modemA()
{
multiplexor_H=0x00;
multiplexor_L=0x00;
maximo=10;
incremento(multiplexor_H,multiplexor_L,maximo);
output_b(0);
output_d(0);
}
set_modemB()
{
multiplexor_H=0x01;
multiplexor_L=0x00;
maximo=10;
incremento(multiplexor_H,multiplexor_L,maximo);
output_b(0);
output_d(0);
}
set_portadoraA()
{
multiplexor_H=0x02;
multiplexor_L=0x00;
maximo=10;
incremento(multiplexor_H,multiplexor_L,maximo);
output_b(0);
output_d(0);
}
set_portadoraB()
{
multiplexor_H=0x03;
multiplexor_L=0x00;
maximo=10;
incremento(multiplexor_H,multiplexor_L,maximo);
output_b(0);
output_d(0);
}
set_premodulacion()
{
multiplexor_H=0x04;
multiplexor_L=0x00;
maximo=10;
incremento(multiplexor_H,multiplexor_L,maximo);
output_b(0);
output_d(0);
}
main()
{
set_tris_b(0x00);
output_b(0);
set_tris_d(0x00);
output_d(0);
while (TRUE)
{
tarjeta=getc();
switch(tarjeta)
{
case "0":
do
set_modemA();
while(!kbhit());
break;
case "1":
do
set_modemB();
while(!kbhit());
break;
case "2":
do
set_portadoraA();
while(!kbhit());
break;
case "3":
do
set_portadoraB();
while(!kbhit());
break;
case "4":
do
set_premodulacion();
while(!kbhit());
break;
}
}
}
Gracias por la ayuda prestada amigos, estamos en contacto para cualquier duda