Память для энергонезависимых данных
Микроконтроллеры семейства AVR имеют память типа EEPROM, которая служит для запоминания энергонезависимых данных и констант, объемом от 64 до 512 байт, которая организована в виде отдельного запоминающего устройства. Запись и чтение могут выполняться по одному байту. Память AVR-EEPROM имеет срок службы минимум 100000 циклов записи/чтения.
Под памятью типа EEPROM (Electrically Erasable PROM – электрически стираемая память PROM) понимают такую память PROM, которую можно электрически программировать и снова стирать. При этом в случае памяти EEPROM за один раз стирается не вся информация о кристалле, благодаря чему возможно стирать только отдельные байты (то есть во все ячейки строки, соответствующей байту, записывается лог. 0).
Для программирования памяти EEPROM микроконтроллеров AVR нет необходимости применять внешнее программирующее устройство. Каждая ячейка памяти EEPROM может быть запрограммирована непосредственно во время выполнения пользовательской программы.
Для программирования используются три регистра памяти EEPROM: регистр адреса EEAR, регистр данных EEDR и регистр управления EECR. Во всех трех случаях речь идет о 8-разрядном регистре, за исключением регистра EEAR микроконтроллера AT90S8515. Поскольку для этого типа в распоряжении имеется 512 байт памяти EEPROM, и, таким образом, для адресации необходимо 9 разрядов, то здесь регистр EEAR 16-разрядный, разделенный на две части: EEARH (старший байт) и EEARL (младший байт).
Схема алгоритма
Текст программы
.device AT90S8515
.equ m=$10 ; присвоить m значение 16
.equ adr=$80 ; присвоить adr значение 256
.cseg ; начало сегмента кода
.org adr ; установить счетчик адреса текущего сегмента на адрес adr
; определение однобайтных констант в памяти программы
a: .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
; Установка начальных значений к регистры
ldi r17,adr+m+1 ; установить адрес окончания цикла
ldi r20,$30 ; задать "маску" 00110000
ldi r21,$00 ; обнулить счетчик совпадений
clr r27 ; очистить старший байт указателя Х
ldi r26,adr ; присвоить младшему байту указателя Х адрес первого числа
; Цикл обзора заданых чисел
start: ; метка начала цикла
ld r18,X+ ; передать в регистр 18 адрес, хранящийся в Х и инкрементировать Х
; Проверка наличия комбинации "11" в 4-ом и 5-ом разрядах
and r18,r20 ; применить операцию "И" к значениям в регистрах r18 и r20
cp r18,r20 ; сравнить r18 и r20
brne start ; если r18 не равно r20, перейти к метке start
; в противном случае
inc r21 ; инкрементировать r21
cp r17,r26 ; проверка условия выхода из цикла
brne start ; если r17 не равно r26, перейти к метке start
out $1B,r21 ; передача значения счетчика совпадений в порт вывода А
Результат выполнения программы:
Схема принципиальная
Список литературы
1. В.Трамперт. AVR-RISC микроконтроллеры.
2. Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики.