bara slutar i ett tomt ingenting. Och hintar har du ju fått så
det räcker och blir över här...

Kod: Markera allt
/* seriF62x.c getchar, putchar, initserial for 16F62x */
/* Function prototypes is in seriF62x.h */
/* 16F628: Serial output is at PORTB.2 ( pin 8 ) */
/* 16F628: Serial input is at PORTB.1 ( pin 7 ) */
void initserial( void ) /* initialise serialcom port */
{
SPEN = 1;
BRGH = 1; /* Async high speed */
TXEN = 1; /* transmit enable */
SPBRG = 26-1; /* 9600 Baud @ 4 MHz-clockfrequency */
CREN = 1; /* Continuous receive */
RX9 = 0; /* 8 bit reception */
TRISB.2 = 0; /* serial_out is output */
TRISB.1 = 1; /* serial_in is input */
}
bit putchar( char d_out ) /* sends one char */
{
if(d_out == '\0') return 0; /* refuse to send 0 "end of string" */
while (!TXIF) ; /* wait until previus character transmitted */
TXREG = d_out;
return 1; /* done */
}
/* If two (or more) char's are recieved, but not read, the reciever will be locked! */
/* To unlock the reciever, run function OverrunRecover() */
void OverrunRecover(void)
{
char trash;
trash = RCREG; /* the two char's that locked the reciever */
trash = RCREG; /* are read and ignored */
CREN = 0; /* the unlock procedure ... */
CREN = 1;
}
char getchar( void ) /* recieves one char */
{
/* One start bit, one stop bit, 8 data bit, no parity. 9600 Baud. */
char d_in;
while ( RCIF == 0 ) ; /* wait for char */
d_in = RCREG;
return d_in;
}
En sak som slog min nu är att du vet ju inte om det är ett m som blir ett à eller om det är TVÅ m som blir ett à. Eller om det dyker upp ett extra à mellan två "korrekta" m.christoferivarsson skrev:Jag kan inte kopiera text från terminalen men så här kan det se ut när jag skriver ett tecknet m flera gånger 'mmmmmmmàmmmmmmmmmmàmmàmmmm