[an error occurred while processing this directive]
|
;Запись данных (беззнаковое целое длиной 4 байта) в EEPROM микроконтроллера T89C51RD2
;Тактовая частота 11.0592 МГц
;addr - адрес в EEPROM (всегда кратен четырем)
;var - переменная (беззнаковое целое), которая помещается в EEPROM
EXTRN DATA (addr)
EXTRN DATA (var)
;объявление SFRs
EECON EQU 0D2h
EETIM EQU 0D3h
WrRom: clr EA ;запретить все прерывания
mov EETIM, #37h ;частота кварцевого резонатора = 11.0592 МГц (11 * 5 = 37h)
mov EECON, #02h ;разрешить работу с EEPROM
mov r0, #addr ;инициализировать указатель DPTR на начало переменной в EEPROM
mov a, @r0
mov DPH, a
inc r0
mov a, @r0
mov DPL, a
mov r0, #var ;инициализировать указатель (R0) на начало переменной в ОЗУ T89C51RD2
wait0: mov a, EECON ;ждать готовности EEPROM к записи
anl a, #01h
jnz wait0
mov a, @r0 ;взять первый байт перемнной VAR
movx @dptr, a ;записать первый байт в EEPROM
inc dptr
inc r0
mov a, @r0 ;взять второй байт перемнной VAR
movx @dptr, a ;записать второй байт в EEPROM
inc dptr
inc r0
mov a, @r0 ;взять третий байт перемнной VAR
movx @dptr, a ;записать третий байт в EEPROM
inc dptr
inc r0
mov a, @r0 ;взять четвертый байт перемнной VAR
movx @dptr, a ;записать четвертый байт в EEPROM
mov EECON, #52h ;выдать команду на запись
mov EECON, #0A2h
wait1: mov a, EECON ;ждать готовности EEPROM к записи
anl a, #01h
jnz wait1
mov EECON, #00h ;запретить работу с EEPROM
setb EA ;разрешить все прерывания
;Чтение данных (беззнаковое целое длиной 4 байта) из EEPROM микроконтроллера T89C51RD2
;Тактовая частота 11.0592 МГц
;addr - адрес в EEPROM (всегда кратен четырем)
;var - переменная (беззнаковое целое), в которую помещается прочитанное значение
EXTRN DATA (addr)
EXTRN DATA (var)
;объявление SFRs
EECON EQU 0D2h
EETIM EQU 0D3h
RdRom: clr EA ;запретить все прерывания
mov EECON, #02h ;разрешить работу с EEPROM
mov r0, #addr ;инициализировать указатель DPTR на начало переменной в EEPROM
mov a, @r0
mov DPH, a
inc r0
mov a, @r0
mov DPL, a
mov r0, #var ;инициализировать указатель (R0) на начало переменной в ОЗУ AT89S8252
movx a, @dptr ;прочитать первый байт из EEPROM
mov @r0, a ;сохранить его в VAR
inc dptr
inc r0
movx a, @dptr ;прочитать второй байт из EEPROM
mov @r0, a ;сохранить его в VAR + 1
inc dptr
inc r0
movx a, @dptr ;прочитать третий байт из EEPROM
mov @r0, a ;сохранить его в VAR + 2
inc dptr
inc r0
movx a, @dptr ;прочитать четвертый байт из EEPROM
mov @r0, a ;сохранить его в VAR + 3
mov EECON, #00h ;запретить работу с EEPROM
setb EA ;разрешить все прерывания
ret ;выход из подпрограммы
end
E-mail: info@telesys.ru