VojtVojtěěchch KrmKrmííččekek vojtec@vojtec@icsics..munimuni..czcz PIC12F629 / 675 EEPROM PIC12FPIC12F629 / 675629 / 675 EEPROMEEPROM PackagePackage EEPROMEEPROM -- BBasicsasics Readable and writable duringReadable and writable during normal voltage,normal voltage, memory is not directly accessible,memory is not directly accessible, itit’’s mapped in the register file space,s mapped in the register file space, there are four control registers:there are four control registers: EECON1, EECON2, EEDATA, EEADREECON1, EECON2, EEDATA, EEADR addressaddress rangerange fromfrom 0h to 7Fh0h to 7Fh interruptinterrupt onon writewrite completecomplete (EEIF)(EEIF) RegistersRegisters EepromEeprom RegistersRegisters EepromEeprom (cont.)(cont.) Read sequenceRead sequence bsf STATUS,RP0 ;Bank 1 movlw ADDRESS ; movwf EEADR ;Address to read bsf EECON1,RD ;EE Read movfmovf EEDATA,WEEDATA,W ;Move data to W Write sequenceWrite sequence bsf STATUS,RP0 ;Bank 1 movlw movwf EEDATA ; Data to write movlw
movwf EEADR ; Address to write bsf EECON1,WREN ; Enable write bcf INTCON,GIE ; Disable INTs movlw 0x55 ; Unlock write movwf EECON2 ; movlw 0xAA ; movwf EECON2 ; bsfbsf EECON1,WREECON1,WR ; Start the write Loop: btfsc EECON1,WR ; Waiting until goto Loop ; write is finished bsf INTCON,GIE ; Enable INTS Verify sequenceVerify sequence bcf STATUS,RP0 ;Bank 0 : ;Any code bsf STATUS,RP0 ;Bank 1 READ movf EEDATA,W ;EEDATA not changed from previous write bsf EECON1,RD ;, Read the ;value written xorwf EEDATA,W btfss STATUS,Z ;Is data the same goto WRITE_ERR ; handle error : ;, continue EEPROMEEPROM RegistersRegisters