Методические указания
Варианты задания
Порядок выполнения работы
5.3.1 Выполняется при подготовке к работе.
а) Изучить теоретические сведения;
б) Подготовить алгоритм программы в виде блок-схемы;
в) Подготовить исходный текст программы;
г) Отладить программу в среде AvrStudio;
д) подготовить текстовый файл программы на электронном носителе.
5.3.2 Выполняется на лабораторном занятии.
а) Отладить программу в среде AvrStudio (если это не удалось при подготовке к работе)
б) Продемонстрировать работу программу в среде AvrStudio
в) Со своего рабочего места ввести программу в компьютер, скомпилировать и записать в микроконтроллер
г) Продемонстрировать работу программы на лабораторном стенде;
д) Подготовить распечатку программы с комментариями.
Настроить на вход линии:
1) A0, A1 2) B1, B7 3) C2, D5 4) C2, C4, С6 5) A3, B1, D7 6) D2
7) B0, B7, C3 8) C3, D1, D2 9) B0, B1, B2, B7 10) A4, B2,C2, D7
Настроить на выход линии:
1) A2, A5 2) B3, B5 3) C0, D3 4) C0, C5, С7 5) A7, B3, D0 6) D3
7) B5, B6, C1 8) C5, D0, D6 9) B3, B4, B5, B6 10) A7, B5,C5, D6
Для выполнения работы необходимо знать структуру и функционирование микроконтроллера AT90S8535 (ATmega8535), методы адресации и систему команд.
Программирование порта ввода/вывода заключается в записи определенного числа в соответствующий этому порту регистр DDR. Для записи данных, которые в микроконтроллере представляют целые числа, в область регистров I/O (а именно там находятся регистры DDR) используются два варианта.
Первый вариант: воздействовать на каждый бит регистра DDR по отдельности, используя команды «установить бит в регистре I/O» (SBI) и «очистить бит в регистре I/O» (CBI).
Второй вариант: поместить в регистр DDR такое число, чтобы отдельные биты приняли нужные значения.
На практике в основном используется второй вариант, т.к. он более универсален, а в случае программирования более двух линий используется меньше команд.
Например, необходимо настроить на вход линии С0, С1, а на выход линию С6.
Последовательность команд при первом варианте:
CBI DDRС,0 ;Запись 0 в бит 0 регистра DDRC
CBI DDRС,1 ;Запись 0 в бит 1 регистра DDRC
SBI DDRС,6 ;Запись 1 в бит 6 регистра DDRC
При втором варианте необходимо вначале определить, какое число будет записано в регистр DDR. Для этого рекомендуется изобразить регистр DDR в виде таблицы с восемью ячейками (каждая ячейка представляет отдельный бит), и проставить в каждой ячейке необходимые значения битов, как это показано ниже
С7 С0
Остальные линии порта, кроме С0, С1, С6 не задействованы. Если к ним ничего не подключено, то их состояние безразлично. Но т.к. в лабораторном стенде ко всем выводам что-то подключено, то не используемые линии необходимо запрограммировать на вход. Таким образом, состояние регистра DDRC должно быть следующим:
С7 С0
Двоичное число, которое должно быть записано в регистр 0100000. Для более рационального способа записи обычно двоичные числа переводятся в шестнадцатеричную форму т. к. перевод двоичного числа в шестнадцатеричное занимает меньше времени, чем перевод из двоичного в десятичное.
01000000 2 = 40 16. Напрямую данные в регистры I/O записать нельзя, поэтому данные сначала помещают в один из регистров общего назначения R16...R31, а потом перемещают в регистр DDRC.
Последовательность команд при втором варианте:
LDI R16,$40 ;Записать число 40 16 в регистр R16
OUT DDRC,R16 ;Переместить число 40 16 из регистра R16 в DDRC.
Как видно, при втором варианте программирования используется меньше команд. Следует отметить, что команды SBI и CBI доступны только для 32 регистров I/O с младшими адресами. Для программирования 32 регистров I/O со старшими адресами используется второй способ, а для работы с отдельными битами можно использовать, как промежуточный, бит Т регистра STATUS.
Для тренировки в программировании портов предлагается следующий шаблон текста программы. Вместо многоточия необходимо вставить команды для программирования портов в соответствии со своим вариантом.
.include "8535def.inc" ; подключить файл описания AT90S8535
.cseg ; определение начала сегмента программы (кода)
.org 0 ; определение вектора прерывания по сбросу и подаче питания
rjmp programma ; переход на метку programma
.org $30 ; определение начального адреса программы
programma:
…
…
…
rjmp programma ; перейти на метку programma