这是怎么回事????????
4200: 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4220: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
为什么我在写EEPROM的时候,程序设置时将01数据写入02H,读出来看结果怎么跑到了00H中,
这是怎么回事,
不管我EEADR 中写什么地址,结果都跑到00H地址中去了
那位大侠能否帮我解答下, 因为我一直找不到程序错在哪里
以下是我的读子程序和写子程序
KEY_ON:MOVF R8 , 0
XORLW 07H
BTFSS STATUS, 2
GOTO BACK
BSF FONOF
MOVLW 02H
MOVWF R33 ;地址变量置初值
CALL ON_RD
MOVF R34 , W
MOVWF R18
MOVLW 01H
MOVWF R33
CALL ON_RD
MOVF R34 , W
MOVWF R8
TEND: GOTO KEY_R1
;********************************************
ON_RD:
BANKSEL EEADR
MOVF R33 , 0
MOVWF EEADR ;Address to read
BSF EECON1,RD ;EE read
MOVF EEDAT,W ;Move data to W
BCF STATUS,RP0
MOVWF R34
RETLW
;********************************************
KEY_OFF:MOVF R8 , 0
XORLW 06H
BTFSS STATUS, 2
GOTO KEY_R1
BCF p1
BCF p2
BCF FONOF
BCF FINT
BCF INTCON,GIE ;Disable INTs
MOVLW 02H
MOVWF R33 ;地址变量置初值
MOVF R18 , W
MOVWF R34
CALL OFF_WR
MOVLW 01H
MOVWF R33 ;地址变量置初值
MOVF R32 , W
MOVWF R34
CALL OFF_WR
BSF INTCON,GIE ;Enable INTs
bcf STATUS,RP0
GOTO MA1
;***************************************
OFF_WR:
BTFSC EECON1,WR ;上一次写操作是否完成
GOTO OFF_WR ;否!返回继续检测
BANKSEL EECON1 ;
MOVF R33 , 0 ; ;取地址
MOVWF EEADR ;送地址寄存器
Bcf STATUS,RP0
MOVF R34 , W ;取数据
BSf STATUS,RP0
MOVWF EEDAT ;送数据寄存器
BSF EECON1,WREN ;Enable write
MOVLW 55h ;Unlock write
MOVWF EECON2
MOVLW 0AAh
MOVWF EECON2
BSF EECON1,WR ;Start the write
BCF EECON1,WREN
bcf STATUS,RP0
RETLW 00H
|