I am trying to convert a program from the net that was designed for the 16C84 and I want to use it on the 16F84A. I have everything working but the EEprom updating. I would appreciate some help as I am in the dark when it comes to EEprom. The writing section doesn't seem wright because it goes to bank one but I don't see a return to bank zero and interupts are disabled but not reenabled.
;----------- EEPROM MODULE AT PIC16F84A
;Rev 1.00
;d.27/07-95
; note: use timer
wadr equ 2Fh ; address in RAM 2F
value equ 2Eh ; Data in RAM 2E
WR_EEPROM ; write EEPROM (data in RAM 2E+adr in RAM 2E)
movfw wadr,W ; w=adr
movwf EEADR ; EEADR=w
movfw value,W ; w=data
movwf EEDATA ; EEDATA=w
; --- write sequnce
bsf STATUS,5 ; EEPROM write enable
bcf INTCON,GIE ; disable interupts
movlw 0x55 ; w=55h
movwf EECON2 ; EECON2=w
movlw 0xAA ; w=AAh
movwf EECON2 ; EECON2=w
bsf EECON1,WR ; EECON1=write
movlw .100 ; load time write
movwf xms ; move w to xms
call wait_xms ; wait in ms
; --- end
;return
RD_EEPROM ; address in RAM 2F
movfw wadr,W ; data in RAM 2E
movwf EEADR ; EEADR=w
bsf STATUS,5 ; bank 1
bsf EECON1,RD ; set RD bit
bcf STATUS,5 ; bank 0
movfw EEDATA,W ; w=data
movwf value ; data=w
; --- end
return
;-------------- END EEPROM MODULE
Code:
;Rev 1.00
;d.27/07-95
; note: use timer
wadr equ 2Fh ; address in RAM 2F
value equ 2Eh ; Data in RAM 2E
WR_EEPROM ; write EEPROM (data in RAM 2E+adr in RAM 2E)
movfw wadr,W ; w=adr
movwf EEADR ; EEADR=w
movfw value,W ; w=data
movwf EEDATA ; EEDATA=w
; --- write sequnce
bsf STATUS,5 ; EEPROM write enable
bcf INTCON,GIE ; disable interupts
movlw 0x55 ; w=55h
movwf EECON2 ; EECON2=w
movlw 0xAA ; w=AAh
movwf EECON2 ; EECON2=w
bsf EECON1,WR ; EECON1=write
movlw .100 ; load time write
movwf xms ; move w to xms
call wait_xms ; wait in ms
; --- end
;return
RD_EEPROM ; address in RAM 2F
movfw wadr,W ; data in RAM 2E
movwf EEADR ; EEADR=w
bsf STATUS,5 ; bank 1
bsf EECON1,RD ; set RD bit
bcf STATUS,5 ; bank 0
movfw EEDATA,W ; w=data
movwf value ; data=w
; --- end
return
;-------------- END EEPROM MODULE
Code: