2017-05-10 12:00:41 +02:00
|
|
|
|
00001 ;TPicSim12
|
|
|
|
|
00002 ;Programm zum Test des 16F84-Simulators.
|
|
|
|
|
00003 ;Funktion: Beschreiben und Lesen des EEPROMs
|
|
|
|
|
00004 ;(c) St. Lehmann Ersterstellung: 11.05.2011
|
|
|
|
|
00005 ;Definition einiger Symbole
|
|
|
|
|
00006
|
|
|
|
|
00007 list c=132 ;Zeilenl<6E>nge im LST auf 132 Zeichen setzen
|
|
|
|
|
00008
|
|
|
|
|
00009 indirect equ 0
|
|
|
|
|
00010 status equ 03h
|
|
|
|
|
00011 fsr equ 04h
|
|
|
|
|
00012 ra equ 05h
|
|
|
|
|
00013 rb equ 06h
|
|
|
|
|
00014 count equ 0ch
|
|
|
|
|
00015 eedata equ 08h
|
|
|
|
|
00016 eeaddr equ 09h
|
|
|
|
|
00017 eecon1 equ 08h ;auf Bank 1
|
|
|
|
|
00018 eecon2 equ 09h ;auf Bank 1
|
|
|
|
|
00019
|
|
|
|
|
00020 ;Definition des Prozessors
|
|
|
|
|
00021 device 16F84
|
|
|
|
|
00022
|
|
|
|
|
00023 ;Festlegen des Codebeginns
|
|
|
|
|
00024 org 0
|
|
|
|
|
00025 start
|
|
|
|
|
0000 0020 00026 movlw 0 ;der EEPROM-Speicher von 0 bis 3FH (63) gef<65>llt
|
|
|
|
|
0001 0060 00027 movwf count
|
|
|
|
|
00028 schreiben
|
|
|
|
|
0002 0040 00029 movf count,w
|
|
|
|
|
0003 0000 00030 movwf eeaddr ;diese Adresse soll beschrieben werden
|
|
|
|
|
0004 3AFF 00031 xorlw 255 ;Adresse invertieren
|
|
|
|
|
0005 0088 00032 movwf eedata ;dieser Wert an obige Adresse schreiben
|
|
|
|
|
00033
|
|
|
|
|
0006 1683 00034 bsf status,5 ;auf Bank 1
|
|
|
|
|
0007 1208 00035 bcf eecon1,4 ;EEIF zur<75>cksetzen, wird <20>berwacht
|
|
|
|
|
0008 1508 00036 bsf eecon1,2 ;WREN-Bit setzen, sonst kein schreiben m<>glich
|
|
|
|
|
0009 1488 00037 bsf eecon1,1 ;WR-Bit setzen
|
|
|
|
|
00038
|
|
|
|
|
000A 3055 00039 movlw 55h ;State-Machine anwerfen
|
|
|
|
|
000B 0089 00040 movwf eecon2
|
|
|
|
|
000C 30AA 00041 movlw 0AAh
|
|
|
|
|
000D 0089 00042 movwf eecon2 ;Schreibvorgang beginnt jetzt
|
|
|
|
|
00043
|
|
|
|
|
00044 warte
|
|
|
|
|
000E 1E08 00045 btfss eecon1,4 ;warte bis EEIF auf 1 ist
|
|
|
|
|
000F 280E 00046 goto warte
|
|
|
|
|
00047
|
|
|
|
|
0010 1108 00048 bcf eecon1,2 ;WREN auf 0
|
|
|
|
|
00049
|
|
|
|
|
0011 1283 00050 bcf status,5 ;zur<75>ck auf Bank 0
|
|
|
|
|
00051
|
|
|
|
|
0012 0A8C 00052 incf count
|
|
|
|
|
0013 080C 00053 movf count,w ;ist der Wert 40H erreicht
|
|
|
|
|
0014 3C40 00054 sublw 40h
|
|
|
|
|
0015 1D03 00055 btfss status,2 ;wenn 0, dann fertig
|
|
|
|
|
0016 2802 00056 goto schreiben
|
|
|
|
|
00057
|
|
|
|
|
00058
|
|
|
|
|
0017 018C 00059 clrf count ;jetzt gesamten Speicher lesen
|
|
|
|
|
00060 lesen:
|
|
|
|
|
0018 080C 00061 movf count,w
|
|
|
|
|
0019 0089 00062 movwf eeaddr
|
|
|
|
|
00063
|
|
|
|
|
001A 1683 00064 bsf status,5 ;auf Bank 1
|
|
|
|
|
001B 1408 00065 bsf eecon1,0 ;RD-Bit auf 1, wird vom PIC wieder auf 0 gesetzt
|
|
|
|
|
001C 1283 00066 bcf status,5 ;zur<75>ck auf Bank 0
|
|
|
|
|
00067
|
|
|
|
|
001D 0808 00068 movf eedata,w ;Wert ins W-Register
|
|
|
|
|
00069
|
|
|
|
|
001E 0A8C 00070 incf count
|
|
|
|
|
001F 080C 00071 movf count,w ;ist der Wert 40H erreicht
|
|
|
|
|
0020 3C40 00072 sublw 40h
|
|
|
|
|
0021 1D03 00073 btfss status,2 ;wenn 0, dann fertig
|
|
|
|
|
0022 2818 00074 goto lesen
|
|
|
|
|
00075
|
|
|
|
|
00076 ende
|
|
|
|
|
0023 2823 00077 goto ende
|
|
|
|
|
00078
|