[an error occurred while processing this directive]
ED2 и RD2 имеют разный алгоритм работы с EEPROM (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено zlogic 01 марта 2006 г. 13:47
В ответ на: T89c51rd2-cm похоже не имеет на борту флэш. Кто с этим сталкивался? Help!!!! отправлено dshabrov 01 марта 2006 г. 11:49


;Запись данных (беззнаковое целое длиной 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: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru