Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции МПСУ.doc
Скачиваний:
54
Добавлен:
06.12.2018
Размер:
7.86 Mб
Скачать

Вопросы и задания

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 - флаг запроса ; сброс в 0 в начале обслуживания запроса по срезу

2

IT1

1/0 – прерывания по срезу / уровню

1

IE0

1 - флаг запроса ; сброс в 0 в начале обслуживания запроса по срезу

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, не вызывая при этом прерывания.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]