
- •Раздел 1. Микропроцессорные системы управления.
- •Раздел 2. Микроконтроллерные системы управления.
- •Раздел 3. Вопросы эксплуатации микропроцессорных устройств.
- •1. Микропроцессорные системы управления
- •1.1. Принципы построения и основы работы
- •Вопросы и задания
- •1.2. Элементная база мпсу
- •Вопросы и задания
- •1.3. Оперативные запоминающие устройства.
- •Вопросы и задания
- •1.4. Постоянные запоминающие устройства.
- •Вопросы и задания
- •1.5. Архитектура микропроцессора типа кр580вм80
- •Вопросы и задания
- •1.6. Типы машинных циклов и слово состояния
- •Вопросы и задания
- •1.7. Командные циклы чтения/записи
- •Вопросы и задания
- •1.8. Командный цикл подтверждения прерывания.
- •1.9. Принципиальные электрические схемы
- •Вопросы и задания
- •1.10. Интерфейс мпсу с изолированной системой шин
- •Вопросы и задания
- •1.11. Интерфейс мпсу с общей системой шин
- •1.12. Организация обслуживания запросов прерывания
- •Вопросы и задания
- •1.13. Программируемый контроллер
- •Вопросы и задания
- •1.14. Программируемый контроллер прерываний
- •Вопросы и задания
- •1.15. Программируемый интервальный таймер
- •Вопросы и задания
- •1.16. Мпсу с вводом-выводом аналоговой информации
- •Вопросы и задания
- •1.17. Выходные каскады мпсу
- •Вопросы и задания
- •2. Микроконтроллерные системы управления
- •2.1. Архитектура микроконтроллера к1816ве51
- •Вопросы и задания
- •2.2. Принципиальная электрическая схема порта
- •2.3. Схемы подключения внешней памяти к мк51
- •Вопросы и задания
- •2.4. Интерфейс мк51 с большим числом
- •Вопросы и задания
- •2.5. Таймер/счетчики мк51.
- •Вопросы и задания
- •2.6. Система прерываний мк51. Использование прерываний в программах
- •Вопросы и задания
- •2.7. Основы организации
- •Допустимые различия скорости приемо-передачи
- •2.8. Организация мультиконтроллерных систем
- •Программы инициализации станции и абонентов
- •Программы станции и абонента в сеансе "станция→абонент"
- •2.9. Микроконтроллерная система управления
- •3. Вопросы эксплуатации микропроцессорных устройств
- •3.1. Отладка аппаратных средств мпсу
- •Вопросы и задания
- •3.2. Отладка программного обеспечения мпсу
- •Вопросы и задания
- •3.3. Методы обеспечения помехоустойчивости мпсу
- •Вопросы и задания
- •1. Группа команд пересылок
- •2. Группа команд инкремента-декремента
- •3. Группа арифметических команд
- •4. Группа логических команд
- •5. Группа команд сдвига
- •6. Группа команд передачи управления
- •7. Группа команд работы со стеком
- •8. Группа команд ввода-вывода и управления микропроцессором
- •1. Группа команд пересылок
- •2. Группа команд арифметических операций
- •3. Группа команд логических операций
- •4. Группа команд операций с битами
- •5. Группа команд передачи управления
- •Дворак Николай Маркович микропроцессорные устройства
- •В высших учебных заведениях 3-4 уровней
- •98309, Г. Керчь, ул. Орджоникидзе, 82
- •98309, Г. Керчь, ул. Орджоникидзе, 82
Вопросы и задания
1. Как решается задача подключения к микроконтроллеру внешних устройств, количество которых превышает емкость встроенных портов ввода-вывода?
2. Поясните работу схемы подключения внешних устройств ввода информации.
3. Поясните работу схемы подключения внешних устройств вывода информации.
4. Составьте программу чтения ВУ, подключенного через регистр-расширитель.
5. Составьте программу записи в ВУ, подключенного через регистр-расширитель.
6. Составьте программу чтения ВУ, подключенного через ППИ.
7. Составьте программу записи в ВУ, подключенного через ППИ.
2.5. Таймер/счетчики мк51.
Реализация выдержек времени
М
К51
содержит два программируемых 16-разрядных
таймер/счетчика Т/С0 и Т/С1, структурная
схема одного из них приведена на рис.2.21.
В режиме таймера подсчитываются импульсы
машинных циклов микроконтроллера, а в
режиме счетчика подсчитываются внешние
импульсы, поступающие через входы Т0 и
Т1 порта Р3 (рис.2.19). Оба счетчика работают
только на сложение. Состояние счетчика
изменяется по срезу входного сигнала.
Каждый 16-разрядный полный счетчик
состоит из двух 8-разрядных счетчиков,
обозначаемых как старший ТН и младший
TL байты счетчика.
Для программирования (инициализации) режима работы Т/С и оперативного управления ими служат 3 регистра специальных функций – TMOD (рис.2.22), TCON (рис.2.23) и IE (рис.2.24).
Бит |
Обозначение |
Назначение |
||||
7 |
GATE1 |
1/0
– управление Т/С1 от входа
|
||||
6 |
С/Т1 |
1/0 – Т/С1 работает как счетчик / как таймер |
||||
5 |
M11 |
0 |
0 |
1 |
1 |
Выбор режима работы Т/С1 |
4 |
M10 |
0 |
1 |
0 |
1 |
|
Режим №: |
0 |
1 |
2 |
3 |
||
3 |
GATE0 |
1/0
- управление Т/С0 от входа
|
||||
2 |
С/Т0 |
1/0 – Т/С0 работает как счетчик / как таймер |
||||
1 |
M01 |
0 |
0 |
1 |
1 |
Выбор режима работы Т/С0 |
0 |
M00 |
0 |
1 |
0 |
1 |
|
Режим №: |
0 |
1 |
2 |
3 |
||
Рис.2.22. TMOD – регистр режимов таймер/счетчиков Т/С0 и Т/С1 |
Каждый счетчик может быть запрограммирован на 4 режима. В трех режимах (0, 1 и 2) счетчики работают независимо друг от друга с одинаковыми функциями в одноименных режимах, а в режиме 3 счетчики выполняют разные функции. Программирование заключается в соответствующей установке бит TMOD.5 и TMOD.4 для Т/С1 и TMOD.1 и TMOD.0 для Т/С0.
Бит |
Обозначение |
Назначение |
7 |
TF1 |
1 - флаг переполнения Т/С1; сброс в 0 в начале обслуживания прерывания от Т/С1 |
6 |
TR1 |
1/0 - старт/стоп T/C1 |
5 |
TF0 |
1 - флаг переполнения Т/С0; сброс в 0 в начале обслуживания прерывания от Т/С0 |
4 |
TR0 |
1/0 - старт/стоп T/C0 |
3 |
IE1 |
1
- флаг запроса
|
2 |
IT1 |
1/0
– прерывания
|
1 |
IE0 |
1
- флаг запроса
|
0 |
IT0 |
1/0
– прерывания
|
Рис.2.23. TCON – регистр статуса Т/С, типов прерываний и их флагов |
Режим 0. Т/С работает как 13-разрядный счетчик с последовательно включенными 5-разрядным младшим счетчиком TL (предварительным делителем, в котором используются только пять младших бит с 0-го по 4-й) и 8-разрядным старшим счетчиком ТН. Емкость счетчика равна 213=8192. Вид счетных импульсов на входе и, соответственно, режим таймера или счетчика внешних импульсов задается битом TMOD.6 (мнемоническое обозначение С/Т1) для Т/С1 и TMOD.2 (С/Т0) для Т/С0. При тактовой частоте 12 МГц, частота выполнения машинных циклов составляет 1/12 от тактовой частоты или 1 МГц, а период счетных импульсов в режиме таймера равен 1 мкс. Период счетных внешних импульсов не должен быть меньше 2 мкс, а сверху период не ограничен.
Старт/стоп
счета осуществляется программно путем
соответствующей установки бита TCON.6
(мнемоническое обозначение TR1) для Т/С1
и бита TCON.4 (TR0) для Т/С0. Возможен также
аппаратный старт/стоп счетчиков с
использованием сигналов
для Т/С1 и
для Т/С0, поступающих через выводы порта
Р3 (рис.2.19). Разрешение аппаратного
управления таймер/счетчиками производится
установкой в 1 бита TMOD.7 (мнемоническое
обозначение GATE1) для Т/С1 и бита TMOD.3
(GATE0) для Т/С0. В целом, счетные импульсы
достигают счетчика, если при заблокированном
сигналом GATE=0 аппаратном управлении
счет программно разрешен сигналом TR=1,
либо при сигналах GATE=1 и TR=1 имеется сигнал
внешнего разрешения счета. При GATE=1 и
счетчик остановлен независимо от
состояния сигнала TR.
Перед стартом счетчика в старший ТН и младший TL байты счетчика по их адресам (рис.2.4) загружаются числа начального содержимого. При переполнении счетчика, когда из счетчика ТН возникает бит переноса, а содержимое всего счетчика (ТН+TL) становится нулевым, устанавливается в 1 флаг переполнения TCON.7 (мнемоническое обозначение TF1) для Т/С1 или бита TCON.5 (TF0) для Т/С0. От момента старта счетчика до момента установки флага отсчитывается от 1 до 8096 импульсов в зависимости от предварительной загрузки счетчика.
Флаг TF может проверяться программно, но установка флага может вызвать прерывание по переполнению счетчика. Для программного сброса флага нужно выполнить команду записи нуля в бит TF. Для установки прерывания нужно записать 1 в биты IE.7 (мнемоническое обозначение ЕА) разрешения всех прерываний и, например, в IE.3 (ЕТ1) разрешения прерываний от Т/С1 (рис.2.24). С момента установки флага TF вызывается подпрограмма обработки прерывания, а после старта этой подпрограммы флаг автоматически сбрасывается в 0 (рис.2.23).
Бит |
Обозначение |
Назначение |
7 |
EA |
1/0 – разрешение / запрет всех прерываний |
6,5 |
|
Не используются |
4 |
ES |
1/0 – прерывания от последовательного порта разрешены / запрещены |
3 |
ЕТ1 |
1/0 – прерывания от Т/С1 разрешены / запрещены |
2 |
ЕХ1 |
1/0
– прерывания от
|
1 |
ЕТ0 |
1/0 – прерывания от Т/С0 разрешены / запрещены |
0 |
ЕХ0 |
1/0
– прерывания от
|
Рис.2.24. IE – регистр масок прерываний |
Для настройки счетчика на выдержку, чтобы от его старта до переполнения (код числа в момент переполнения имеет значение #10.0000.0000.0000B = #2000H = #(1FFF+1)Н ) счетчик отсчитал NT импульсов, в счетчик нужно предварительно загрузить число (формула 16-ричная)
NСЧ = 1FFF+1–NT = 1FFF–(NT-1) (2.3)
Пример 1. Реализовать на базе Т/С1 выдержку времени 5 мс с запретом аппаратного управления таймер/счетчиком и разрешением прерываний.
Для создания такой выдержки времени можно использовать режим 0 таймера. При периоде 1 мкс счетных импульсов необходимая выдержка в импульсах составит
В счетчик нужно предварительно загрузить 13-разрядное число
Так как в TL1 значащими являются только 5 младших бит (с 0-го по 4-й), то в коде NСЧ в биты с 5-го по 7-й можно записать все, что угодно, например, 3 нуля:
NСЧ = 0110.0011.0001.1000В = 6318Н
Значит в ТН1 нужно загрузить код 63Н, а в TL1 – код 18Н.
Программа приведена на рис.2.25.
Код |
Мнемокод |
Комментарии |
75 89 00 |
MOV TMOD, #00 |
#00H= #0000.0000B – установка режима по рис.2.22 |
75 8D 63 |
MOV TH1, #63 |
Предварительная загрузка Т/С1 |
75 8B 18 |
MOV TL1, #18 |
|
D2 AB |
SETB EТ1 |
Разрешение прерывания от Т/С1 (рис.2.24) |
D2 AF |
SETB EА |
Разрешение всех прерываний |
D2 8E |
SETB TR1 |
Старт Т/С1 |
Рис.2.25. Настройка Т/С1 на выдержку времени 5 мс в режиме 0 |
Режим 1. Т/С работает как 16-разрядный счетчик с последовательно включенными 8-разрядным старшим счетчиком ТН и 8-разрядным младшим счетчиком TL (предварительным делителем). Емкость счетчика составляет 216=65536.
Работа в режиме 1 аналогична работе в режиме 0 с тем отличием, что код числа в момент переполнения счетчика имеет значение #1.0000.0000.0000.0000B = #10000H = #(FFFF+1)Н и в счетчик нужно предварительно загрузить число
NСЧ = FFFF+1–NT = FFFF–(NT-1) (2.4)
Пример 2. Реализовать на базе Т/С0 выдержку времени 20 секунд с запретом аппаратного управления таймер/счетчиком и разрешением прерываний.
Для
создания такой выдержки времени нельзя
использовать режим 1 таймера, так как
при периоде 1 мкс счетных импульсов
необходимая выдержка в импульсах
составит
,
что превышает емкость счетчика 6553610 импульсов.
В режиме счетчика подведем импульсы, сформированные по схеме, приведенной на рис.2.26, с периодом следования 20 мс.
Выдержка в импульсах составит
,
что не превышает емкость счетчика 6553610.
В счетчик нужно предварительно загрузить 16-разрядное число
NСЧ = FFFF–(03Е8-1) = FС18Н
Программа приведена на рис.2.27.
Код |
Мнемокод |
Комментарии |
75 89 05 |
MOV TMOD, #05 |
#05H= #0000.0101B – установка режима по рис.22.2 |
75 8С FС |
MOV TH0, #FС |
Предварительная загрузка Т/С0 на выдержку времени 20 секунд |
75 8А 18 |
MOV TL0, #18 |
|
75 А8 82 |
MOV IE, #82 |
#82H= #1000.0010 - разрешение всех прерываний и от Т/С0 (рис.22.4) |
D2 8С |
SETB TR0 |
Старт Т/С0 |
Рис.22.7. Настройка Т/С0 на выдержку времени 20 с в режиме 1 |
Режим 2. Структурная схема Т/С1 (для Т/С0 та же самая) для режима 2 приведена на рис.22.8.
В
этом режиме в старший байт счетчика ТН
загружается число NСЧ. Содержимое
ТН при старте перегружается в младший
байт счетчика TL и в нем отсчитывается
NТ импульсов до переполнения. В
момент установки флага переполнения
TF содержимое ТН переписывается в TL и
процесс повторяется. Таким образом, с
периодом равным времени счета NТ
импульсов устанавливается флаг TF.
Код числа в момент переполнения счетчика
имеет значение #1.0000.0000B =
#100H = #(FF+1)Н
и в старший байт ТН1 счетчика нужно
предварительно загрузить число
NСЧ = FF+1–NT = FF–(NT-1) (2.5)
Режим 3. В режиме 3 Т/С1 обслуживает последовательный порт, а из Т/С0 образуются два независимых 8-разрядных таймер/счетчика ТН0 и TL0. Таймер/счетчик TL0 использует весь набор управляющих и выходных сигналов таймер/счетчика Т/С0. Таймер/счетчик ТН0 работает только как таймер, управляется только сигналом старт/стопа TR1, взятым от Т/С1, и устанавливает флаг переполнения ТF1, не вызывая при этом прерывания.