Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;**** FIL OPLYSNINGER ******************************************************************
- ; Fil: EEPROM.inc
- ; Dato: 20-04-2018
- ; forfatter: Troels Lind Andersen, Casper Greve Jensen og Frederik Oddershede Markor
- ; ****** BESKRIVELSE **********************************************************************
- ; Dette program skriver til og læser fra EEPROMMEN
- ; ******* HOVEDPROGRAM ********************************************************************
- ; Instrukser: Sæt en hukommelseslokation ind i W og kald SETADDR
- ; Derefter indsæt data end i W og kald BEGINWRITE
- ; Nu burde programmet have gemt dataene til den ønskede lokation på EEPROM'en
- EEPROMTestLoop
- MOVLW 0x16 ; Specificer stedet i EEPROM'en
- CALL SETADDR ; Vi har nu sat vores "cursor" i EEPROM'en til at stå i register 0x16
- MOVLW 0x23 ; Specificer tallet der skal indsættes i EEPROM'en
- CALL BEGINWRITE ; Vi har nu gemt(0x23) til 0x16 på EEPROM'en
- MOVLW d'0' ; Bruges kun til test
- MOVLW 0x16 ; Spcificer det sted der skal læses i EEPROM'en
- CALL SETADDR ; Sæt værdien som addresen ^^
- CALL BEGINREAD ; Der læses nu på register (0x16) i EEPROM'en og det flyttes til w.
- CALL BIN2DEC
- MOVF CIF100,w
- CALL CONV2ASCII
- CALL LCD_Data
- MOVF CIF10,w
- CALL CONV2ASCII
- CALL LCD_Data
- MOVF CIF1,w
- CALL CONV2ASCII
- CALL LCD_Data
- MOVLW CursLeft
- CALL LCD_Reg
- MOVLW CursLeft
- CALL LCD_Reg
- MOVLW CursLeft
- CALL LCD_Reg ; Kode til håndtering af display - Bruges kun til test
- GOTO EEPROMTestLoop ; Returnerer til testloopet
- SETADDR
- BSF STATUS,RP1 ; Skift til bank 2
- BCF STATUS,RP0 ; Skift til bank 2
- MOVWF EEADR ; Flytter den angive hex-værdi til den ønskede addresse i EEPROM'en
- BCF STATUS,RP1 ; Skift tilbage til Bank 0
- BCF STATUS,RP0 ; Skift tilbage til Bank 0
- RETURN
- BEGINWRITE
- BSF STATUS,RP1 ;
- BSF STATUS,RP0 ; Skifter til bank 3
- Wait BTFSC EECON1,WR ; Tjekker om der er en skrivning i gang
- GOTO Wait ; Går en linje tilbage (venter på skrivningen er færdig hvis der er en igang)
- BCF STATUS,RP0 ; Skifter til bank 2
- MOVWF EEDATA ; Specificerer hvilken værdi der skal gemmes i EEPROM'en
- BSF STATUS,RP0 ; Skifter til bank 3
- BCF EECON1,EEPGD ; Specifierer der skal skrives til EEPROM data (ikke flash memory)
- BSF EECON1,WREN ; Tillader skrivninger til EEPROM'en
- BCF INTCON,GIE ; Slår interrupts fra imens der skrives til EEPROM'en (interrupts kan skabe fejl i skrivningen til EEPROM'en)
- MOVLW d'85'
- MOVWF EECON2
- MOVLW d'170'
- MOVWF EECON2
- BSF EECON1,WR ; Obligatorisk EEPROM-writing sekvens
- BSF INTCON,GIE ; Tillader interrupts igen
- Wait2 BTFSC EECON1,WR ; Sikrer at skrivningen er færdig før der gåes videre (backup, burde ikke være nødvendigt)
- goto Wait2
- BCF EECON1,WREN ; Slåt skrivninger til EEPROM'en fra
- BCF STATUS,RP1 ; Skifter til bank 0
- BCF STATUS,RP0 ; Skifter til bank 0
- RETURN
- BEGINREAD
- BSF STATUS,RP1 ;
- BSF STATUS,RP0 ; Går til bank 3
- BCF EECON1,EEPGD ; Specifierer der skal læses fra EEPROM data (ikke flash memory)
- BSF EECON1,RD ; Læser den opgivne addrese i EEPROM
- BCF STATUS,RP0 ; Går til bank 2
- MOVF EEDATA,W ; W = EEDATA
- BCF STATUS,RP1
- BCF STATUS,RP0 ; Går til bank 0
- RETURN
- .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement