Lo que hace el programa, es simplemente coger dato a dato de un array, y enviarlo por línea serie.
Pues bien, la primera vez (una vez encendido el micro), y con el primer dato del array, lo hace mal, y luego, lo hace bien siempre. Me explico:
El array es: int Viaje[10] = {0,1,2,3,4,5,6,7};
Y en el hyperterminal, se deberia de ver:
012345670123456701234567...
y en cambio, lo que se ve es:
~12345670123456701234567... Sí, con ese símbolo en primer lugar en vez de el 0
Os dejo el código (que es poquito), a ver si alguien sabe por qué pasa:
#include <16F88.h>
#define RAND_MAX 6
#include "stdlib.h"
#use delay(clock=4000000)
#fuses INTRC_IO, NOWDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, CCPB0, NOFCMEN, NOIESO
#use fast_io(B)
#use fast_io(A)
#use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_A5,bits=8,stream=PC,errors,BRGH1OK)
#BYTE PA = 0x05
#BYTE PB = 0x06
int Viaje[10] = {0,1,2,3,4,5,6,7};
int i=0,j=0;
/********************************************************************************/
/* PROGRAMA PRINCIPAL */
/********************************************************************************/
void main (void)
{
set_tris_a(0xA1); // 1: Entradas, 0: Salidas 10100001
PA = 0x00;
set_tris_b(0x00); // 1: Entradas, 0: Salidas 00000000
PB = 0x00;
setup_oscillator(OSC_4MHZ);
delay_ms(100);
While (1)
{
j=0;
do
{
delay_ms(100);
printf("%d",Viaje[j]);
j++;
}
while (j<=7);
}
}