Perdonad por no decir nada, muchas gracias a los q han respondido. Lo de que no estuviera band se debia a q no os habia puesto todo el código, lo habia recortado para la pregunta, pero estaba definido. Aqui os pongo el codigo entero. Explicándolo por encima tengo un interruptor con 3 posiciones, y cuando lo pongo en la tercera posicion(pinE2) quiero que se comunique con el puerto serie y que haga eso tan tonto que veis, que me encienda un led bicolor que tengo de un color u otro en funcion de si por el puerto serie recibo un 5 o un 7. Siguiendo vuestro consejo he utilizado port serie del hiperterminal y cuando pongo el interruptor en esa posicion me envia la cadena de caracteres al ordenador. Pero luego por mucho que escriba el microcontrolador no recibe nada, al menos no puedo percibir que reciba nada xq no m enciende nada al enviar 5 o 7. Bueno, creo que no recibe nada, xq si cambio el interruptor de sitio no hace nada, como si se quedara esperando a recibir algo en el gets. Que es lo del bit de Eco? Lo he buscado y no lo he encontrado, quiza es algo de eso, ni idea... Gracias!!
#include <18F452.h>
#fuses HS,NOCPD,NOCPB,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOSTVREN,NOEBTR,NOEBTRB,NOWRTB,NOWRTC,NOWRTD
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <string.h>
#use fast_io(A)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)
#define para 5
#define parb 7
int dispr=0,dispv=0,band=0,resp=0;
long int retv=1,retr=1;
void retardo(int n) { // retardo de "n" segundos; 0 <= n => 255
for (; n!=0; n--)
delay_ms(100);
}
void main()
{
set_tris_a(0x00);
set_tris_c(0b10111111);
set_tris_d(0x00);
set_tris_e(0xff);
while(1)
{
dispr=0,dispv=0,band=0,resp=0,retv=1,retr=1;
while (input(PIN_C0)==1)
{
output_a(0x01);
delay_ms(200);
output_a(0x00);
retardo(retr);
output_a(0x02);
delay_ms(200);
output_a(0x00);
retardo(retv);
if (input(PIN_C2)==0)
{
if(dispv<9){
retv+=3;
dispv++;}
}
if (input(PIN_C3)==0)
{
if(dispv>0){
retv-=3;
dispv--;}
}
if (input(PIN_C4)==0)
{
if(retr<10){
retr++;
dispr+=0x10;}
}
if (input(PIN_C5)==0)
{
if(retr>1){
retr--;
dispr-=0x10;}
}
output_d(dispv+dispr);
}
while (input(PIN_C1)==1)
{
output_a(0x01);
delay_ms(100);
output_a(0x00);
delay_ms(100);
output_a(0x02);
delay_ms(100);
output_a(0x00);
delay_ms(1000);
}
while(input(PIN_E2)==1)
{
while (band==0)
{
puts("Escribe el 5 o 7"
;
gets(resp);
if (resp==para)
output_a(0x01);
else if (resp==parb)
output_a(0x02);
else
band=1;
}
}
}
}