论坛风格切换切换到宽版
  • 3557阅读
  • 2回复

12F629 EEPROM读写的问题 [复制链接]

上一主题 下一主题
离线Apple
 
发帖
759
只看楼主 倒序阅读 0楼 发表于: 2008-01-19
我在编一个12f629的程序用来校正629内部振荡器的频率.
程序里面把校正值保存到片内的eeprom中.
但是用编程器读出来的数据老是不对,具体就是用编程器多次读出,每次数值不一样.

编程器是jdm类型的fez887.
软件用的是ic prog1.06a.

最开始觉得编程器或者是ic prog1有问题,但是用这两个东西写eeprom读出就没有问题.
然后改程序加了写校验的程序,提高电压到4.8v(原来是3.6v)运行,还是不对.

这是什么问题啊?
离线Apple
发帖
759
只看该作者 1楼 发表于: 2008-01-19
具体的写代码段
;*********************************************************;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
离线Apple
发帖
759
只看该作者 2楼 发表于: 2008-01-19
程序在这里.
太奇怪了.

烧写hex文件的时候,eeprom里面没有内容,全部是ff.
烧完立刻读出,eeprom里面有内容.而且内容每次都不一样.
位置就是我在程序里要写的位置.
晕啊!
附件: 12F629Frq.txt (0 K) 下载次数:208