Gast
#1030971
Hallo miteinander,
ich versuche grad Daten über meine Serielle Schnittstelle mittels
printf() zu schicken. Damit er die Daten überhaupt an den Sendebuffer
übergibt, musste ich die putchar() überschreiben. Das habe ich wie folgt
gemacht:
char putchar (char c) {
while (!TI);
TI = 0;
return (SBUF = c);
}
Mein ganzes Programm sieht so aus:
#include <reg515c.h>
#include "lcd_c0.c"
#include "stdio.h"
void main() {
TMOD = 0x10; // Timer 1 autoreload
TH1 = 0xf5; // reload value for 9600 Baud
TR1 = 1; // Timer1 starten
SM1=1; //|\__ Serial Channel in mode 1
SM0=0; //|/
lcd_init();
lcd_clr();
while(1) {
TI=1;
printf("Test");
lcd_clr();
lcd_str("Test");
}
}
char putchar (char c) {
while (!TI);
TI = 0;
return (SBUF = c);
}
Nun läuft das Programm bis an die Stelle while(!TI); .
Dort bleibt es dann hängen. Kommentiere ich die Schleife aus,
schreibt er mir immer den letzten Buchstaben auf die Serielle
Schnittstelle. Irgendwie wird das Transmit-Interrupt flag nicht gesetzt.
An was kann das liegen?