Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Краткие теоретические сведения. 5.6.1 Сколько параллельных портов у микроконтроллера АТ90S8535?




Цель работы

Контрольные вопросы

 

5.6.1 Сколько параллельных портов у микроконтроллера АТ90S8535?

5.6.2 Сколько линий имеют параллельные порты у микроконтроллера АТ90S8535?

5.6.3 Из какого регистра портов ввода/вывода считываются входные данные?

5.6.4 В какой регистр портов ввода/вывода помещаются выходные данные?

5.6.5 Какой регистр портов ввода/вывода предназначен для задания направления передачи данных?

5.6.6 Какую функцию выполняет регистр PINA?

5.6.7 Какую функцию выполняет регистр PORTC?

5.6.8 Какую функцию выполняет регистр DDRD?

5.6.9 Что надо сделать, чтобы запрограммировать линию А5 на ввод данных?

5.6.10 Что надо сделать, чтобы запрограммировать линию В1 на вывод данных?

5.6.11 В какое состояние устанавливаются линии портов ввода/вывода при подачи питания на микроконтроллер?

5.6.12 Поясните процедуру программирования портов ввода/вывода?

 

 

6 ЛАБОРАТОРНАЯ РАБОТА

«ПРОГРАММНАЯ РЕЛИЗАЦИЯ УЗЛОВ ЦИФРОВОЙ СХЕМОТЕХНИКИ»

 

 

Освоение приемов программирования, в том числе с использованием условных переходов, организацией циклов, косвенной адресацией.

 

 

Выбор имитации цифрового устройства обусловлен тем, что микроконтроллер в основном предназначен для применения в устройствах управления. А для синтеза устройств управления используются принципы синтеза цифровых устройств, да и сами устройства управления чаще всего являются именно цифровыми устройствами. Кроме того, реализация цифровых устройств на аппаратном уровне рассматривалась в предыдущих курсах и студенты хорошо знакомы с принципами их построения и работы.

Работу любого цифрового устройства можно описать с помощью таблицы истинности, аналитического выражения или словесного описания. Алгоритм реализации функционирования во всех трех случаях будет различным. Основное время в программировании практических задач занимает разработка алгоритма. Это в большой мере творческий процесс. Написание программы по готовому алгоритму, сводится к чисто технической задаче, где используются наработанные приемы и готовые библиотечные программы.

В первом приближении алгоритм можно составлять, не привязывая его к конкретному языку программирования. Но реализация отдельных блоков алгоритма уже требует использования конкретного языка программирования. Наиболее рациональная программа получается, когда уже на начальной стадии разработки алгоритма учитывается язык программирования.

Программы для микроконтроллера AVR предполагается писать на ассемблере. Хотя можно писать и на языке высокого уровня, например на С++. Известно, что на языках высокого уровня программировать проще, чем на ассемблере, хотя сам язык высокого уровня сложнее и изучать его дольше. Программирование микроконтроллера на ассемблере выбрано из тех соображений, что он проще языка высокого уровня, время на его изучение требуется меньше. Это позволяет уже через короткое время написать несложную программу и проверить ее работу. При программировании на ассемблере необходимо хорошо знать структуру микроконтроллера, что тоже является задачей дисциплины. Кроме того, программирование на языке С++ изучается в другом курсе, и после окончания института выпускник сам решит на каком языке при необходимости осуществлять программирование микроконтроллера.

Все микроконтроллеры серии AVR программно совместимы. Программа для микроконтроллеров серии AVR состоит из последовательно написанных строк.

Строка программы может быть в одной из четырёх форм:

[ Метка:] директива [операнды];[Текст комментария]

[ Метка:] команда [операнды];[Текст комментария]

;[Текст комментария]

Пустая строка

В квадратных скобках представлены необязательные компоненты строки, и они могут отсутствовать. Строка не должна быть длиннее 120 символов.

Метка является алфавитно-цифровой последовательностью символов (словом), заканчивающейся двоеточием. Она используются, как указание для команды безусловного перехода и команд условного перехода. Применение меток облегчает программирование, поскольку метка не привязана к определенному адресу, а физический адрес перехода определяется в процессе трансляции программы. В качестве метки нельзя использовать имена команд или директив.

Компилятор не требует, чтобы метки, директивы, команды или комментарии находились в определённой колонке строки

Операнд - это целое число, над которым производится действие. Операнды можно задавать в различных форматах:

десятичный (по умолчанию), например, 12;

шестнадцатеричный, например, $0а (или 0´0а);

двоичный, например, 0b00001010, 0b11111111;

Форма представления значения не имеет и определяется соображениями рациональности и пристрастиями программиста.

Команда определяет действие над операндами. Операндов в команде обычно два или один. Существуют команды и не содержащие операнды.

Директивы не транслируются непосредственно в коды операции. Они используются для облегчения программирования, чтобы корректировать местоположение программы в памяти, определять макрокоманды, инициализировать память и так далее. То есть это указания самому ассемблеру.

Комментарий пишется после символа “; ”. Любой текст после символа “; ” игнорируется ассемблером и имеет значение только для пользователя.

Пустая строка никак не воспринимается компилятором, но учитывается при общей нумерации строк в процессе компиляции.

Команды, директивы, операнды и метки можно писать и строчными, и прописными буквами.

Система команд микроконтроллеров ATMEL семейства AVR очень большая (порядка 130 команд) и в то же время эффективная. Правда, некоторые команды дублируют друг друга. Одной из отличительных особенностей микроконтроллеров AVR по сравнению с другими является то, что почти все команды выполняются за 1 тактовый цикл. Исключение составляют команды перехода. Это существенно увеличивает производительность микроконтроллера даже при относительно невысокой тактовой частоте.

 

Команды можно классифицировать следующим образом:

1. арифметические команды;

2. логические команды;

3. команды операций с битами;

4. команды пересылки данных;

5. команды перехода;

6. прочие команды.

При выполнении данных лабораторных работ для упрощения запоминания команд и написания программ не предполагается использовать весь набор директив и команд, тем более что многие команды дублируют друг друга. Полный набор команд и директив приведен в приложении. Предлагаемый набор команд представлен в таблицах 6.1…6.6.

 

Таблица 6.1. Арифметические команды

Мнемо-ника Операн- ды Описание Операция Флаги Кол-во циклов
ADD Rd,Rr 0≤ d ≤31 0≤ r ≤31 Сложить без переноса Rd ß Rd + Rr Z, C, N, V, H  
ADIW Rd,K d{24,26,28,30} 0≤K≤63 Сложить непосредственное значение со словом Rdh:Rdl Rdh:Rdl + К Z, C, N, V  
SUB Rd,Rr 0≤ d ≤31 0≤ r ≤31 Вычесть без заема Rd ß Rd – Rr Z, C, N, V, H  
INC Rd 0≤ d ≤31 Инкрементировать (увеличить на 1) Rd ß Rd + 1 Z, N,V  
DEC Rd 0 ≤d ≤31 Декрементировать (уменьшить на 1) Rd ß Rd - 1 Z, N,V  

 

 

Таблица 6.2. Логические команды

Мне- мо­- ника Операн- ды Описание Операция Флаги Кол-во циклов
AND Rd, Rr 0≤ d ≤31 0≤ r ≤31 Выполнить логическое И   Rd ß Rd • Rr Z, N, V  
ANDI Rd, К 16≤ d≤31 0≤k≤255 Выполнить логическое И с константой Rd ß Rd • К Z, N, V  
OR Rd, Rr 0≤ d ≤ 31 0≤ r ≤31 Выполнить логическое ИЛИ Rd ß Rd v Rr Z, N, V  
ORI Rd, К 16≤ d≤31 0≤K≤255 Выполнить логическое ИЛИ с константой Rd ß Rd v К Z, N, V  
EOR Rd, Rr 0≤ d ≤31 0≤ г ≤31 Выполнить исключающее ИЛИ Rd ß Rd Å Rr Z, N, V  
СОМ Rd 0≤ d ≤31 Выполнить инверсию всех битов регистра Rdß $FF - Rd Z, C, N, V  
CLR Rd 0≤ d ≤31 Очистить (обнулить) регистр Rd ß 0 Z, N, V  
SER Rd 16≤ d≤31 Установить все биты реги- стра в 1 Rd ß $FF нет  
CP Rd, Rr 0≤ d ≤31 0≤ r ≤31 Сравнить регистры Rd - Rr Z, C, N, V, H  
CPI Rd, К 16≤ d≤31 0≤K≤255 Сравнить регистр с кон- стантой Rd - K Z, C, N, V, H  

 

Таблица 6.3. Команды операций с битами

Мне- мо-­ ника Операн-­ ды Описание Операция Флаги Кол-во циклов
Сдвиги
LSL Rd 0≤ d ≤31 Логически сдвинуть влево Rd(n+1)ß Rd(n), Rd(0)ß 0, C ß Rd(7) Z,C,N,V, H  
LSR Rd 0≤ d ≤31 Логически сдвинуть впра- во Rd(n)ß Rd(n+1), Rd(7) ß 0, C ß Rd(0) Z,C,N,V  
ROL Rd 0≤ d ≤31 Сдвинуть влево через пе- ренос Rd(0) ß C, Rd(n+1)ß Rd(n), C ß Rd(7) Z,C,N,V, H  
ROR Rd 0≤ d ≤31 Сдвинуть вправо через пе- ренос Rd(7) ß C, Rd(n)ß Rd(n+1), C ß Rd(0) Z,C,N,V  
Работа с битами в портах I/O
SBI P, b 0≤ P ≤31 0≤ b ≤7 Установить бит в регистре I/O (P,b) ß 1 Нет  
CBI P, b 0≤ P ≤31 0≤ b ≤7 Очистить бит в регистре I/O (P,b) ß 0 Нет  
BSET s 0≤ s ≤7 Установить флаг в регист- ре статуса SREG(s) ß 1 SREG(s)  
BCLR s 0≤ s ≤7 Очистить флаг в регистре статуса SREG(s) ß 0 SREG(s)  
SEI     Установить флаг глобаль- ного прерывания I ß 1 I  
CLI     Очистить флаг гло­бального прерывания I ß 0 I  
Перемещение бита
BST Rd, b 0≤ d ≤31 0≤ b ≤7 Переписать бит из регистра в флаг Т Т ß Rd(b) Т 1
BLD Rd, b 0≤ d ≤31 0≤ b ≤7 Переписать флаг Т в бит регистра Rd(b) ß Т Нет  

Таблица 6.4. Команды пересылки данных

Мне- мо­- ника Операн­- ды Описание Операция Флаги Кол-во циклов
Прямая адресация
MOV Rd, Rr 0≤ d ≤31 0≤ r ≤31 Переслать данные из регистра в регистр Rd ß Rr Нет  
LDI Rd, K 16≤ d ≤31 0≤ k ≤ 255 Записать константу в регистр   Rd ß K Нет  

 

LDS Rd, k 0≤ d ≤31 0≤k≤65535 Переслать данные из ОЗУ по адресу k в регистр Rd ß (k) Нет  
STS k, Rr 0≤ d ≤31 0≤k≤65535 Переслать данные из ре- гистра в ОЗУ по адресу k (k) ß Rr Нет  
IN Rd, P 0≤ d ≤31 0 ≤ P ≤63 Переслать данные из пор- та I/O в регистр Rd ß P Нет  
OUT P,Rr 0≤ r ≤31 0≤ P ≤63 Переслать данные из ре - гистра в порт I/O P ß Rr Нет  
PUSH Rr 0≤ r ≤31 Сохранить регистр в стеке STACK ß Rr Нет  
POP Rd 0≤ d ≤31 Извлечь регистр из стека Rd ß STACK Нет  
Косвенная адресация
LD Rd,X (Y,Z) 0≤ d ≤31 Переслать данные из ОЗУ в регистр Rd. Адрес, данных находится в регистре X (Y,Z). Rd ß (X) (Y,Z) Нет  
ST X (Y,Z),Rr 0≤ r ≤31 Переслать данные из регистра Rr в ОЗУ Адрес, данных находится в регистре X (Y,Z). (X) (Y,Z) ß Rr Нет  

 

Таблица 6.5. Команды переходов

Мне- мо-­ ника Операн­ды Описание Операция Флаги Кол-во циклов
Безусловные переходы
RJMP k -2K<k<2K Перейти относительно на метку PC ß PC + k + 1 Нет  
RCALL k -2K≤k≤2K Вызвать подпрограмму относительно по метке PC ß PC + k + 1 Нет  
RET     Вернуться из подпро- граммы PC ß STACK Нет  
RETI     Вернуться из прерыва- ния PC ß STACK I  
Пропуск одной команды при выполнении условия
CPSE Rd,Rr 0≤ d ≤31, 0≤ r ≤31 Сравнить и пропустить, если значения регистров равны if Rd = Rr then PC ß PC + 2 (or 3) Нет 1/2/3
SBRC Rr,b 0≤ r ≤31 0≤ b ≤7 Пропустить, если бит b в регистре равен 0   if Rr(b) = 0 then PC ß PC + 2 (or 3) Нет 1/2/3
SBRS Rr,b 0≤ r ≤31 0 ≤b≤ 7 Пропустить, если бит b в регистре равен 1   if Rr(b) = 1 then PC ß PC + 2 (or 3) Нет 1/2/3
SBIC P,b 0≤ P ≤31 0≤ b ≤7 Пропустить, если бит b в регистре I/O равен 0   if I/O P(b) = 0 then PC ß PC + 2 (or 3) Нет 1/2/3
SBIS P,b 0≤ r ≤31 0≤ b ≤7 Пропустить, если бит b в регистре I/O равен 1   if I/O P(b) = 1 then PC ß PC + 2 (or 3) Нет 1/2/3
Переход на метку (относительный адрес) при выполнении условия
BREQ k -64≤k≤+63 Перейти на метку, если содержимое регистров равно if Rd= Rr (Z=1) then PC ß PC + k + 1 Нет 1/2
BRNE k -64≤k≤+63 Перейти на метку, если содержимое регистров не равно if Rd ¹ Rr(Z=0) then PC ß PC + k + 1 Нет 1/2
BRSH k -64≤k≤+63 Перейти, если равно или больше (без знака) if Rd≥Rr(C = 0) then PCß PC+ k + 1 Нет 1/2
BRLO k -64≤k≤+63 Перейти, если меньше (без знака) if Rd<Rr (C=1) then PC ßPC + k + 1 Нет 1/2
BRBS s, k 0≤ s ≤7 -64≤k≤+63 Перейти, если бит s в регистре статуса равен 1 if SREG(s) = 1 then PC ß PC + k + 1 Нет 1/2
BRBC s, k 0≤ s ≤7 -64≤k≤+63 Перейти, если бит s в регистре статуса равен 0   if SREG(s)=0 then PC ß PC + k + 1 Нет 1/2

 

Таблица 6.6. Прочие команды

Мне- мо-­ ника Операн­ды Описание Операция Флаги Кол-во циклов
NOP     Выполнить холостую команду     Нет  

 

В таблице применяются следующие обозначения:

Rr – регистр общего назначении источник данных;

Rd – регистр общего назначении приемник данных;

r,d – номера регистров общего назначения;

Р – порт ввода/вывода (I/O);

К – целое число (диапазон указан в таблице после обозначения команды);

b – номер бита (диапазон 0…7);

s - номер бита в регистре SREG (диапазон 0…7);

k – метка или относительный адрес перехода

0 … 31 – диапазон возможных численных значений;

X (Y,Z) – один из регистров косвенной адресации.

 

Предлагаемые для использования директивы:




Поделиться с друзьями:


Дата добавления: 2014-11-18; Просмотров: 581; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.