- •Конспект лекций по дисциплине Микропроцессоры и микропроцессорные системы управления
- •Раздел 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 Система прерываний
Тема 2.13 Примеры программ ввода-вывода
Программа статической индикации
Программа динамической индикации
Программа с опросом кнопки
Программа «Переключающийся светодиод»
Программа «Борьба с дребезгом»
2.13.1 Программа статической индикации
Постановка задачи. В схеме лабораторного комплекса «Микроконтроллеры и автоматизации» два семисегментных индикатора подключены сегментами к порту С. Индикатор HG1 включается сигналом PB.2=1, HG2 - сигналом PB.3=1. Требуется:
высветить на индикаторе HG2 цифру 0;
высветить на индикаторе HG1 цифру 5;
высветить на индикаторах число 77
Рисунок 1 – Схема подключения индикаторов
Составим алгоритм и текст программы для первого задания
Рисунок 2 – Алгоритм программы статической индикации
;Автор Воробьева Н.Г.
;дата 5.02.2010
;Имя файла "stat"
;для AVR ATtiny2313
;тактовая частота: по умолчанию
;Выполняемые функции: высветить символ «0» на индикаторе HG2 c ОА,
;==============================
.include "m8535def.inc" ;присоединение файла описания
; имен микроконтроллера ATmega8535
;=============================
;конфигурация портов В и С на вывод
ldi r16,$ff
out ddrb,r16
out ddrс,r16
;==============================
cbi portb,2 ;выключить HG1
sbi portb,3 ;включить HG2
ldi r16,$3f ;код символа «0»
out portc,r16 ;вывести код символа «0»
2.13.2 Программа динамической индикации
Постановка задачи: высветить на семисегментных индикаторах (рисунок 1) число 10.
Рисунок 3 – Алгоритм программы динамической индикации
;Автор Воробьева Н.Г.
;дата 5.02.2010
;Имя файла "dinam"
;для AVR ATtiny2313
;тактовая частота по умолчанию
;Выполняемые функции: высветить число «10» на индикаторах HG1,HG2
;==============================
.include "m8535def.inc" ;присоединение файла описания
; имен микроконтроллера
;=============================
;конфигурация портов В и С на вывод
ldi r16,$ff
out ddrb,r16
out ddrс,r16
;===========================
;установка начального адреса стека
ldi r16,$ff ;адрес вершины стека
out spl,r16
;================================
;основной цикл
loop:
sbi portb,2 ;включить HG1
cbi portb,3 ;выключить HG2
ldi r16,$06 ;код символа «1»
out portc,r16 ;вывести код символа «1»
rcall delay ;вызов подпрограммы задержки
cbi portb,2 ;выключить HG1
sbi portb,3 ;включить HG2
ldi r16,$3f ;код символа «0»
out portc,r16 ;вывести код символа «0»
rcall delay ;вызов подпрограммы задержки
rjmp loop
;================================
;подпрограмма задержки
;при рабочей частоте 8 МГц время паузы примерно 40мс
delay:
ldi r27,$ff ;запись второй уставки времени
run1:
ldi r28,$ff ; запись первой уставки времени
run:
dec r28 ;r28-1
brne run ;прыжок, если результат не равен 0
dec r27 ;r27-1
brne run1 ;прыжок, если результат не равен 0
ret ;возврат из подпрограммы
2.13.3 Программа с опросом кнопки
Постановка задачи. Кнопка SB1 подключена к PA.1 (=1 при включении). В исходном состоянии кнопка не нажата и на индикаторе HG2 высвечивается цифра 0, при нажатии кнопки на индикаторе HG2 высвечивается цифра 8.
Рисунок 4 – Алгоритм программы
;Автор Воробьева Н.Г.
;дата 5.02.2010
;Имя файла "opros"
;для AVR ATmega8535
;тактовая частота: по умолчанию
;Выполняемые функции: если кнопка SB1 (PA.1)не нажата высветить цифру «0» на индикаторе HG2, при нажатии кнопки высветить цифру «8»
;==============================
.include "m8535def.inc" ;присоединение файла описания
; имен микроконтроллера ATmega8535
;=============================
;конфигурация портов В и С на вывод, линии PA.1на ввод с подтягивающим резистором
ldi r16,$ff
out ddrb,r16
out ddrс,r16
out porta,r16
cbi ddra,1
;==============================
sbi portb,3 ;включить HG2
ldi r16,$3f ;код символа «0»
out portc,r16 ;вывести код символа «0»
opros:
sbis pina,1 ;пропустить след. команду, если
;кнопка нажата
rjmp opros
ldi r16,$7f ;код символа «8»
out portc,r16 ;вывести код символа «8»
Урок 30 Продолжение темы 2.13
2.13.4 Программа «Переключающийся светодиод»
Постановка задачи: при каждом нажатии кнопки SB1 (PA.1) светодиод VD4 поочередно включается и выключается.
Рисунок 5 – Алгоритм программы с переключающимся светодиодом
;Автор Воробьева Н.Г.
;дата 5.02.2010
;Имя файла "on_off"
;для AVR ATmega8535
;тактовая частота: по умолчанию
;Выполняемые функции: с каждым нажатием кнопки SB1 (PA.1)светодиод VD4 (PD.4) поочередно включается и выключается
;==============================
.include "m8535def.inc" ;присоединение файла описания
; имен микроконтроллера ATmega8535
;=============================
;конфигурация порта D на вывод, линии PA.1на ввод с подтягивающим резистором
ldi r16,$ff
out ddrb,r16
out porta,r16
cbi ddra,1
;-------------основная программа--------------------
loop:
sbis pina,1 ;пропустить следующую команду, если ;кнопка нажата
rjmp loop
sbis pind,4 ;пропустить следующую команду, если VD4
;зажжен
rjmp on ;прыжок, чтобы зажечь светодиод
сbi portd,4 ;выключить VD4
rjmp loop ;прыжок на начало основной программы
on:
sbi portd,4 ;включить VD4
rjmp loop ;прыжок на начало основной программы
В данной программе не учтены две особенности, связанные с опросом клавиши: дребезг контактов клавиши и несогласованность по быстродействию программы и кнопки.
После того как клавиша нажата, начинается дребезг – быстрое, кратковременное замыкание – размыкание контакта кнопки. Время дребезга 20-100 мс. При рабочей частоте 4-16МГц программа успеет отреагировать на нажатие кнопки (первое замыкание контакта) и вернуться в начало за несколько микросекунд. Продолжающийся дребезг будет принят за нажатие кнопки и программы вновь переключит светодиод.
Рисунок 6 – Несогласование опроса клавиши и времени ее нажатия
В результате, функционирование программы будет выглядеть следующим образом: как только кнопка будет нажата, светодиод начнет переключаться так быстро, что его мерцание не будет заметно, и будет казаться, что он светится вполнакала. При отпускании кнопки светодиод может оказаться включен или выключен, то есть его состояние не определено.
Чтобы решить проблемы дребезга и несогласования по быстродействию следует усовершенствовать алгоритм программы.
2.13.5 Программа «Борьба с дребезгом»
Постановка задачи: при каждом нажатии кнопки SB1 (PA.0) светодиод VD4 поочередно включается и выключается. В программе предусмотрена борьба с дребезгом контактов и согласование микроконтроллера и кнопки по быстродействию.
Для подавления дребезга использована пауза примерно 20 мс. Для надежности опрос кнопки после паузы повторяется. Для согласования по быстродействию в программу введено ожидание отпускания кнопки (рисунок 7).
Рисунок 7
Рисунок 8 – Алгоритм программы борьбы с дребезгом
;---------------------------------------------------------- ;Программа переключения светодиода VD4 от кнопки SB1
; при нажатии кнопки, светодиод переключается
;в программе предусмотрено подавление дребезга и согласова- ;ние по быстродействию
;---------------------------------------------------------- .include”m8535def.inc” ;включить файл описания ATmega8535
;--------инициализация стека
ldi r16,$ff ;адрес вершины стека
out spl,r16
;---конфигурация порта D на вывод, линии PA.1на ввод с
;подтягивающим резистором
ldi r16,$ff
out ddrb,r16
out porta,r16
cbi ddra,1
loop:
sbis pina,1 ;пропустить следующую команду, если ;кнопка SB1 нажата
rjmp loop
again:
rcall delay ;вызов подпрограммы задержки
sbis pina,1 ;пропустить следующую команду, если ;кнопка SB1нажата
rjmp again
sbis pind,4 ;пропустить следующую команду, если ;светодиод VD4 зажжен
rjmp on ;прыжок, чтобы зажечь светодиод
сbi portd,4 ;выключить VD4
rjmp finish ;прыжок
on:
sbi portd,4 ;включить VD4
finish:
sbic pina,1 ;пропустиь след. команду, если кнопка ;отпущена
rjmp finish ;прыжок
else:
rcall delay ;вызов подпрограммы задержки
sbic pina,1 ;пропустить следующую команду, если ;кнопка отпущена
rjmp else
rjmp loop ;зацикливание
;---------Подпрограмма задержки-----------------------------
;при рабочей частоте 16МГц время паузы примерно 20мс
delay:
ldi r27,$ff ;запись уставки времени УВ2
run1:
ldi r28,$ff ;запись уставки времени УВ1
run:
dec r28 ;декркемент УВ1
brne run ;прыжок, если не равно 0
dec r27 ; декркемент УВ2
brne run1 ;прыжок, если не равно 0
ret ;возврат из подпрограммы
Самостоятельные задания:
Высветить на семисегментном индикаторе HG2 символ «5». Индикатор HG1 погашен.
Высветить на семисегментном индикаторе HG1 символ «7». Индикатор HG1 погашен.
Высветить на семисегментных индикаторах HG1, HG2 символы «- -».
Высветить на семисегментных индикаторах надпись «AP». Использовать динамическую индикацию, с использованием двойнго зацикливания.
Организовать «Бегущий огонь» по сегментам индикатора HG1. Чередование сегментов по часовой стрелке.
Организовать «Бегущий огонь» по сегментам индикатора HG2. Чередование сегментов против часовой стрелки.
Организовать «Бегущий огонь» по сегментам индикаторов HG1, HG2. Чередование сегментов по часовой стрелке.
Разработать программу управления светодиодами VD4 (PD.4) и VD6 (PD.6) от тумблера SA1 (PA.3): если тумблер включен, зажигается светодиод VD4, VD6 гаснет, если тумблер выключен, VD4 гаснет, зажигается светодиод VD6.
Разработать программу управления светодиодами VD4 - VD6 от тумблера SA5 (PA.3): если тумблер включен, зажигаются светодиоды VD4-VD6, если тумблер выключен светодиоды гаснут.
Урок 31
Лабораторная работа №5 Ввод, компиляция, запись, отладка программ на лабораторном комплексе «Микроконтроллеры и автоматизация» - 4час
Лабораторная работа №6 Исследование и отладка программы «Статическая индикация»
Лабораторная работа №7 Исследование и отладка программы «Динамическая индикация»
Лабораторная работа №8 Исследование и отладка программы «Переключающийся светодиод»