BT2k
LOGO

Mikrocontroller IX
Hallo Welt in Assembler

Senden zum PC
Das ROM im Sios enthält noch weitere Routinen, die man einfach durch einen CALL aufrufen kann. Da ist erst einmal eine Verzögerung in Millisekunden. Der Akku wird mit der Anzahl der Millisekunden geladen und danach ruft man die Routine an Adresse 0120h. Da diese Routine timer-gesteuert ist, sind die Werte recht genau. 

Da das Sios über die RS232-Schnittstelle mit dem PC-kommuniziert, enthält das Betriebssystem auch ein Unterprogramm zum Senden. Das Sios arbeitet mit 19200 Baud, 8 Datenbits und 2 Stoppbits. Mit diesen Einstellungen kann man mit jedem Terminalprogramm Zeichen vom Sios empfangen. Die Senderoutine liegt im ROM an der Adresse 0112h. Wiederum wird der Akkuinhalt übertragen.

Dieses Beispiel benutzt beide ROM-Routinen. Es schickt eine 1 an den Digitalausgang, das Zeichen "1" über die Schnittstelle zum PC. Nach 250 ms wird eine 2 gesendet.

0001   0000             DOUT  .equ 0E8H  ;D-Ausgang
0002   0000             DELAY .equ 0120H ;A/ms im ROM
0003   0000             SEND  .equ 0112H ;A    im ROM
0004   0000 
0005   8100             .org 8100H
0006   8100             start 
0007   8100 74 01                 mov a,#1       ;Ausgabe 1
0008   8102 F5 E8                 mov  DOUT,a    ;Digitalausgang
0009   8104 24 30                 add a,#48      ;a+asc('0') 
0010   8106 12 01 12              lcall SEND     ;ROM-RS232
0011   8109 31 19                 acall delay250 ;Warten
0012   810B 74 02                 mov a,#2       ;Ausgabe 2
0013   810D F5 E8                 mov  DOUT,a    ;Digitalausgang 
0014   810F 24 30                 add a,#48      ;a+asc('0')
0015   8111 12 01 12              lcall SEND     ;ROM-RS232 
0016   8114 31 19                 acall delay250 ;Warten
0017   8116 02 81 00              ljmp start     ;Nochmal
0018   8119 
0019   8119             delay250
0020   8119 74 FA                 mov a,#250     ;250 ms
0021   811B 12 01 20              lcall DELAY    ;ROM Call
0022   811E 22                    ret
0023   811F             .end
tasm: Number of errors = 0

Wenn das Programm gestartet wurde, kann man anschließend unter Win95/98 das Programm Hyperterminal aufrufen und eine Direktverbindung über COM1 mit den Parametern 19200,8,2 einstellen. Es sollten sich die Ziffern 1 und 2 ständig abwechseln.


Hallo Welt
Hallo Welt Nun ist es endlich möglich den Standard-Satz einer neuen Programmiersprache auf den Bildschirm zu schreiben. Viele Programmiersprachen beginnen mit diesem Beispiel. Hier steht es am Ende dieses kleinen Kurses.

In Anlehnung an die Bitmuster-Ausgabe wird hier eine Tabelle mit Buchstaben angelegt. Die Zeichen 13 und 10 entsprechen den Anweisungen Wagenrücklauf (CR) und Zeilenvorschub (LF). Zum Schluss wird noch ein Beep (Zeichen 7) gesendet. Die Zeichenkette wird mit einem 0-Byte abgeschlossen. Die Tabelle kann natürlich auch an der Adresse 811Ch beginnen. Dann wird die Binärdatei noch etwas kürzer.I

.

In einem 250 ms-Intervall wird "Hallo Welt." im Terminalfenster ausgegeben

0001   0000             DELAY  .equ 0120H ;A/ms im ROM
0002   0000             SEND   .equ 0112H ;A    im ROM
0003   0000 
0004   8100             .org 8100H
0005   8100 31 0D       start     acall delay250  ;Alle 250 ms
0006   8102 90 01 30              mov DPTR,#0130h ;Anfang Tabelle
0007   8105 E0          loop      movx a,@DPTR    ;Zeichen in Akku
0008   8106 60 F8                 jz start        ;0-Byte?
0009   8108 31 13                 acall print     ;Senden
0010   810A A3                    inc DPTR        ;Zeiger erhöhen
0011   810B 80 F8                 sjmp loop       ;Nochmal
0012   810D 
0013   810D             delay250
0014   810D 74 FA                 mov a,#250      ;250 ms
0015   810F 12 01 20              lcall DELAY     ;ROM Call
0016   8112 22                    ret
0017   8113 
0018   8113 12 01 12    print     lcall SEND      ;ROM Call
0019   8116 74 01                 mov a,#1        ;Muss sein
0020   8118 12 01 20              lcall DELAY     ;Sonst geht nix
0021   811B 22                    ret
0022   811C 
0023   8130             .org 8130h
0024   8130 48616C6C6F  table .byte 'H','a','l','l','o'
0025   8135 2057656C74        .byte ' ','W','e','l','t'
0026   813A 2E0D0A0700        .byte '.',13,10,7,0
0027   813F             .end
tasm: Number of errors = 0


Mikrocontroller Literaturangaben
.
Startseite Bücher Software SatTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt
<