![]() |
MikrocomputertechnikProf. Jürgen Plate, Prof. Peter Schwalb |
Der Mikrocomputer PS11 baut auf dem Mikrocontroller M68HC11 (8MHz) von Motorola auf. Er wird im expanded mode betrieben und ist mit einer PRU M68HC24, 32kByte RAM und 32 kByte EEPROM als externen Komponenten versehen. Die Programmentwicklung erfolgt auf einem PC unter Verwendung eines unter Windows XP laufenden Programmpakets (Integrated Development Environment for M68HC11). Dieses ermöglicht das Editieren, Assemblieren, Simulieren und Bereitstellen von Programmen für den M68HC11. Der Datentransfer zwischen PC und Zielrechner erfolgt über eine serielle Schnittstelle (COM-Port COM1 mit 9600 Baud).
Die Angaben zu den einzelnen Versuchen sind als thematischer Rahmen zu sehen. Die Aufgabenstellung kann durch den betreuenden Dozenten jederzeit modifiziert werden. Im Verlauf des Versuchs ist auf eine vernünftige Dokumentation zu achten.
Benutzername (user): ide11
Kennwort (password): ide11
Das Programm HC11-IDE11 wird durch klicken auf das entsprechende Icon gestartet. Wenn Sie IDE11 mehr als einmal starten, verweigern alle Inkarnationen des Programms den Kontakt zum M68HC11. In diesem Fall sind alle laufenden Versionen zu schließen und das Programm einmal neu zu starten.
Die im Laufe eines Praktikums-Versuchs erstellten (name.a) oder erzeugten (name.lst) Dateien sind über den Ordner (Directory) Eigene Dateien verfügbar. Sie können von dort aus auf Diskette oder einem USB-Massenspeicher abgespeichert werden. Wenn Sie vorbereitete Programme auf Diskette oder USB-Massenspeicher mitbringen, dann speichern Sie diese auch immer in diesem Ordner ab.
Der Praktikumsrechner PS11 ist nicht auszuschalten, sondern nur
herunterzufahren:
(START Wurde HC11-IDE11 versehentlich beendet, kann es über Doppelklicken
des Symbols (Icon) des Arbeitsplatzes (Desktop) wieder gestartet werden.
Der Praktikumsrechner PS11 ist nicht auszuschalten, sondern nur herunterzufahren:
(START → Computer ausschalten).

Erst nachdem die Datei mit der Erweiterung .a abgespeichert wurde wird das Syntax Highlighting aktiviert:


Anmerkung: Lassen Sie sich nicht durch die letzte Ausgabezeile des Editors ( → Exit-Code: 0) täuschen, diese besagt nur, dass das Assemblerprogramm nicht abgestürzt ist.

Der Simulator ist nicht in der Lage, alle Eigenschaften des 68HC11 exakt nachzubilden. So müssen Sie auf manche Interrupts und einiges andere verzichten. So ist derzeit keine umfassende Simulation der seriellen Schnittstelle möglich.
Bei der Simulation des STRA-Eingangs mit dem Button [STRA = 0] ist folgendes zu beachten:
Je nach verwendetem PC-Modell kann es auch vorkommen, dass Zeitschleifen im Simulator schneller ablaufen, als dies bei einem realen Prozessor der Fall wäre.
Beachten Sie auch, dass die Simulation des seriellen Terminals sehr einfach gehalten ist. So werden zum Beispiel alle Zeichen bei der Eingabe geechot, was im realen Betrieb nicht der Fall sein muss.
Zum Starten eines Programms klicken Sie auf "Reset" und dann auf den "Start"-Button, der daraufhin grün wird. Im gestoppten Zustand kann das Programm im Einzelschritt-Modus durchlaufen werden. In diesem Fall öffnen Sie durch Klicken auf die entsprechenden Buttons die Fenster mit der Quellcodeanzeige ("View Code") und der Registeranzeige ("MC68HC11 CPU"). Die gerade bearbeitet Assemblerzeile wird dann farbig unterlegt und Sie können die aktuellen Registerinhalte sehen (oder auch ändern). Mit "Browse Memory" werden Sie in die Lage versetzt, Speicherinhalte anzusehen und zu ändern.
Die zusätzlich zur Binäranzeige vorhandene Siebensegmentanzeige für die Ports B und C bietet eine undecodierte Anzeige für Port B (alle Segmente einzeln ansteuerbar) und eine decodierte zweistellige Anzeige für Port C.
Beim Laden des Programms ins Zielsystem muss der Schalter wieder auf "PC" gestellt werden. Achten Sie auch darauf, das ein gegebenenfalls geöffnetes Terminalprogramm auf "aufgelegt = offline" geschaltet wird, da sonst ein Konflickt beider Programme um die serielle Schnittstelle entsteht. Das Terminalprogramm muss jedoch nicht geschlossen werden.
In Kurzform:
RUN: Terminal online, Schalter auf "Man."
LOAD: Terminal offline, Schalter auf "PC
Jedes Programm muß folgende Anweisungen enthalten:
stak equ $7FFF ; Stackbereich ab $7FFF (RAM, abwaerts)
prog equ $8000 ; Programmbereich ab $8000 (EEPROM)
data equ $2000 ; Datenbereich ab $2000 (RAM)
rvec equ $FFFE ; Reset-Vektor
. ; ggf. weitere Vektoren
org data ; Beginn Datenbereich
. ; Variablen-Definitionen
.
org prog ; Beginn Programmbereich
main lds #stak ; Stackpointer setzen
.
. ; alle Initialisierungen
.
loop . ; Befehle des Programms
.
.
jmp loop
. ; ggf. fixe Tabellen dahinter
.
. ; ggf. Setzen der Interrupt-Vektoren
. ; (Reihenfolge der Adressen beachten!)
org rvec ; Setzen des Reset-Vektors
fdb main
end
Der RAM-Speicher ab Adresse 0 bis Adresse 255 kann nicht genutzt werden
(Bootloader bzw. Trace).
Das Anschlußkabel zwischen M68HC11 und Experimentierboard endet auf einem Buchsenfeld, von dem aus die Verbindungen zur Anzeigeplatine bzw. zu den Schaltern, Tastern und LEDs gesteckt werden müssen.
Beachten Sie, daß die LED-Treiber an der Vorderkante des Boards sowie das Board mit den Siebensegmentanzeigen gesondert mit Spannung versorgt werden muß. Ihr Betreuer zeigt Ihnen die entsprechenden Verbindungen am ersten Praktikumstag.

Sie finden auf dem Experimentier-Board auf einer der IC-Buchsen ein Widerstandsarray (WID-SIP) eingesteckt, das acht Widerstände enthält, die auf einer Seite miteinander verbunden sind. Dieser gemeinsame Anschluß ist auf dem Gehäuse des WID-SIP durch einen Punkt gekennzeichnet. Er wird mit +5V verbunden. Die anderen Pins des WID-SIP werden einerseits mit einem Schalter verbunden und andererseits mit einem Eingansport des 68HC11.

Die beiden Taster sind bereits mit einer Entprell-Logik verbunden und liefern korrekte Digitalsignale für 0 und 1. Sie können daher direkt mit einem Eingangspin des 68HC11 verbunden werden.

hx4a psha ; Akku A auf dem Stack ablegen
bsr hx2a ; Akku B umwandeln (Stelle 3 und 4)
pulb ; Akku A vom Stack holen, in Akku B ablegen
; Nun einfach in hx2a fallen und Akku B
; umwandeln (Stelle 1 und 2)
hx2a pshb ; Akku B auf dem Stack sichern
bsr hx1a ; Bits 0-3 von Akku B umwandeln
pulb ; Original-Akku B wieder holen
lsrb ; viermal schieben (Bits 4-7 --> 0-3)
lsrb
lsrb ; und nun die obere Haelfte umwandeln
lsrb ; indem einfach in hx1a gefallen wird
; Nun wird die eigentliche Arbeit gemacht:
hx1a andb #$0F ; die oberen 4 Bits ausmaskieren
addb #48 ; ASCII-Wert von "0" addieren
cmpb #57 ; groesser als "9"?
bls hx1b ; nein, dann speichern
addb #7 ; sonst die Distanz zwischen "9" und "a" addieren
hx1b stab 0,y ; im Speicher ablegen, auf den Y zeigt
dey ; Y zeigt jetzt auf die Stelle davor
rts ; und weg
Beispielaufruf:
ldd #$AFFE ; Hexzahl in Akku D laden
ldy #PUFFER+3 ; Position auf letzte Stelle im Puffer
; der Puffer muss im Datenbereich reserviert sein
bsr hx4a ; do it!
ldy #PUFFER ; y --> Pufferanfang
bsr STOU ; z.B. seriell ausgeben
Versuche