Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

AVR-RISC Микроконтроллерры - Трамперт В.

Трамперт В. AVR-RISC Микроконтроллерры — МК- Пресс , 2006. — 458 c.
ISBN 966-8806-07-7
Скачать (прямая ссылка): mikrokontrolerri2006.pdf
Предыдущая << 1 .. 30 31 32 33 34 35 < 36 > 37 38 39 40 41 42 .. 215 >> Следующая

микроконтроллере
Рис. 3.23. Адресация констант в памяти программ
Микроконтроллеры семейства AYR позволяют использовать в выполняющейся программе предопределенные константы из памяти программ (например, определенные директивой ассемблера . db). С помощью команды 1pm (Load Program Memory — загрузка памяти программ) можно скопировать байт из памяти программ в регистр г0. С этой целью в разряды 1.. 15 регистра z, который опять вы-
80 Центральный процессор и внутренняя память
ступает в роли указателя, должен быть загружен требуемый адрес памяти команд. В зависимости от построения памяти программ соответствующего микроконтроллера базовой серии семейства AVR, можно адресовать до 4 Кбайт слов (адреса
000...SFFF в микроконтроллере AT90S8515). Бит 0 (LSB) определяет, какой байт должен быть загружен в регистр г0: младший (бит 0 = 0) или старший (бит 0=1).
Команда 1pm состоит из одного командного слова, и для ее выполнения требуется три тактовых цикла. Пример к рис. 3.23:
16-разрядное командное слово
lpm
1001 0101 1I0X 1000
Код Команда Комментарий
95с8 lpm ; Копировать в г0 содержимое байта,
; адресованного с помощью указателя z
Например, перед выполнением команды lpm указатель z (гЗО — младший байт, гЗ 1 — старший байт) содержит $00F0. По LSB (бит 0 = 0) выбирается младший байт, адрес $0078 памяти команд определяется с помощью содержимого разрядов 1... 15 (смещение S00F0 вправо на один разряд). Слово по адресу $0078 памяти команд должно содержать $55аа. В этом примере после выполнения команды lpm регистр г0 будет содержать $аа.
Прямая адресация памяти программ (команды jmp U call)
В микроконтроллерах базовой серии семейства AVR эти команды не используются, однако их все равно следует рассмотреть, принимая во внимание разработку новых моделей (рис. 3.24).
Память программ
Командное слово
10 бит 6 бит
ОР В MSB !
16 LS В !
16 бит і
-1-

Адреса
памяти
S0FFF
0
Рис. 3.24. Прямая адресация памяти программ:
Команды jmp и call выполняют прямой переход (Long Jmp) и, равным образом, вызов подпрограммы (Long Call) по указанному адресу, то есть, в счетчик команд загружается непосредственно указанный адрес, а выполнение программы продолжается с адреса, содержащегося в обоих командных словах. Теоретически, с помощью адреса шириной 22 разряда в памяти программ можно адресовать 4 Мелов. Естественно, на практике доступен только физический объем запоминающего устройства.
Команды jmp и call состоят из двух командных слов, и для их выполнения необходимы, соответственно, три (jmp) и четыре (call) тактовых цикла.
Различные способы адресации команд и данных 81
Примеры к рис. 3.24:
16-разрядное командное слово
jmp adr k
call adr a
1001 010k kkkk 110k high
kkkk kkkk kkkk kkkk low
1001 010k kkkk 111k high
kkkk kkkk kkkk kkkk low
Адрес
. org 0
000000
Код
Метка Команда
labell: jmp label2 label2: jmp labell
Косвенная адресация памяти программ (команды і jmp и і call)
940c 0300 .org 0x300 000300 940c 0000
Такой режим адресации (рис. 3.25) отсутствует в микроконтроллере AT90S1200 базовой серии семейства AYR.
Командное слово
Память программ
16 бит 15 8:7 0
I OP
Указатель
| Регистр z
16 бит

Адреса памяти $0 FFF
Рис. 3.25. Косвенная адресация памяти программ
Команды і jmp и і call выполняют косвенный переход и, равным образом, вызов подпрограммы по адресу, находящемуся в указателе z. В счетчик команд загружается содержимое регистра z, и выполнение программы продолжается с этого адреса. Теоретически, с помощью имеющегося в распоряжении 16-разрядного адреса в памяти программ можно адресовать 64 Кслов. На практике же, естественно, доступен только физический объем запоминающего устройства (например, в микроконтроллере AT90S8515 доступно 4 Кслов).
Косвенную адресацию очень удобно применять в случае использования конструкции CASE, разветвляющей программу для выбора нескольких вариантов.
Команды і jmp и icall состоят из одного командного слова, и для их выполнения необходимы, соответственно, два (i jmp) и три (icall) тактовых цикла.
Примеры к рис. 3.25:
16-разрядное командное слово
ljmp
icall
1001 0100 xxxx 1001
1001 0101 xxxx 1001
6-5-2384
82 Центральный процессор и внутренняя память
Адрес Код Метка
. org О
000000 e0f3 labell
000001 eOea
000002 9409 .org ОхОЗОа
00030a 940c 0000 label2
Команда
ldi r31,03 ldi r30,0x0a і jmp
nop
старший байт z младший байт z переход к <z>
Продолжение
Относительная адресация памяти программ (команды rjmp и г сан)
Этот тип адресации (рис. 3.26) поддерживается всеми микроконтроллерами базовой серии семейства AVR.
Адреса
Командное слово Память программ памяти
Предыдущая << 1 .. 30 31 32 33 34 35 < 36 > 37 38 39 40 41 42 .. 215 >> Следующая