89C4051 wie 80535

Hallo, versuche in C über printf Zeichen über den seriellen ausgang auszugeben, beim 80C535 gehts prima, der 4051 bringt nichts raus. Nach den Unterlagen hat der 4051 einen 51er Kern, auch die notwendigen Register sind an gleicher Adresse

Programm:

#include /* prototype declarations for I/O functions */

/****************/ /* main program */ /****************/ void main (void) { BD = 1; PCON = 0x80; SCON = 0x50; TI = 1;

printf ("Hello World\n");

while (1) { ; /* ... */ }}

--

-- Greetings... Edgar Steffen { snipped-for-privacy@t-online.de} siehe auch:

formatting link

Reply to
Edgar Steffen
Loading thread data ...

Wo wird die Baudrate gesetzt ? BD = 1 ??? Wo der Timer dafür freigegeben ? Macht das der Compiler oder hast du es nicht gemacht ? Welcher C-Compiler ? Mit etwas mehr Info könnte dir geholfen werden.....

Andreas

Reply to
Andreas Ruetten

Du verwendest einen 535 spezifischen Baudrategenerator (clock/39). Beim 4051 mußt du T1 dafür verwenden.

void ser_init (void) { ES = 0; SCON = 0x50; PCON |= 0x80; /* SMOD = 1; */ TMOD &= 0x0f; /* use timer 1 */ TMOD |= 0x20; TH1=256-((clock+baudrate*6*16)/16/12/baudrate); ES = 1; }

--
MFG Gernot
Reply to
Gernot Fink

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.