0
나는 PIC16F84 마이크로 컨트롤러 용 eeprom 읽기/쓰기 서브 루틴을 작성해야한다. 그러한 코드를 작성했습니다 :PIC16F84 - eeprom 읽기 및 쓰기
EEPROM_Read
clrw
bsf STATUS, RP0 ; Bank0
movlw DATA_EE_ADDR ; Any location in Data EEPROM memory space
movwf EEADR ; Address to read
bsf EECON1, RD ; EE Read
movlw EEDATA
bcf STATUS, RP0 ; Bank0
return
EEPROM_Write
bcf INTCON,GIE ;disable interrupts for EEPROM write
banksel EEADR ;bank 2
movfw DATA_EE_ADDR ;load write address to EEPROM address pointer
movwf EEADR
movfw DATA_EE_DATA ;load write data to EEPROM data buffer
movwf EEDATA
banksel EECON1 ;bank 3
bsf EECON1,WREN ;enable EEPROM write
movlw 0x55 ;unlock codes
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1,WR ;enable EEPROM write
btfsc EECON1,WR ;wait here until write completes
goto $-1
bcf EECON1,WREN ;write complete, disable write mode
banksel 0 ;bank 0
movlw 0 ;are interrupts being used?
xorwf INTCON,W
btfss STATUS,Z
bsf INTCON,GIE ;yes,enable interrupts
return
맞습니까? EEProm_Read에 문제가 있습니다. 그것은 제대로 작동하지 않는 것 같습니다. EEADR 레지스터하지 뱅크 1에서 코드의 경우와 같이 메모리 뱅크 0에 있고 때문에