Advertisement
Guest User

EEPROM

a guest
Apr 21st, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pic 16 3.52 KB | None | 0 0
  1. ;**** FIL OPLYSNINGER ******************************************************************
  2. ;   Fil:        EEPROM.inc
  3. ;       Dato:       20-04-2018
  4. ;   forfatter:  Troels Lind Andersen, Casper Greve Jensen og Frederik Oddershede Markor
  5.  
  6. ; ****** BESKRIVELSE **********************************************************************
  7. ;   Dette program skriver til og læser fra EEPROMMEN
  8.  
  9. ; ******* HOVEDPROGRAM ********************************************************************
  10.        
  11.            
  12.         ; Instrukser: Sæt en hukommelseslokation ind i W og kald SETADDR
  13.         ; Derefter indsæt data end i W og kald BEGINWRITE
  14.         ; Nu burde programmet have gemt dataene til den ønskede lokation på EEPROM'en
  15.            
  16.  
  17. EEPROMTestLoop
  18.         MOVLW 0x16   ; Specificer stedet i EEPROM'en
  19.         CALL SETADDR     ; Vi har nu sat vores "cursor" i EEPROM'en til at stå i register 0x16
  20.         MOVLW 0x23   ; Specificer tallet der skal indsættes i EEPROM'en
  21.         CALL BEGINWRITE  ; Vi har nu gemt(0x23) til 0x16 på EEPROM'en
  22.     MOVLW   d'0'     ; Bruges kun til test        
  23.  
  24.     MOVLW 0x16   ; Spcificer det sted der skal læses i EEPROM'en
  25.         CALL SETADDR     ; Sæt værdien som addresen ^^
  26.         CALL BEGINREAD   ; Der læses nu på register (0x16) i EEPROM'en og det flyttes til w.
  27.                    
  28.             CALL    BIN2DEC
  29.  
  30.             MOVF    CIF100,w
  31.             CALL    CONV2ASCII
  32.             CALL    LCD_Data
  33.             MOVF    CIF10,w
  34.             CALL    CONV2ASCII
  35.             CALL    LCD_Data
  36.             MOVF    CIF1,w
  37.             CALL    CONV2ASCII
  38.             CALL    LCD_Data
  39.             MOVLW   CursLeft
  40.             CALL    LCD_Reg
  41.             MOVLW   CursLeft
  42.             CALL    LCD_Reg
  43.             MOVLW   CursLeft
  44.             CALL    LCD_Reg ; Kode til håndtering af display - Bruges kun til test
  45.  
  46.         GOTO    EEPROMTestLoop      ; Returnerer til testloopet
  47.    
  48. SETADDR    
  49.     BSF STATUS,RP1 ; Skift til bank 2
  50.         BCF STATUS,RP0 ; Skift til bank 2    
  51.         MOVWF EEADR    ; Flytter den angive hex-værdi til den ønskede addresse i EEPROM'en
  52.     BCF STATUS,RP1 ; Skift tilbage til Bank 0
  53.     BCF STATUS,RP0 ; Skift tilbage til Bank 0
  54.         RETURN
  55.            
  56. BEGINWRITE  
  57.     BSF STATUS,RP1 ;
  58.         BSF STATUS,RP0 ;  Skifter til bank 3
  59. Wait    BTFSC EECON1,WR ; Tjekker om der er en skrivning i gang
  60.         GOTO Wait       ; Går en linje tilbage (venter på skrivningen er færdig hvis der er en igang)
  61.     BCF STATUS,RP0 ; Skifter til bank 2
  62.     MOVWF EEDATA   ; Specificerer hvilken værdi der skal gemmes i EEPROM'en
  63.  
  64.     BSF STATUS,RP0 ; Skifter til bank 3
  65.  
  66.     BCF EECON1,EEPGD   ; Specifierer der skal skrives til EEPROM data (ikke flash memory)
  67.        
  68.     BSF EECON1,WREN    ; Tillader skrivninger til EEPROM'en
  69.  
  70.        
  71.     BCF INTCON,GIE ; Slår interrupts fra imens der skrives til EEPROM'en (interrupts kan skabe fejl i skrivningen til EEPROM'en)
  72.  
  73.         MOVLW d'85'
  74.         MOVWF EECON2
  75.         MOVLW d'170'
  76.         MOVWF EECON2
  77.         BSF EECON1,WR      ; Obligatorisk EEPROM-writing sekvens
  78.        
  79.     BSF INTCON,GIE ; Tillader interrupts igen      
  80. Wait2   BTFSC   EECON1,WR  ; Sikrer at skrivningen er færdig før der gåes videre (backup, burde ikke være nødvendigt)
  81.         goto    Wait2
  82.  
  83.         BCF EECON1,WREN    ; Slåt skrivninger til EEPROM'en fra
  84.  
  85.     BCF STATUS,RP1 ; Skifter til bank 0
  86.     BCF STATUS,RP0 ; Skifter til bank 0
  87.         RETURN
  88.        
  89. BEGINREAD  
  90.        BSF STATUS,RP1 ;
  91.        BSF STATUS,RP0 ; Går til bank 3
  92.        BCF EECON1,EEPGD ; Specifierer der skal læses fra EEPROM data (ikke flash memory)
  93.        BSF EECON1,RD ; Læser den opgivne addrese i EEPROM
  94.        BCF STATUS,RP0 ; Går til bank 2
  95.        MOVF EEDATA,W ; W = EEDATA
  96.        BCF  STATUS,RP1
  97.        BCF  STATUS,RP0 ; Går til bank 0
  98.        RETURN
  99.        
  100. .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement