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ä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ü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ücksetzen, wird ü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ü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ü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