具体的写代码段
;*********************************************************;eewrite(w) - address to read is contained in w when this function is called
; - eedata is loaded prior to this function call
; - bank1 must be selected before this function is called
;*********************************************************eewrite
movwf eeadr
bsf eecon1,wren
bcf intcon, gie
movlw 0x55
movwf eecon2
movlw 0xaa
movwf eecon2
bsf eecon1,wr
eecomplete
btfsc eecon1,wr
goto eecomplete
bcf eecon1,wren
return
;*********************************************************;update_ee - this routine updates calibration flag & calibration value
;*********************************************************update_ee
banksel eedata ;bank1
movf osccal,w
movwf eedata
movlw saveadr
call eewrite ;update calibration value
banksel gpio ;bank0
;check wirtted data
movf eedata,w ;eedata not changed
;from previous write
bsf eecon1,rd ;yes, read the
;value written
xorwf eedata,w
btfss status,z ;is data the same
goto update_ee ;no, handle error
return