Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МПТ лабы 1-сем / ЛабРаб3

.doc
Скачиваний:
27
Добавлен:
24.02.2016
Размер:
51.71 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 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 с заданным преподавателем периодом.

Соседние файлы в папке МПТ лабы 1-сем