 
        
        МПТ лабы 1-сем / ЛабРаб3
.docЛАБОРАТОРНАЯ РАБОТА № 3
ВВОД/ВЫВОД ИНФОРМАЦИИ ИЗ МИКРОКОНТРОЛЛЕРА
Для организации ввода-вывода информации в микроконтроллере ATMega32 используются 4 восьмиразрядных порта ввода-вывода: Порт А, Порт В, Порт С и Порт D.
Все линии портов ввода/вывода могут работать как на ввод информации, так и на ее вывод независимо друг от друга. Максимальная нагрузочная способность одного вывода порта составляет 20 мА независимо от направления тока (втекает ток либо вытекает). В то же время суммарный ток одного порта не должен превышать 100 мА, суммарный ток всех четырех портов микросхемы не должен превышать 200 мА.
Для программного управления портами с каждым из них связано 3 регистра: PORTx, DDRx, PINx (где х={A,B,C,D}). С регистрами PORTx, DDRx можно выполнять операции чтения/записи, регистр PINx доступен только для чтения.
Регистр DDRx служит для выбора режима ввода либо вывода информации. Первоначально во все разряды порта записаны нули, в результате чего порт настроен на ввод и находится в высокоимпедансном состоянии. Для перевода какого-либо разряда порта на вывод необходимо записать в этот разряд 1.
Пример 1:
// переведем порт С в режим вывода информации
ldi r16,255 ; r16←0b11111111
out DDRC,r16 ;DDRC←0b11111111
Пример 2:
// переведем разряд порта PС3 в режим вывода информации
sbi DDRC,3
Для вывода информации необходимо записать соответствующее значение в регистр PORTx.
Пример 3:
// Выведем значение 20 в порт С
ldi r16,20 ; r16←20
out PORTC,r16
При этом сначала информация записывается в регистр PORTx (что требует одного машинного такта), затем поступает на вывод микросхемы (еще через один такт).
Запись единицы в разряд n регистра PORTx при нулевом значении бита n в регистре DDRx (порт настроен на ввод) включает встроенный резистор («подтяжку») номиналом 50кОм между плюсом питания и соответствующим выводом микросхемы, что позволяет достаточно просто использовать внешние кнопки; именно так подключены S1-S3 на лабораторном макете. При разомкнутом выключателе на выводе порта присутствует логическая единица, при замкнутом – логический ноль.
Пример 4:
// Включим «подтяжку» для разряда PC3 порта С
cbi DDRC,3 ; PС3 – в режим ввода
sbi PORTC,3 ; «подтяжка» для РС3
Для ввода информации через порт необходимо считать значение регистра PINx, отражающего состояние сигналов на выходах микросхемы.
ВНИМАНИЕ! Использование для чтения информации регистра PORTx даст записанное в него ранее значение, но не значение, присутствующее на выводе микросхемы! ИСПОЛЬЗУЙТЕ РЕГИСТР PINx!
Пример 5:
// Прочитаем значение бита 3 порта С
in r16,PORTC ; r16 ←POPTС
andi r16,0b00001000 ; выделяем третий бит с помощью маски
Задания на лабораторную работу
1. В соответствии с вариантом при нажатии одной из кнопок S1-S3 включить индикатор HL1-HL3, при отпускании кнопки индикатор должен гаснуть.
| Вариант | Кнопка | Индикатор | 
| 1 | S1 | HL1 | 
| 2 | S1 | HL2 | 
| 3 | S1 | HL3 | 
| 4 | S2 | HL1 | 
| 5 | S2 | HL2 | 
| 6 | S2 | HL3 | 
| 7 | S3 | HL1 | 
| 8 | S3 | HL2 | 
2. В соответствии с вариантом при нажатии Кнопки 1 включить Индикатор, при нажатии Кнопки 2 выключить Индикатор.
| Вариант | Кнопка 1 | Кнопка 2 | Индикатор | 
| 1 | S1 | S2 | Подсветка ЖКИ | 
| 2 | S1 | S2 | HL1 | 
| 3 | S1 | S3 | HL2 | 
| 4 | S1 | S3 | HL3 | 
| 5 | S2 | S1 | Подсветка ЖКИ | 
| 6 | S2 | S1 | HL1 | 
| 7 | S2 | S3 | HL2 | 
| 8 | S2 | S3 | HL3 | 
3. Написать программу «бегущего огня» для HL1-HL3 с заданным преподавателем периодом.
