¿Cuál es el principio del llamado método IAP para leer y escribir datos en la EEPROM interna de un microcontrolador 51? Por favor explique, ¡estoy abierto a ello!
;------------------, a EEROM-------------------- - -------- Escribir parámetros
PARAPUT:
MOV DPTR, #0000H
LCALL IAP_Erase
MOV DPTR, #0000H
MOV R0, #60H
MOV R1, #16
PARAPUT1:
MOV A, @R0
>LCALL IAP_WRITE
INC R0
INC DPTR
DJNZ R1, PARAPUT1
RET
; ----------------Leer parámetros de EEROM------------------------------ -- --
PARAJE:
MOV DPTR, #0000H
MOV R0, #60H
MOV R1, #16
PARAGET1:
LCALL IAP_READ
MOV @R0,A
INC R0
INC DPTR
DJNZ R1, PARAGET1
RET
--------------------------; -- --------------------
;Leer un byte, es necesario activar la función IAP antes de llamar, Entrada: DPTR = dirección de byte, return :A = leer bytes
IAP_READ:
MOV IAP_CONTR, #ENABLE_IAP; Habilita la función IAP, establece el tiempo de espera para la operación Flash
MOV IAP_CMD, # ISP_IAP_BYTE_READ; Establecer el comando de modo de lectura de bytes IAP/ISP/EEPROM
MOV IAP_ADDRH, DPH; Establecer la dirección alta de 8 bits de la dirección de la unidad de destino
MOV IAP_ADDRL, DPL; la dirección de la unidad de destino Los 8 bits inferiores de la dirección
; CLR EA
MOV IAP_TRIG, #5AH; primero envíe 5Ah, luego envíe A5h al registro de activación ISP/IAP.
MOV IAP_TRIG, #0A5H; Después de enviar A5h, el comando ISP/IAP se activará inmediatamente
NOP
MOV A, IAP_DATA Los datos leídos están en la unidad IAP_DATA y se envían; al acumulador A
; SETB EA
> LCALL IAP_DISP.> LCALL IAP_Disable; deshabilite la función IAP, borre los registros de funciones especiales relevantes y ponga la CPU en un estado seguro,
; Se recomienda desactivar la función IAP después de completar una operación IAP continua. No es necesario desactivarla cada vez
RET
; -------- ------------- ------------------------
;Programación de bytes, llamada Debe activar la función IAP antes, entrada: DPTR = dirección de byte, A = byte de datos a programar
IAP_WRITE:
MOV IAP_CONTR, #ENABLE_IAP; active la función IAP, configure el tiempo de espera de la operación de la memoria flash
MOV IAP_CONTR, #ENABLE_IAP; Establecer el tiempo de espera de operación de la memoria flash
MOV IAP_CMD, #ISP_IAP_BYTE_PROGRAM; Establecer el comando del modo de programación de bytes IAP/ISP/EEPROM
MOV IAP_ADDRH, DPH; dirección de unidad Dirección
MOV IAP_ ADDRL, DPL; establezca la dirección inferior de 8 bits de la dirección de unidad de destino
MOV IAP_DATA, A Primero envíe los datos a programar al ISP_DATA; registrarse
;CLR EA
MOV IAP_TRIG, #5AH; envía A5h después de enviar 5Ah al registro de activación ISP/IAP cada vez.
MOV IAP_TRIG, #0A5H Después de enviar A5h, el comando ISP/IAP se activará inmediatamente
NOP
; > LCALL IAP_Disable; deshabilita la función IAP, borra los registros de funciones especiales relacionados para poner la CPU en un estado seguro.
; Se recomienda deshabilitar IAP después de realizar una operación IAP consecutiva en lugar de deshabilitarla cada vez
RET
;-------- - ---------------------------------------
;Borrar sector , Entrada: DPTR = Dirección del sector
IAP_Erase:
MOV IAP_CONTR, #ENABLE_IAP; Habilite la función IAP y establezca el tiempo de espera para las operaciones flash
MOV IAP_CMD , #03H ; Establecer el comando de modo de borrado del sector IAP/ISP/EEPROM
MOV IAP_ADDRH, DPH Establecer la dirección de 8 bits superiores de la dirección de la unidad de destino
MOV IAP_ADDRL, DPL; ; Establezca la unidad de destino Los 8 bits inferiores de la dirección
; CLR EA
MOV IAP_TRIG, #5AH; Envíe 5Ah al registro de activación ISP/IAP cada vez; A5h.
MOV IAP_TRIG, #0A5H Después de enviar A5h, el comando ISP/IAP se activará inmediatamente
NOP
; > LCALL IAP_Disable; deshabilita la función IAP, borra los registros de funciones especiales relacionados para poner la CPU en un estado seguro. p>; Deshabilite la función IAP, borre los registros de funciones especiales relevantes y ponga la CPU en un estado seguro.
Se recomienda deshabilitar la función IAP después de completar una operación IAP continua. es necesario deshabilitar la función cada vez
MOV IAP_CONTR, #0; Deshabilitar la función IAP
MOV IAP_CMD, #0; borre el registro de comando para borrar el registro de comando. MOV IAP_CMD, #0; borrar registro de comando, no hay comando en el registro de comando, esta oración se puede ignorar
MOV IAP_TRIG, #0; borrar registro de comando, no hay comando en el registro de comando, esta oración puede ser ignorado
MOV IAP_ADDRH, #0FFH; envía el byte alto de la dirección a 00, apuntando al área que no es EEPROM
MOV IAP_ADDRL, #0FFH; envía la dirección a 00; , apuntando al área que no es EEPROM Área que no es EEPROM
MOV IAP_CARL, #0FFH ADDRL, #0FFH envía la unidad de byte bajo de la dirección a 00 para evitar un mal funcionamiento
RET;