| list | Der Assembler mpasm beherrscht verschiedene Prozessor-Dialekte. Mit der List-Anweisung wählt man den gewünschten Typ aus. Beispiel: list p=16C84 |
| equ | Mit der Anweisung counter equ 12 legt man fest, dass im Hexcode das als counter bezeichnete Register immer duch die Adresse $12 ersetzt wird |
| ; | leitet einen Kommentar ein. Alle folgenden Zeichen werden bis zum nächsten Zeilenumbruch beim Kompilieren ignoriert |
| = | Die Anweisung f=1 fügt überall für f den konstanten Wert 1 ein |
| org | Die Anweisung org = 004 setzt den folgenden Befehl auf die Speicheradresse 004 im EEPROM des PIC |
| #include | durch #inc otto.txt wird beim Linken der Teil-Code otto.txt an die nachfolgende Adresse geschrieben. |
| end | Markiert das Ende des Codes |
In der folgenden Datei - pic.h - wird ausgiebig von Assembler-Anweisungen Gebrauch gemacht. Sie wird mittels '#include pic.h ' zu Beginn des Programmcodes geladen. Anschließend kann man die vereinbarten Adressen und Konstanten beliebig im Programm-Code verwenden.
; Standard Register der Prozessoren 16C71 und 16C84
;
fsr_data equ 00 ; enthält Daten bei indirekter Adressierung
rtcc equ 01 ; Seite 0: Real Time Clock / Counter
option equ 01 ; Seite 1: Enthält Flags zur Steuerung von Interrupts
pc equ 02 ; programcounter (Low-anteil)
status equ 03 ; Statusregister (enthält z.B. Zero- und Carryflag
fsr_adr equ 04 ; enthält die Adresse bei indirekter Adressierung
porta equ 05 ; Seite 0: IO-Port A (8 Bit breit)
trisa equ 05 ; Seite 1:
portb equ 06 ; dto PortB (5 Bit breit)
trisb equ 06
ee_data equ 08 ; enthält Daten bei indirekter Adressierung des Daten-EEPROMS (Seite 0)
ee_adr equ 09 ; Adresse bei indirekter Adressierung des Daten-EEPROMs (Seite 0)
ee_con1 equ 08 ; Flags zur Steuerung von Schreiben und Lesen im Daten-EEPROM (Seite 1)
ee_con2 equ 09 ; write-init durch das Schreiben von 55h AAh
pc_hi equ 0a ; höherwertiger Anteil des Programmzählers
intcon equ 0b ; enthält flags zur Steuerung von Interrupt
carry = 0 ; Zeroflag : Statusregister
Bit 0
zero = 1 ; carryflag :
Statusregister Bit 1
f = 1 ; d=1 :
lege Ergebnis im Register (f) ab
w = 0 ; d=0 :
lege Ergebnis im Workregistert (w) ab
© Dietrich Praclik