77 lines
2.2 KiB
Plaintext
77 lines
2.2 KiB
Plaintext
;TPicSim12
|
|
;Programm zum Test des 16F84-Simulators.
|
|
;Funktion: Beschreiben und Lesen des EEPROMs
|
|
;(c) St. Lehmann Ersterstellung: 11.05.2011
|
|
;Definition einiger Symbole
|
|
|
|
|
|
indirect equ 0
|
|
status equ 03h
|
|
fsr equ 04h
|
|
ra equ 05h
|
|
rb equ 06h
|
|
count equ 0ch
|
|
eedata equ 08h
|
|
eeaddr equ 09h
|
|
eecon1 equ 08h ;auf Bank 1
|
|
eecon2 equ 09h ;auf Bank 1
|
|
|
|
;Definition des Prozessors
|
|
device 16F84
|
|
|
|
;Festlegen des Codebeginns
|
|
org 0
|
|
start
|
|
movlw 0 ;der EEPROM-Speicher von 0 bis 3FH (63) gef?llt
|
|
movwf count
|
|
schreiben
|
|
movf count,w
|
|
movwf eeaddr ;diese Adresse soll beschrieben werden
|
|
xorlw 255 ;Adresse invertieren
|
|
movwf eedata ;dieser Wert an obige Adresse schreiben
|
|
|
|
bsf status,5 ;auf Bank 1
|
|
bcf eecon1,4 ;EEIF zur?cksetzen, wird ?berwacht
|
|
bsf eecon1,2 ;WREN-Bit setzen, sonst kein schreiben m?glich
|
|
bsf eecon1,1 ;WR-Bit setzen
|
|
|
|
movlw 55h ;State-Machine anwerfen
|
|
movwf eecon2
|
|
movlw 0AAh
|
|
movwf eecon2 ;Schreibvorgang beginnt jetzt
|
|
|
|
warte
|
|
btfss eecon1,4 ;warte bis EEIF auf 1 ist
|
|
goto warte
|
|
|
|
bcf eecon1,2 ;WREN auf 0
|
|
|
|
bcf status,5 ;zur?ck auf Bank 0
|
|
|
|
incf count
|
|
movf count,w ;ist der Wert 40H erreicht
|
|
sublw 40h
|
|
btfss status,2 ;wenn 0, dann fertig
|
|
goto schreiben
|
|
|
|
|
|
clrf count ;jetzt gesamten Speicher lesen
|
|
lesen:
|
|
movf count,w
|
|
movwf eeaddr
|
|
|
|
bsf status,5 ;auf Bank 1
|
|
bsf eecon1,0 ;RD-Bit auf 1, wird vom PIC wieder auf 0 gesetzt
|
|
bcf status,5 ;zur?ck auf Bank 0
|
|
|
|
movf eedata,w ;Wert ins W-Register
|
|
|
|
incf count
|
|
movf count,w ;ist der Wert 40H erreicht
|
|
sublw 40h
|
|
btfss status,2 ;wenn 0, dann fertig
|
|
goto lesen
|
|
|
|
ende
|
|
goto ende
|