Методички по Микропроцессорам / Приложение Б(134-140)
.doc
Таким образом, обращение к регистрам памяти I/O можно осуществлять по-разному. Например, необходимо все каналы порта D запрограммировать на вывод информации. При непосредственном обращении к регистру DDRD порта D программа будет иметь вид:
…………………………
ldi r16, $ff
out DDRD, r16
…………………………
или такой вид:
………………………….
ldi r16, $ff
out $11, r16
…………………………….
Использование команд IN и OUT является признаком обращения к регистрам памяти I/O с адресами от $00 до $3F.
При обращении к регистру DDRD как к ячейке памяти пространства памяти данных, программа будет иметь вид:
……………………………..
ldi r16, $ff
sts $31, r16
……………………………..
В процессе обработки прерываний и вызовов подпрограмм адрес возврата счетчика команд (PC) сохраняется в стеке. Стек размещается в SRAM данных и, следовательно, размер стека ограничен только общим размером SRAM и уровнем ее использования. Все пользовательские программы в подпрограммах возврата (прежде чем подпрограммы или прерывания будут выполняться) должны инициализировать указатель стека (SP). 10-разрядный указатель стека, с возможностью чтения/записи располагается в пространстве I/O, по адресам $3E($5E) и $3D($5D).
Указатель стека должен быть установлен так, чтобы адрес его вершины располагался в области памяти ОЗУ выше $60. Рекомендуется его устанавливать по адресу $025f. Указатель стека декрементируется на единицу при каждом занесении данных в стек командой PUSH, и на две единицы при занесении данных в стек командой CALL и прерыванием. Указатель стека инкрементируется на единицу при извлечении данных из стека и на две единицы при возвращении из подпрограммы командой RET или при возврате из прерывания командой RETI.
EEPROM-память данных организована как отдельное пространство данных со своей адресацией от $0000 до $01ff. Она позволяет считывание и запись отдельного байта. Взаимодействие между EEPROM и CPU определяется регистром адреса EEPROM (EEARH и EEARL), регистром данных EEPROM (EEDR) и регистром управления EEPROM (EECR) из области регистров ввода/вывода I/O.
Использование памяти EEPROM в лабораторном комплексе не предусмотрено.