
- •Конспект лекций по дисциплине Микропроцессоры и микропроцессорные системы управления
- •Раздел 1 Основы микропроцессорной техники Тема 1.1 Принцип программного управления – основной принцип работы мп
- •Тема 1.2 Принцип централизации управления мпс. Шинная связь
- •Урок №5
- •Тема 1.3 Регистровая модель микропроцессора
- •1.3.1 Классификация внутренних регистров мп
- •1.3.2 Две архитектуры мп: аккумуляторная и регистровая
- •1.3.4* Внутренняя структура мп i8080
- •1.3.5* Регистровая модель мп i8080
- •Урок № 6
- •Урок №7 Лабораторная работа №1 Ввод, компиляция и отладка программ в avr Studio
- •Урок №8 Лабораторная работа №2 Анализ работы ядра микроконтроллера
- •Тема 1.4 Режимы работы микропроцессорной системы
- •Урок №11 Тема: Упражнения. Подготовка к лабораторным работам №3, 4
- •Урок №12 Лабораторная работа №3 Анализ работы микропроцессора в программном режиме и в режиме вызова подпрограмм
- •1 Практические задания и методические указания по их выполнению
- •3 Контрольные вопросы:
- •Урок №13 Лабораторная работа №4 Анализ работы микропроцессора в режиме прерывания программы
- •2 Практические задания и методические указания по их выполнению
- •3 Оформление отчета
- •4 Контрольные вопросы:
- •Урок №14
- •Тема 1.5 Микроконтроллеры
- •Раздел 2 микроконтроллеры семейства avr
- •Тема 2.1 История создания, классификация микроконтроллеров семейства avr
- •Тема 2.2 Типы корпусов микроконтроллеров семейства avr
- •Урок №17
- •Тема 2.3 Основные параметры, назначение выводов мк aTtiny2313
- •Урок №18
- •Тема 2.4 Основные параметры, назначение выводов мк aTmega8535
- •Урок №17
- •Тема 2.3 Основные параметры, назначение выводов мк aTtiny2313
- •Урок №18
- •Тема 2.4 Основные параметры, назначение выводов мк aTmega8535
- •Урок №19
- •Тема 2.5 Синхронизация работы мк avr
- •Урок №20
- •Тема 2.6 Система сброса
- •Урок №21
- •Тема 2.7 Параллельные порты микроконтроллеров семейства avr
- •Урок №22
- •Тема 2.8 Команды обращения к параллельным портам микроконтроллеров семейства avr
- •Урок №27 Лабораторная работа № 5 Методика отладки программ на лабораторном стенде «Программирование мк aTmega8535»
- •Урок №28 Лабораторная работа № 6 Разработка и отладка программы «Copy»
- •Урок № 29
- •Тема 2.9 Типичные схемы подключения светодиодов к выходам мк
- •Урок №30
- •Урок №31
- •Тема 2.10 Типичные схемы подключения семисегментных индикаторов к выходам мк
- •Урок №32
- •Урок №33
- •Урок №34 Лабораторная работа № 7 Исследование работы схемы статической индикации на лабораторном стенде «Программирование мк aTmega8535
- •2 Практические задания и методические указания по их выполнению.
- •Урок № 35
- •Тема 2.11 Типичные схемы подключения двоичных датчиков
- •Урок № 36
- •Урок №37
- •Тема 2.12 Программирование микроконтроллеров
- •Урок № 38 Подготовка к лабораторным работам № 8, 9
- •Урок № 39 Лабораторная работа №8 Программирование микроконтроллера с помощью программатора Phyton
- •Урок № 40 Лабораторная работа №9 Отладка программ на стенде «Цифровые микросхемы»
- •Урок № 41
- •Тема 2.13 Система прерываний
- •Урок №42
- •Урок №43
- •Урок №45 Лабораторная работа №10 Исследование логики прерывания от внешнего устройства
- •1 Краткие сведения из теории
- •2 Практические задания и методические указания по их выполнению
- •3 Оформление отчета
- •Урок № 46
- •Урок № 47
- •Тема 2.14 Таймеры
- •Урок № 49
- •Урок № 50
- •Урок № 51 Лабораторная работа № 11 Исследование работы таймера-счетчика t/c0
- •1 Краткие сведения из теории
- •3 Оформление отчета
- •Тема 2.12 Лабораторный комплекс «Микроконтроллеры и автоматизация»
- •Тема 2.13 Примеры программ ввода-вывода
- •Раздел 4 специальные возможности микроконтроллеров семейства avr Тема 4.1 Система прерываний
Урок №22
Подключение к выводам параллельного порта внутреннего подтягивающего резистора.
Возможность использовать внутренний подтягивающий резистор при вводе облегчает подключение кнопок, тумблеров, датчиков – любых внешних контактов. Обычно при подключении внешнего контакта используется внешний резистор (рисунок 2), который обеспечивает подключение входа порта к источнику питания, в результате чего при разомкнутом контакте вход не «повисает в воздухе», а на него подается лог.1. В МК AVR нет необходимости подключать внешний резистор, так как имеется возможность использовать внутренний подтягивающий резистор.
Рисунок 2 – Схема подключения внешнего резистора
Проанализируем схему подключения внутреннего резистора по схеме порта (рисунок 1).
Резистор может быть подключен ко входу порта при выполнении двух условий. Первое условие - соответствующая линия порта должна быть настроена на ввод, второе условие – в соответствующий разряд регистра данных порта должна быть записана 1. При выполнении этих условий на выходе лог. элемента & появляется 1 и замыкается ключ S4, который подключает нагрузочный резистор в питанию Vcc.
В режиме вывода данных резистор отключен: Qddrb=1, контакт S4 разомкнут.
Таблица 1 – Режимы работы порта
Регистр ddrb |
Регистр portb |
Режим |
Подтягивающий резистор |
0 |
0 |
Ввод |
Нет |
0 |
1 |
Ввод |
Да |
1 |
данные |
Вывод |
Нет |
Сброс порта
Во время сброса в регистр направления ddrb записывается 0, порт настраивается на ввод, ключ S3 разомкнут. В регистр данных portb также записывается 0, поэтому ключ S4 разомкнут, нагрузочные резисторы отключаются, и выводы порта находятся в третьем состоянии (Z-состояние).
2.7.5 Нагрузочная способность портов
Выход микроконтроллера AVR способен «поглощать» выходной ток силой до 20 мА, однако сумма всех выходных токов не должна превышать 200 мА, а суммарная сила токов портов В и С – 100 мА.
Контрольные вопросы:
1 Зачем ко входу параллельного порта подключается внутренний подтягивающий резистор?
2 Как подключить внутренний подтягивающий резистор ко входу параллельного порта?
3 Что происходит с регистрами портов при сбросе?
4 Объясните значение параметров параллельного порта: 20мА, 100мА, 200мА
5 порты микроконтроллера в соответствие с данным рисунком |
Рекомендуемая литература:
Урок №23
Тема 2.8 Команды обращения к параллельным портам микроконтроллеров семейства avr
Вопросы темы:
2.8.1 Типичные действия МК по управлению простейшими устройствами, подключенными к параллельным портам.
2.8.2 Номера и имена портов
2.8.3 Общие правила записи команд на языке Ассемблера
2.8.4 Основные команды обращения к портам
2.8.5 Описание команд обращения к портам
2.8.6 Пример программы «copy»
2.8.7 Пример программы «opros»
2.8.1 Типичные действия МК по управлению простейшими устройствами, подключенными к параллельным портам
Типичные действия по управлению устройствами, подключенными к МК, сводятся к тому, чтобы во время сформировать на выходе лог.0 или лог.1 или определить уровень сигнала (лог.0 или лог.1) на входе.
На рисунке 1 изображена схема подключения к портам МК простейших устройств: к 4-му разряду порта D подключено устройство вывода - светодиод VD1, к 1-му разряду порта А подключено устройство ввода - замыкающий контакт SB1. Какие задачи по управлению этими устройствами можно поставить перед МК? Светодиод можно включить или выключить. Контакт замыкается или размыкается под действием внешней силы, а МК может определить состояние контакта.
Рисунок 1 – Схема подключения простейших устройств
Чтобы включить или выключить светодиод необходимо:
настроить на вывод линию PD.4 или весь порт D (если никакие другие разряды порта не используются для ввода или вывода данных). Для настройки направления используется регистр «ddrd»порта;
сформировать на выходе порта PD.4 лог.1, чтобы включить VD1 или лог.0, чтобы выключить VD1 или сформировать лог.1 на всех выходах порта (если никакие другие разряды порта не используются). Для формирования данных используется регистр «portd» порта.
Чтобы определить состояние контакта SB1 необходимо:
настроить на ввод линию PА.1 или весь порт A (если никакие другие разряды порта не используются). Для настройки направления используется регистр «ddrа»порта;
определить уровень сигнала на входе PА.1, например, скопировать сигнал со входа PА.1 во внутренний регистр МК
Эти простейшие действия лежат в основе всех программ управления простейшими устройствами, например, устройствами индикации, реле, кнопками, датчиками. Чтобы составить программы управления портами необходимо знать: логику работы порта, имена регистров и состав команд обращения к портам.
2.8.2 Номера и имена портов
Каждый порт содержит три регистра: регистр вывода, регистр направления и регистр ввода. Исходным адресом порта является его номер. В программах, написанных на Ассемблере, каждому порту присваивается имя. Имен упрощают запись команд обращения к портам. В таблице 1 приведены имена и номера регистров портов МК ATmega8535.
Таблица 1 – Номера регистров параллельных портов МК ATmega8535
Порт |
Регистр |
Номер, h |
Назначение |
a |
port |
1b |
вывод данных из МК |
ddr |
1a |
конфигурирование порта |
|
pin |
19 |
ввод данных в МК |
|
b |
port |
18 |
вывод данных из МК |
ddr |
17 |
конфигурирование порта |
|
pin |
16 |
ввод данных в МК |
|
c |
port |
15 |
вывод данных из МК |
ddr |
14 |
конфигурирование порта |
|
pin |
13 |
ввод данных в МК |
|
d |
port |
12 |
вывод данных из МК |
ddr |
11 |
конфигурирование порта |
|
pin |
10 |
ввод данных в МК |
2.8.3 Общие правила записи команд на языке Ассемблера
При записи команд на языке Ассемблера следует выполнять некоторые общие правила:
числа записываются в двоичном, шестнадцатеричном или десятичном коде. Используются следующие формы записи чисел:
двоичных – 0b00001111;
шестнадцатеричных - 0x9f; или $9f;
десятичных – 255, 174 и т.п.
между командой и операндами ставится хотя бы один пробел;
операнды, если их два, отделяются один от другого запятой;
номер бита отделяется от имени регистра, ячейки или порта запятой: pind,1; ddrc,0 и т.п;
если в команде два операнда, первый операнд является приемником результата
2.8.4 Основные команды обращения к портам
Таблица 1- Команды, применяемые для обращения к регистрам портов микроконтроллеров AVR
№ |
Мнемо- ническая запись команды |
Действие |
Описание |
Примеры |
1 |
out ddrx, rn n=0-31 x=a, b, c, d |
ddrx← rn |
Загрузить данные из регистра общего назначения в регистр направления порта. Используется для конфигурирования порта |
ldi r16,$ff out ddrc,r16 ;настроить порт С на вывод |
2 |
out portx, rn n=0-31 x=a, b, c, d |
portx← rn |
Загрузить данные из регистра общего назначения в регистр вывода порта. Используется для вывода данных через выходы порта |
сlr r4 out portb,r4 ;очистить выходы порта B |
3 |
in rn,pinx n=0-31 x=a, b, c, d |
rn←pinx
|
Загрузить данные из регистра ввода порта в регистр общего назначения. Используется для чтения данных со входов порта |
in r6,pina ;скопировать данные со входов порта А в регистр |
4 |
sbi ddrx,b x=a, b, c, d b=0-7 |
|
Установить бит в регистре направления порта. Используется для конфигурирования отдельного бита порта на вывод |
sbi ddrd,0
;настроить нулевой разряд порта D на ввод
|
5 |
sbi portx,b x=a, b, c, d b=0-7 |
|
Установить бит в регистре вывода порта. Используется для формирования «1» на отдельной линии порта |
sbi porta,3
|
6 |
cbi ddrx,b x=a, b, c, d b=0-7 |
|
Очистить бит в регистре направления порта. Используется для конфигурирования отдельного бита порта на ввод |
сbi ddrd,0
;настроить нулевой разряд порта D на ввод
|
7 |
cbi portx,b x=a, b, c, d b=0-7 |
|
Очистить бит в регистре вывода порта. Используется для формирования «0» на отдельной линии порта |
сbi porta,3
|
8 |
sbis pinx,b x=a, b, c, d b=0-7
|
|
Пропустить следующую команду, если бит регистра ввода порта установлен. Используется для определения состояния отдельных входов порта |
again: sbis pinb,0 jmp again sbi porta,3 ;если нулевой бит порта В установлен установить «1» в 3-м разряде порта В, в противном случае повторять опрос линии pinb,0 |
11 |
sbic pinx,b x=a, b, c, d b=0-7
|
|
Пропустить следующую команду, если бит регистра ввода порта сброшен. Используется для определения состояния отдельных входов порта |
again: sbiс pinb,0 jmp again sbi porta,3 ;если нулевой бит порта В сброшен установить «1» в 3-м разряде порта В, в противном случае повторять опрос линии pinb,0 |
2.8.5 Описание команд обращения к портам
2.8.5.1 Команда «out» записи данных в порт
Мнемоническое обозначение команды:
out P,Rn,
где Р=0-63 –номер порта, n=0-31- номер РОН.
Действие команды: передать (скопировать) данные из РОН в порт:
P ← Rn
В команде может быть указан номер порта (0-63) или его имя. Как правило, указывается имя порта. Номера портов приведены в таблице 1
Пример 1. Записать команды, выполняющие следующие действия:
а) переписать данные из регистра r16 в регистр porta: out porta,r16;
б) переписать данные из регистра r16 в регистр ddra: out ddra,r16;
В микроконтроллерах AVR отсутствует команда непосредственной записи данных в регистр порта. Запись данных в регистры порта выполняется в два этапа:
данные загружаются в один из регистров общего назначения r16-r31 при помощи команды ldi rn,k, где n=16-31- номер регистра, k=0x00-0xff - код данных;
данные переписываются в регистр порта при помощи команды
out Р, rn, где n= 0-31, Р=0-63
Пример 2. Записать число 9f h в порт вывода данных portb: portb←$9f
ldi r16,$9f ;запишем число 9f и регистр r16
out portb,r16 ;перепишем число 9f из регистр r16 в portb
Пример 3. Настроить порт В на вывод данных.
Чтобы настроить порт на вывод, в его регистр направления необходимо записать все единицы, т. е число $ff. Сделать это можно в два этапа:
ldi r16,$ff
out ddrb,r16
Пример 4. Настроить разряды 0-3 порта В на вывод, а разряды 4-7 на ввод
ldi r16,$0f
out ddrb,r16
Пример 5. Определить конфигурацию портов A, B, C, D.
ldi r16,$ff
out ddra,r16
out ddrb,r16
ldi r16,0
out ddrc,r16
ldi r16,0b01111110
out ddrd,r16
2.8.5.2 Команда «in»чтения данных со входов порта
Мнемоническое обозначение команды: in Rn,P, где Р=0-63, n=0-31.
Действие команды: записать данные из регистра порта в РОН:
Rn ← P
Пример 6. Записать команды, выполняющие следующие действия:
а) переписать данные из регистра pinc в регистр r16: in r16,pinc;
б) переписать данные из регистра pind в регистр r0: in r0,pind
Пример 7. Скопировать данные со входов порта В на выходы порта А
ldi r16,$0 ;настроим порт В на ввод
out ddrb,r16
ldi r16,$ff ;настроим порт А на вывод
out ddra,r16
in pinb,r16 ;скопировать данные со входов порта В в РОН r16
out porta,r16 ;скопировать данные из РОН r16 в регистр данных порта A
Контрольные вопросы:
Назовите типичные действия МК по управлению устройствами, подключенными к параллельным портам МК
Как настроить порт на ввод?
Как настроить порт на ввод?
Назовите регистра порта. Приведите их имена и адреса.
Какой регистр порта подключен к выходам порта?
Какой регистр порта подключен ко входам порта?
Перечислите основные команды обращения к портам
В чем основное отличие друг от друга команд вывода out, sbi, cbi?
Как действует команда in?
Как действует команда sbis?
Как действует команда sbic?
Составьте по одному примеру на каждую команду обращения к портам
В каком формате записаны числа: $05, 0x05, 05, 0b00110011
2 Какой регистр является приемником данных в командах:
out ddra,r0; in r0,pind
Урок №24
Тема урока: продолжение темы 2.8
2.8.5.3 Команды битовых операций с регистрами портов sbi, cdi, sbis, sbic
Мнемоническое обозначение команды:
sbi P,b,
где Р=0-63 –номер порта, b=0-7- номер разряда порта
Действие команды: установить бит в регистре порта P,b ← 1
Пример: sbi ddrd,3 – установить 3-ий бит регистра ddrd
Эта команда позволяет выполнить установку отдельного бита порта, не влияя на состояние остальных битов.
Мнемоническое обозначение команды:
сbi P,b,
где Р=0-63 –номер порта, b=0-7- номер разряда порта
Действие команды: очистить бит в регистре порта P,b ← 1
Пример: сbi ddrd,3 – очистить 3-ий бит регистра ddrd
Эта команда позволяет очистить отдельный бит порта, не влияя на состояние остальных битов.
Мнемоническое обозначение команды:
sbis P,b,
где Р=0-63 –номер порта, b=0-7- номер разряда порта
Действие команды: пропустить, если бит в регистре порта установлен
Пример: sbis pinb,3 – если 3-ий бит регистра pinb установлен, пропустить (перепрыгнуть) следующую команду и выполнить команду, которая записана за ней.
Мнемоническое обозначение команды:
sbiс P,b,
где Р=0-63 –номер порта, b=0-7- номер разряда порта
Действие команды: пропустить, если бит в регистре порта очищен
Пример: sbiс pinb,3 – если 3-ий бит регистра pinb очищен, пропустить (перепрыгнуть) следующую команду и выполнить команду, которая записана за ней.
Урок №25 Упражнения
Упражнение 1
Выполните анализ фрагмента программы и укажите стрелочками направление работы портов:
ldi r16,$ff
out
ddra,r16
out ddrc,r16
ldi r16,0
out ddrb,r16
ldi r16,$f0
out ddrc,r16
Упражнение 2
Запишите фрагменты программ, выполняющие действия:
а) настроить порт В на вывод;
б) настроить порт С на ввод;
в) настроить порт А на ввод и подключить ко всем входам подтягивающие резисторы
г) скопировать данные из порта А в порты В и С;
д)
скопировать данные со входов порта С в
регистр r0
Упражнение 3
Напишите фрагмент программы, который
настроит порты микроконтроллера так,
как указано на рисунке
Упражнение 4
Составьте комментарии к фрагментам программ:
-
а) ldi r16,$ff
out ddrb,r16
б) ldi r16,$f0
out ddrc,r16
в) ldi r16,$ff
out ddrb,r16
cbi portb,7
г) m: sbis pinb,0
rjmp m
sbi porta,3
д) sbi ddrc,0
cbi ddrc,1
sbi portc,1
У
пражнение
5
Выполните конфигурирование
линий портов
Урок №26 Подготовка к лабораторным работам №5,6
Задание 1
Разработайте программу “svetodiod.asm”
Постановка задачи: к выходам порта С подключены светодиоды, которые загораются при подаче на них лог.1. Требуется включить светодиоды в комбинации, заданной в таблице 1
Вариант |
Комбинация, hex |
Вариант |
Комбинация, hex |
1 |
25 |
9 |
aa |
2 |
78 |
10 |
cc |
3 |
67 |
11 |
9d |
4 |
d4 |
12 |
17 |
5 |
f0 |
13 |
3e |
6 |
0f |
14 |
44 |
7 |
66 |
15 |
2f |
8 |
38 |
16 |
b7 |
Задание 2
Разработайте программу “copy.asm”.
Постановка задачи: Постановка задачи: Cкопировать данные со входов порта A микроконтроллера ATmeg8535 на выходы порта С.
Рисунок 1 – Алгоритм программы “copy”
;*************************************************************
; ** Текст программы **
;*************************************************************
;Автор Воробьева Н.Г.
;дата 5.02.2010
;Имя файла "copy"
;для AVR ATmega 8535
;Выполняемые функции: копирует данные со входов порта А на ;выходы порта С
;==============================
.include "m8535def.inc" ;присоединение файла описания
; имен микроконтроллера
;=============================
;конфигурирование порта A на ввод
ldi r16,0
out ddra,r16
; конфигурирование порта С на вывод
ldi r16,$ff
out ddrс,r16
;==============================
again:
in r0,pina ;скопировать данные со входов порта А в ре ;гистр
out portc,r0 ;передать данные в порт С
rjmp again ;вернуться в начало программы
Задание 3
Разработайте программу “opros.asm”.
Постановка задачи: требуется опросить нормально открытый контакт, подключенный к 1-му разряду порта В и выполнить следующее действие: установить PD.0=1, если контакт замкнут или ждать, пока контакт замкнется.
Рисунок 2 – Контакт подключен ко входу порта В
Рисунок 3 – Алгоритм фрагмента программы
Чтобы определить состояние контакта: замкнут или разомкнут, необходимо опросить первый разряд регистра ввода данных порта В: pinb,1. По реакции программы определяется состояние контакта. Ниже приведен фрагмент программы.
opros:
sbic pinb,1 ;пропустить следующую команду, ;если контакт замкнут
rjmp opros ;прыжок на метку opros, если кон- ;такт разомкнут
sbi portd,0 ;установить лог.1 на выходе PD.0
Задание 4
Составьте фрагменты программ, выполняющие следующие действия:
а) опросите вход РА.0, если на нем присутствует 1, установите 1 на РС.0, в противном случае установите 1 на РВ.0
б) опросите вход РА.2, если на нем присутствует 0, установите 1 на РС.0, в противном случае повторите опрос входа РА.2
в) ) опросите вход РВ.0: если на нем присутствует 1, выполните копирование данных со входов порта А на выходы порта С, в противном случае, ждите.
Задание 5
Найдите логические ошибки в следующих фрагментах:
а)постановка задачи: включить светодиоды, подключенные к порту С, в комбинации 11110000
Фрагмент1 ldi r16,$ f0 out ddrc,r16
|
Фрагмент 2 ldi r16,$ ff out ddrc,r16 ldi r16,$f0 out ddra,r16 |
Фрагмент 3 ldi r16,$ ff out ddrc,r16 ldi r16,$f0 out pinc,r16
|
Фрагмент 4 ldi r16,$ f0 out ddrc,r16 ldi r16,$f0 out portc,r16
|
Задание 6
Найдите синтаксические ошибки в следующих фрагментах:
а)постановка задачи: включить светодиоды, подключенные к порту С, в комбинации 11110000
Фрагмент1 ldi r1, ff out ddrc,r16 ldi r16,$f0 out portc,r16
|
Фрагмент 2 ldi r16, $ff out ddrc ldi r16,$f0 out portc
|
Задание 7
Найдите синтаксические ошибки в следующем фрагменте:
opros
sbic pinb.1 ;пропустить следующую команду, ;если контакт замкнут
rjmp opros ;прыжок на метку opros, если кон- ;такт разомкнут
sbi portd.0 ;установить лог.1 на выходе PD.0
Контрольные вопросы и задания
В чем суть копирования данных?
Как скопировать данные со входов одного порта на выходы другого?
Как определить состояние контакта, подключенного ко входу МК?
Составьте алгоритмы программ для задания 4