Ich habe einen AT89C2051 auf einer Platiene und einen MAX232 auf der anderen. Und ich verbinde die Datenleitung mit einem 10cm langen Kabel. Und dann von dem MAX232 in den PC Win 3.11 Terminal. Wenn ich das Programm für den Mikrocontroller in BASCOM schreibe dann überträgt er die richtigen Zeichen . Aber wenn ich es in Asembler schreibe dann kommen da nur so komische zeichen raus . ; 07.01.03 19:51:51 #cpu = 80C31 ; @24 MHz ; Initialisierung ; serielle Schnittstelle aktivieren ; 4800 Baud, Modus 1 clr TR1 mov TL1, #243 mov TH1, #243 ; die SFR's initialisieren mov SP, #20h mov SCON,#42h mov TMOD,#10h mov TCON,#40h mov IE,#0h main: mov a,#33h serial_out: ; auf Abschluß des letzten Sendevorganges warten jnb SCON.1,serial_out clr SCON.1 ; senden mov SBUF,a jmp main end ICh habe auch die Baudrate im Terminalfenster richtig eingestellt. Ich weiss nicht mehr weiter. 33h ist doch eigentlich die Zahl 3 oder??? Das heist der Controller müßte ständig eine 3 auf den PC schreiben , ins Terminalfenster.
Versuch doch mal: mov a, '3' die meisten Assembler verstehen das. ...Kommt jetzt immer noch keine 3 raus? Grüße Oliver
Hallo, mit mov a,'3' gehts auch nicht weiter, damit lädtst Du den Inhalt des Internen RAM Adresse 33h.... Meine MCS-51-Kenntnisse sind zwar schon ein wenig eingerostet, aber ich denke, es liegt am Timer. Du mußt Timer1 im Reload-Modus laufen lassen, also: mov TMOD,20h Dadurch wird Timer1 in zwei 8-Bit Register gesplittet, das Low-Byte wird bei jedem Maschinenzyklus um 1 erhöht, bei einem Überlauf wird automatisch das High-Byte ins Low-Byte übertragen. Du brauchst also nur TH1 mit 243 zu initialisieren. Außerdem hast Du das Timer-Run Bit gelöscht und nicht mehr gesetzt, somit läuft der Timer nicht und eigentlich kann das Programm nichts senden. By the way: Du hast den Transfer-Interrupt freigegeben, bei gesetztem EAL und keinem definierten Sprungvektor kann dies auch recht interessante Effekte haben. Also in SCON nur eine 40h reinschreiben. Hoffe, Dir geholfen zu haben
Hi. So müsste es klappen. Denn den Timmer im 16Bit Modus verwendet, du musst ihn aber im 8-bit-autoreload-modus verwenden (TMOD,#20h). ; Initialisierung ;--------------------------------------------------------------- ; serielle Schnittstelle aktivieren ; 4800 Baud, Modus 1 mov TL1, #243 mov TH1, #243 ; die SFR's initialisieren mov SP, #20h mov SCON,#42h mov TMOD,#20h mov TCON,#40h ;--------------------------------------------------------------- MfG, Niglo
Wahnsinn , vielen DANK morgen probiere ich es gleich aus und wenn es geht dann mache ich einen LUFTSPRUNG bis zum MOND und schreibe euch dann eine Ansichtskarte !!!!!!!!!!
Geht immer noch nicht . Ich habe mal die Frequenz vom Quarz gemessen und die liegt nur bei 20 Mhz und nicht bei 24 wie drauf steht . Kann das daran liegen ?? Aber warum geht es dann bei BASCOM???
Hi. Wenn die Frequenz nicht stimmt, dann kann es auch nicht gehen. Mit BASCOM arbeite ich nicht, also keine Ahnung. MfG, Niglo
Ich habe jetzt das Bascom Programm mit einen Disasembler in Maschienencode umgewandelt und habe mir den CODE angeschaut und dann das Programm zum Teil übernommen und jetzt geht es , warum auch immer ??
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.