Arbeiten mit dem Simulator


Mit Hilfe einer kleinen IO-Platine, die LEDs und Schaltern bestückt ist,  kann man den Erfolg der Programmierbemühungen ganz gut beobachtet. Wenn man aber Ergebnisse in verschiedenen Registern darstellen will, dann reicht diese Ausgabeeinheit nicht mehr aus. Glücklicherweise wird zu dem Assembler mpasm auch ein Simulator für die PIC-Familie dazu geliefert, der einem manche Mühe beim 'Debugging' abnimmt. Er wird mit mpsim aufgerufen. Es meldet sich der Prompt des Systems ->. Wie man es von älteren DOS-Programmen gewöhnt ist, muß man jetzt Kommandozeilen eingeben, z.B. 'h', um den Hilfe-Bildschirm zu bekommen. Die wichtigsten Befehle;
 
lo test Lade die Hex-Datei test.hex
rs Prozessor-Reset
ad reg Zeige den Inhalt des Register reg im Trace-Bildschirm an
nv (new view) Lösche den Trace Bildschirm
ss Single Step. Arbeite das Programm ab der aktuellen Programmadresse im Einzelschrittmodus ab. Drückt man danach die Eingabetaste, so wird der jeweils vorher ausgeführte Befehl wiederholt
ss adr Starte im Einzelschrittmodus bei adr. z.B. ss 3ff: starte bei der Einsprungadresse 3ff
go Führe das Programm aus und zwar von der gegenwärtigen Programmadresse
zf (Zero File) setze alle Register auf 0
f reg Modifiziere den Inhalt des Registers reg

 
Glücklicherweise kann alle diese Befehle auch in einer Art Batch-Datei (bei mpsim mit der Endung *.ini zu versehen) speichern und am mpsim-Prompt mit dem Kommando ge name.ini laden. Alle Einstellungen des Simulators erfolgen dann so, als ob man sie per Hand eingegeben hätte. Am besten wird das an einem Beispiel klar. Die Kommentare sind nur zur Erklärung gedacht, sie führen beim Aufruf von t.ini zu Fehlern.
 
LO t        ; Lade den Hexfile t.hex
SR X        ; Set Radix to Hex: Zahlenformat hexadezimal
ZP          ; zero Patchtable: Lösche alle Patches
ZR          ; zero registers: Lösche alle Register
ZT          ; zero timer: Setze timer auf 0
RE          ; reset timer ans stepcounter: Setze time und Zykluszähler auf 0
P 84        ; Prozessortyp: 16C84
NV          ; new view
V W,X,2     ; zeige das Workregister W an: hexadezimal und mit zwei Stellen
AD status   ; Füge das Register status hinzu (im Hexadezimalmodus)
AD term1,b  ; Füge das Register term1 im binären Modus hinzu
AD term2,b
RS          ; Prozessor reset

 
Das folgende kleine Programm, in dem es sich im wesentlichen um logische Verknüpfungen von Bytes handelt, kann man jetzt mit dem Simualtor testen: 

********************************************************************** test.asm

;Test-Programm für logische Byte-Operationen
   list p=16C84
   status equ 03
   term1 equ 0c
   term2 equ 0d
   org 3ff
   goto init
   org 0
init
   movlw  B'11110000'
   movwf  term1
   movlw  B'11111111'
   movwf  term2
loop
   movf   term2
   andwf  term1,f ; term1 and term2 -> term1
   movf   term2
   xorwf  term1,f ; term1 xor term2-> term2 (ausschließendes ODER)

   END

Zurück

© Dietrich Praclik