ЛАБОРАТОРНАЯ РАБОТА № 3 ВВОД/ВЫВОД ИНФОРМАЦИИ ИЗ МИКРОКОНТРОЛЛЕРА
Автор: drug | Категория: Технические науки / Информатика | Просмотров: | Комментирии: 0 | 21-07-2013 15:39

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

 

 

 

 

 

 

Сочинения курсовыеСочинения курсовые