
Kharakhnin / Аналоговые и цифр. устройства авт. пособие
.pdf
|
|
Таблица 5 |
|
М1 |
М0 |
Режим работы |
|
0 |
0 |
0 |
|
0 |
1 |
1 |
|
1 |
0 |
2 |
|
1 |
1 |
3 |
|
С/Т1 и С/Т0 - биты, определяющие работу в качестве таймера или счетчика. С/Т1, С/Т0 = 0 – работа в качества таймера, С/Т1, С/Т0 = 1 – работа в качестве счетчика.
GATE1, GATE0 – биты разрешают или запрещают управлять Т/С от сигналов на внешних входах INT0, INT1 (INT0 для Т/С0, INT1 для Т/С1). GATE = 0 – управление запрещено, GATE = 1 – управление разрешено.
При работе в качестве таймера содержимое регистра T/C инкрементируется в каждом машинном цикле. Таким образом, Т/С является счетчиком машинных циклов, частота счета равна fBQ /12.
При работе Т/С в качестве счетчика внешних событий содержимое регистра инкрементируется при переходе внешнего сигнала ( на входе Т0 для Т/С0, на входе Т1 для Т/С1) из состояния “1” в состояние “0”. Максимальная частота счета внешних импульсов в режиме счетчика составляет fBQ/24.
Рассмотрим обозначение и назначение битов регистра TCON, представленных в табл. 6.
|
|
|
|
|
|
|
|
|
Таблица 6 |
||
Биты |
7 |
6 |
5 |
|
4 |
3 |
2 |
1 |
|
0 |
|
Обозначение |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
|
IT0 |
|
|
TF1, TF0 – флаги |
переполнения |
таймеров/счетчиков Т/С1 и Т/С0 |
соответственно. Они устанавливаются аппаратно при переходе содержимого регистров из состояния FFFFH в 0000Н. Если разрешено прерывание, то установка флага TF=1 вызовет прерывание в работе процессора. Флаги TF0 и TF1 сбрасываются аппаратно при передаче управления подпрограмме обработки соответствующего прерывания. TF0 и TF1 программно - доступны и установкой их в “1” можно вызвать прерывание либо отменить его в программе.
IE1, IE0 – флаги прерывания от сигналов на входах INT1 и INT0 соответственно. Они устанавливаются аппаратно или программно, вызывая подпрограммы обработки прерывания. Сброс флагов выполняется аппаратно при обслуживании прерывания, если оно было вызвано по фронту входного сигнала. Если же прерывание было вызвано уровнем входного
21
сигнала-запроса, то сброс соответствующего флага должна выполнять подпрограмма обслуживания прерывания.
TR1 и TR0 - биты включения/выключения таймеров/счетчиков. При TR = 0 T/C выключен, при TR =1 T/C включен.
IT1, IT0 – биты, определяющие вид прерывания по входам INT0 и INT1. Если IT = 0 - прерывание по низкому уровню, IT = 1 – прерывание по фронту ( переход из “1” в “0” ).
Схема инкремента предназначена:
-для увеличения на 1 содержимого регистров таймеров/счетчиков, для которых установлен режим таймера и счет разрешен;
-для увеличения на 1 содержимого регистров таймеров/счетчиков, для которых установлен режим счетчика, счет разрешен и на вхо-
дах T0 и Т1 зафиксирован счетный импульс.
Схема фиксации INT0, INT1, T0, T1 – представляет собой 4 триггера, в них запоминается информация с выводов INT0, INT1, T0, T1.
Схема управления флагами вырабатывает и снимает флаги переполнения T/C и флаги запросов внешних прерываний.
Логика управления синхронизирует работу регистров T/C0 и T/C1 в соответствии с запрограммированными режимами работы и блока T/C с работой МК.
1. 6. Режимы работы таймеров/счетчиков
Режим 0. Установка битов М0=0 и М1=0 определяет режим 0. Рассмотрим логику работы Т/С1 в режиме 0, представленную на рис. 8 . Для Т/С0 логика работы аналогична. Т/С представляет собой устройство на основе 13 - разрядного регистра. Этот регистр состоит для Т/С0 из 8 разрядов регистра TH0 и 5 младших разрядов регистра TL0, а для Т/С1 – 8 разрядов регистра TH1 и 5 младших разрядов регистра TL1. Таким образом, максимальное число, которое может быть записано в регистр, - 8192. На рис. 7 на выходе источника синхронизации OSC имеет место частота сигналов fBQ. Делитель делит частоту синхронизации на fBQ/12. Бит С/Т определяет работу в качестве таймера либо счетчика. Счет начинается при установке TR = 1. Если необходимо управлять счетом по сигналу на входах INT, необходимо установить GATE = 1. При INT0=1 и INT1=1 счет будет разрешен, а при INT0 = 0 и INT1 = 0 счет запрещается. При TR = 0 счет прекращается.
22

Управление
|
|
|
|
C/T1=0 |
|
|
|
|
TL1 |
TH1 |
|
|
|
||
OSC |
|
|
:12 |
|
|
|
|
|
|
|
|
|
TF1 |
||
|
|
|
|
|
|
|
|
|
(5бит) |
(8бит) |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C/T1=1
T1
GATE1 |
1 |
TR1 |
|
&
1
INT1
Рис. 8. Логика работы таймеров/счетчиков в режиме 0
Режим 1. Установка битов М1 = 0 М0 = 1 определяет режим работы 1. Режим 1 аналогичен режиму 0. Отличие состоит в том, что регистр
Т/С является шестнадцатиразрядным, то есть максимальным числом, которое может быть записано, является 65535 (FFFFH). Логика работы Т/С показана на рис. 9.
Управление
|
|
|
|
C/T1=0 |
|
|
|
|
TL1 |
TH1 |
|
|
|
||
OSC |
|
|
:12 |
|
|
|
|
|
|
|
|
|
TF1 |
||
|
|
|
|
|
|
|
|
|
(8бит) |
(8бит) |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C/T1=1
T1
GATE1 |
1 |
TR1 |
|
&
1
INT1
Рис. 9. Логика работы таймеров/счетчиков в режиме 1
Режим 2. Установка битов М1 = 1, М0 = 0 определяет режим работы 2. В этом режиме Т/С представляет собой устройство на основе восьмиразрядного регистра TL0 для Т/С0 и TL1 для Т/С1. Счет в регистре продолжается до 255 (FFH). После переполнения кроме установки флага TF = 1 происходит автоматически перезагрузка содержимого TH в TL. Таким образом, в этом режиме счет начинается с числа, загруженного в
23

старший байт TH. Изменяя число в TH, можно тем самым изменять время до переполнения регистра. Логика работы таймеров/счетчиков представлена на рис. 10. Назначение битов управления аналогично вышерассмотренным режимам.
|
|
|
|
|
|
Управление |
|
|
|
|||||
|
|
|
|
C/T1=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TL1 |
|
|
|
||
OSC |
|
|
:12 |
|
|
|
|
|
|
|
|
|
TF1 |
|
|
|
|
|
|
|
|
|
|
(8бит) |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C/T1=1
|
T1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
TR1 |
|
|
|
||||||
GATE1 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& |
|
|
|
|
TH1 |
|||||||||
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
(8бит) |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INT1
Рис. 10. Логика работы таймеров/счетчиков в режиме 2
Режим 3. Установка битов М1 = 1, М0 = 1 определяет режим работы 3. Т/С1 в этом режиме заблокирован и сохраняет свой счет, как при
установке TR1 = 0.
Т/С0 представляет собой два независимых устройства на основе восьмиразрядных регистров TL0 и TH0. Устройство на основе регистра TL0 может работать в режиме таймера и в режиме счетчика. За ним сохраняются все биты управления Т/С0, оно реагирует на импульсы, поступающие на входы Т0 и INT0. При переполнении TL0 устанавливается флаг TF0. Устройство на основе регистра TH0 может работать только в режиме таймера. Оно использует бит включения TR1, при переполнении TH0 устанавливается флаг TF1. Других битов управления устройство на основе TH0 не имеет. Логика работы Т/С представлена на рис.11.
T/C1 аппаратно связан с блоком синхронизации последовательного порта. Поэтому при работе в режимах 0,1,2 при переполнении T/C1 всегда вырабатывается импульс тактирования последовательного порта. Режим 3 Т/С0 удобно использовать в случае, когда требуется работа последовательного порта и двух таймеров либо PS, таймера и счетчика.
24

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TR1 |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OSC |
|
|
:12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TH0 |
|
|
|
TF1 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(8бит) |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Управление |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
C/T1=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TL0 |
|
|
|
TF0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
T0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(8бит) |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
C/T1=1 |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
TR0 |
|
|
|
|
|||||||||||||
GATE0 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&
1
INT0
Рис. 11. Логика работы таймеров/счетчиков в режиме 3
1.7. Структура прерываний МК
Прерывание - это событие, при котором процессор прекращает выполнение основной программы (прерывается) и переходит к реализации подпрограммы, обслуживающей это прерывание. Режим прерываний удобен в тех случаях, когда возникновение событий имеет случайный (непредсказуемый) характер. Примером может служить работа клавиатуры. При использовании разработчиком режима прерываний МК не нужно постоянно сканировать состояние клавиш, таким образом, процессор освобожден от непроизводительной работы и может в это время выполнить что-то более интеллектуальное. При возникновении запроса, в случае нажатия клавиши, формируется аппаратный запрос на прерывание и МК переходит к выполнению подпрограммы определения кода нажатой клавиши. Механизм прерываний МК позволяет автоматически реагировать на внешние (аппаратные запросы по входам INT0 и INT1) и на внутренние события (переполнение таймеров-счетчиков; завершение обмена последовательного порта). За каждым источником прерывания жестко закреплен адрес вектора прерывания. Рассмотрим адреса векторов прерывания, представленные в табл. 7.
|
Таблица 7 |
|
Источник прерывания |
Адрес вектора прерывания |
|
Аппаратное (внешнее) прерывание INT0 |
0003H |
|
Переполнение таймера счетчика T/C0 |
000BH |
|
Аппаратное (внешнее) прерывание INT1 |
0013H |
|
Переполнение таймера счетчика T/C1 |
001BH |
|
Завершение обмена по последовательному порту |
0023Н |
|
25 |
|
|
Рассмотрим регистры, позволяющие управлять прерываниями МК.
Регистр разрешения прерываний IE.
Регистр предназначен для разрешения или запрещения прерываний от соответствующего источника. Рассмотрим биты IE, представленные в табл. 8.
|
|
|
|
|
|
|
|
Таблица 8 |
|
Биты |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Обозначение |
EA |
X |
Х |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
|
ЕА – управление всеми источниками прерываний одновременно. Если ЕА = 0, то прерывания запрещены. Если ЕА = 1, то прерывания могут быть разрешены индивидуальными разрешениями.
Х – резервные разряды.
ES – управление прерыванием от последовательного порта.
ЕТ1 – управление прерыванием по переполнению таймера счетчика Т/С1.
ЕХ1 – управление прерыванием от внешнего источника по входу INT1. ET0 - управление прерыванием по переполнению таймера счетчика
Т/С0.
ЕХ0 - управление прерыванием от внешнего источника по входу INT0. Для всех битов установка в единичное состояние означает, что преры-
вание разрешено; если бит сброшен, то прерывание запрещено.
Регистр приоритетов прерываний IP.
Регистр предназначен для установки уровня приоритета прерывания для каждого из пяти источников прерываний. Рассмотрим биты IP, представленные в табл. 9.
|
|
|
|
|
|
|
|
Таблица 9 |
|
Биты |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Обозначение |
Х |
Х |
Х |
РS |
РT1 |
РX1 |
РT0 |
РX0 |
|
PX0 – установка уровня приоритета прерывания от внешнего источника
INT0.
PT0 – установка уровня приоритета прерывания от таймера/счетчика 0. PX1 – установка уровня приоритета прерывания от внешнего источника
INT1.
PT1 – установка уровня приоритета прерывания от таймера/счетчика 1. PS - установка уровня приоритета прерывания от последовательного
порта.
X - резервные разряды.
26

Наличие в разряде IP высокого единичного уровня устанавливает для соответствующего источника высокий уровень приоритета, наличие в разряде 0 – низкий уровень приоритета. Программисту запрещается запись в резервные биты 1, так как они зарезервированы для дальнейших разработок МК.
Поскольку система приоритетов прерываний МК двухуровневая, то возникает вопрос, как будут обрабатываться прерывания при наличии единиц в битах регистра IP и одновременно возникших запросах. При прочих равных условиях обработка будет проводиться последовательно в соответствии с рис. 12. Рассмотрим пример. Пусть все прерывания разрешены. Информация в IP = 00010010, запросы поступили одновременно. Вначале процессор выполнит подпрограмму обслуживания прерывания при переполнении таймера/счетчика 0, затем подпрограмму обслуживания последовательного порта, далее будет обработан запрос по входу INT0, затем по входу INT1, следующей выполнится подпрограмма обработки по переполнению таймера/счетчика 1. И наконец, процессор приступит к выполнению основной программы.
Рис. 12. Порядок выполнения подпрограмм обслуживания прерываний при равенстве приоритетов МК
27
1.8. Блок последовательного интерфейса МК
1.8.1. Последовательная передача информации
Для связи с удаленными источниками информации (более 5 м) нерационально проводить восьмиразрядные магистрали для параллельной передачи. В этом случае возникают паразитные емкости между проводниками, существенно снижающие помехоустойчивость системы. В этих случаях выгоднее использовать двухпроводную линию связи с последовательной передачей по ней информационных битов.
Рассмотрим принципы последовательной связи. Последовательная связь – это передача или прием, при которых данные передаются последовательно бит за битом. Данные могут передаваться с различной скоростью. Скорость передачи определяется количеством битов данных, передаваемых по линии в 1 секунду, – Бод. Один килобод равняется 1000 бодам.
Рассмотрим временную диаграмму последовательной передачи цифрового слова 25Н, представленную на рис. 13.
1 |
2 |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
3 |
4 |
Рис. 13. Временная диаграмма последовательной передачи информации
Здесь 1 – бит ожидания; 2 – стартовый бит; 3 – бит паритета; 4 – стоповый бит.
Первым к приемнику передается бит D0. Чтобы определить момент начала передачи, приемное устройство должно зафиксировать изменения состояния линии связи. Если нет передачи, последовательная линия находится в единичном состоянии (бит ожидания =1). Сигналом, означающим начало передачи, является бит 2, вырабатываемый передатчиком и имеющий нулевой уровень. Приемное устройство воспринимает стартовый бит, после этого начинается прием. Кроме отмеченных битов к кодовой комбинации добавляется бит паритета. Он вырабатывается передатчиком и используется приемником для контроля правильности приема информационного байта. Таким образом, приемное устройство не только воспринимает данные, но и настроено на прием нечетного или четного числа единиц в передаваемом байте. Использование бита паритета для контроля правильности приема данных позволяет обнаруживать ошибки. Послед-
28
ний бит передаваемой комбинации стоп - бит. Он вырабатывается передатчиком и используется для обозначения конца кодовой комбинации.
1.8.2. Последовательный порт однокристального МК
Последовательный порт однокристальных МК семейства MSC51 (PS) является дуплексным (двунаправленным) и обеспечивает работу в одном синхронном (режим 0) и трех асинхронных режимах (режим 1,2,3). Поддерживается также последовательный обмен в многопроцессорных системах (при организации локальных сетей).
Последовательный порт имеет специальный буферный регистр SBUF. Он содержит две части: буфер приёмника и буфер передатчика. Кроме того, последовательный порт содержит аппаратный регистр сдвига, преобразующий параллельный байт из SBUF в последовательность битов. Загрузка байта в SBUF немедленно вызывает начало процесса передачи через последовательный порт. Когда байт считывается из SBUF, это значит, что его источником является приёмник последовательного порта. Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Наличие буферного регистра приёмника позволяет совмещать операцию чтения ранее принятого байта с приёмом очередного байта. Если к моменту
окончания приёма байта предыдущий байт из регистра SBUF не был считан, то он будет потерян.
1.8.3. Регистр управления последовательным портом SCON
Регистр SCON предназначен для приема и хранения 8 - разрядного слова, управляющего последовательным интерфейсом. Рассмотрим разряды регистра, представленные в табл. 10.
Таблица 10
Биты |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Обозначе- |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
ние |
|
|
|
|
|
|
|
|
Разряды SM0 и SM1 определяют режим работы порта (табл. 11).
|
|
|
|
Таблица 11 |
M0 |
SM1 |
Режим |
Наименование |
Скорость |
29
0 |
0 |
0 |
Сдвиговый регистр |
FBQ/12 |
|
0 |
1 |
1 |
8-битовый универсальный |
Переменная, |
задает- |
|
|
|
асинхронный приемо- |
ся T/C1 |
|
|
|
|
передатчик |
|
|
1 |
0 |
2 |
9-битовый универсальный |
FBQ/64 или FBQ/32 |
|
|
|
|
асинхронный приемо- |
|
|
|
|
|
передатчик |
|
|
1 |
1 |
3 |
9-битовый универсальный |
Переменная, |
задает- |
|
|
|
асинхронный приемо- |
ся T/C1 |
|
|
|
|
передатчик |
|
|
SM2 – бит разрешения многопроцессорной работы. В режимах 2 и 3 при SM=1 флаг RI не активизируется, если девятый принятый бит данных равен ‘0’. В режиме 1 при SM2=1 флаг RI не активизируется, если не принят стоп – бит, равный ‘1’. В режиме 0 бит SM2 должен быть установлен в ‘0’.
REN – бит разрешения приема последовательных данных. Устанавливается и сбрасывается программно.
TB8 – девятый бит передаваемых данных в режимах 2 и 3. Устанавливается и сбрасывается программно.
RB8 – девятый бит принятых данных в режимах 2 и 3. В режиме 1, если SM2=0, RB8 является принятым стоп – битом. В режиме 0 бит RB8 не используется.
TI – флаг прерывания передатчика. Устанавливается аппаратно в конце времени выдачи 8-го бита в режиме 0 или в начале стоп – бита в других режимах. Сбрасывается программно.
RI - флаг прерывания приемника. Устанавливается аппаратно в конце времени приема 8-го бита в режиме 0 или стоп – бита в режимах 1,2,3
при SM2=0.
1.8.4. Режимы работы последовательного порта
Последовательный порт может работать в четырех различных режимах.
Синхронный обмен данными (режим 0).
Последовательный порт в этом режиме работает как восьмиразрядный сдвиговый регистр. При этом 8 бит информации в последовательном формате принимаются и передаются через двунаправленный вывод RxD. На выводе TxD формируется сигнал синхронизации сдвигов. Скорость приема/передачи в режиме 0 постоянна и составляет fBQ/12, где fBQ- частота синхронизации МК.
30