- •Микропроцессорные системы мпс (Полетаев Игорь Алексеевич) 4-й курс Iсеместр 2000/2001 гг.
- •Классификация процессоров
- •Классификация контроллеров. Сферы применения 32-разрядных контроллеров
- •Обзор 8-разрядных контроллеров
- •Общая структура контроллеров семейства mCs-51i8x51
- •Структура контроллеров семейства pic16Схх
- •Структура команд и методы адресации
- •Методы адресации в pic-контроллерах
- •Язык Ассемблер
- •Программирование арифметических операций
- •Табличные вычисления
- •Порты ввода-вывода
- •Таймер-счётчик
- •Последовательный интерфейс mCs51
- •Работа последовательного порта в мультиконтроллерных системах
- •Определение тактовой частоты при работе с последовательным портом
- •Интерфейсы контроллеров pic
- •Последовательный связной интерфейс
- •Структурная схема приёмника
- •Модуль прерываниёMCs51
- •Система прерываний pic16
- •16-Ти разрядные контроллеры на примере mCs96
- •Вопросы
Табличные вычисления
При вычислении сложных функций необязательно применять итерационные методы. Можно задать результат таблично. Для этого в Intel8051 в контроллерах предназначен метод косвенной адресации по сумме базового и индексного регистра. Т.е. в указатель данных загружается начальный индекс таблицы, а в аккумулятор – аргумент (строка таблицы). Скорость вычислений при таком способе возрастает на несколько порядков.


Использование какого-либо ЯВУ существенно упрощает формирование таблиц и создаёт их как включаемый файл.
Пример: формирование синуса для байтного аргумента 0/2.

Теперь
файл
подключим в программу:
.
В контроллерах PIC16 для определения табличных значений предназначена команда:

Возможен
только один способ доступа к элементам
таблицы – по значению РС. Каждая таблица
должна иметь следующую команду:
.
Предварительно в старшую часть РС должна
быть записана старшая половина адреса.

При операциях с младшей частью РС отсутствует перенос в старший байт, поэтому таблица должна целиком помещаться в области 256 слов при неизменном девятом бите РС.
23.10.2000
Порты ввода-вывода
M
Cs51:
эти контроллеры имеют 4 порта, выделяется
0 порт. Он является двунаправленным: в
зависимости от используемой команды
переходит автоматическое переключение
на ввод или вывод с мультиплексированием
адреса. Порт может находиться вZ-состоянии. В самом простом
виде структура портов следующая:
Когда информация записывается в порт, триггер-защёлка устанавливается в соответствующее состояние. При выполнении команд ЧТЕНИЕ, МОДИФИКАЦИЯ, ЗАПИСЬ чтение производится не с линии порта, а с триггера. Команды для работы с портом:

Если линии порта Р3 используются для альтернативных функций, то в соответствующие разряды должны быть записаны ‘1‘.
При работе с внешней памятью Р0 всегда используется целиком. Если используются только команды
![]()
то Р2 можно использовать для других целей. Если используются команды
![]()
или внешняя память команд, то Р2 выполняет альтернативную функцию вывода старшего байта адреса.
PIC16:
РИС2.
К порту относится 2 регистра; можно прочитать их с помощью “чтение порта” и ”чтение TRIS”; можно записать в них с помощью “запись в порт” и ”записьTRIS”.
PIC16С74 – наиболее полно оснащённый контроллер семейства PIC:
32 линии ввода-вывода;
5 портов А Е;
все линии ,кроме RA4, трехстабильные;
имеет нагрузочную способность по току до 25мА.
К линиям порта BRB7RB4 подключён транзистор с высокоомным каналом с током 100мкА, соединяющий вход с питанием +U.
Таймер-счётчик
MCs51: здесь 2 т/с. для их управления есть 2 регистра. При работе т/с в качестве счётчика внешних событий счётный вход “Т“ проверяется 1 раз за машинный цикл и должен держаться на одном уровне. У т/с 4 режима работы(в зависимости от установки бит М0 и М1):
0 режим – используется для обеспечения совместимости с ранним семейством MCs48;
1 режим – его можно пояснить на рисунке:
![]()
![]()
![]()
TL TH TF







![]()
![]()
![]()
1

![]()
1




![]()


Бит GATEпозволяет использовать таймер для измерения длительности импульсного сигнала по входуINTили использовать счётчик для подсчёта импульсов на входе Т при включённом сигнале-окнеINT.
Т/с
работают на увеличение содержимого, и
временные задержки определяются по
формуле:
.
Чем меньше задержка, тем больше надо в
таймер записывать.
25.10.2000
2 режим: здесь младший байт используется, как перезапускаемый восьмиразрядный счётчик.

При каждом переполнении TLпроисходит автоматическая перезагрузка изTHвTL, т.е. счёт называется не с начала, а со значенияTH. Т.о. можно задавать частные интервалы; используется, например, широтно-импульсная модуляция и для задания опорной частоты последовательного интерфейса, с которым аппаратно связан т/с1.
3 режим: определяет работу т/с0 и представляет собой 2 независимых восьмиразрядных регистра.

TL0 может работать и в режиме таймера, и в режиме счётчика.TH0 может быть только таймером.
В режимах 02 т/с1 всегда включён, но при переходе всех бит в 0 флаг переполнения не устанавливается. Т/с1 в режиме 3 выключается. Этот режим обычно используют, когда требуется работа интерфейса и двух таймеров или интерфейса, таймера и счётчика.
PIC16
T
MR0:
может работать и как таймер, и как
счётчик. В режиме таймера инкремент
производится каждый командный цикл,
если не используется предварительный
делитель. В режиме счётчика инкремент
производится либо положительным, либо
отрицательным фронтом в зависимости
от битаRTE(регистрOPTION).
Предварительный делитель может быть
использован или сTMR0, или
со сторожевым таймером в зависимости
от битаPSA.
Для формирования точных переменных задержек можно использовать дополнительно 1 или несколько РОН для расширения разрядности счётчика. Тогда делитель отключается от таймера, а длительность задержки определяется:
![]()
Перед началом задержки загружаются расчётные значения в регистр и таймер, затем по каждому прерыванию таймера регистр декрементируется, и если стал равным 0, то задержка закончена.
TMR1: 2 регистраTMR1HиTMR1Lпрограммно доступны.
|
Биты |
Обозначение |
Назначение | ||||||||||
|
5 |
T1CKPS1 |
Настройка
делителя:
S1
S0 значение 0
0 1:1 0
1 1:2 1
0 1:4 1
1 1:8
| ||||||||||
|
4 |
T1CKPS0 | |||||||||||
|
3 |
T1OSCEN |
Разрешение внешнего генератора | ||||||||||
|
2 |
T1SYNC |
Контроль синхронизации (1 – таймер на синхронизирован внутренней частотой, 0 – наоборот) | ||||||||||
|
1 |
TMR1CS |
1 – счётчик, 0 – таймер | ||||||||||
|
0 |
TMR1ON |
Включение счёта |

TMR1 может работать с модулями ССР.
TMR2: восьми битный с дополнительными предварительным и дополнительным делителями. Он может работать только в режиме таймера.

Для управления таймером TMR2 служит регистрT2CON.
|
Биты |
Обозначение |
назначение |
|
6 |
TOUTPS3 |
Настройка выходного делителя 0000 1:1 0001 1:2 … 1111 1:16 |
|
5 |
TOUTPS2 | |
|
4 |
TOUTPS1 | |
|
3 |
TOUTPS0 | |
|
2 |
TMR2ON |
Включение счёта |
|
1 |
T2CKPS1 |
Настройка предварительного делителя 00 1:2, 01 1:4, 1х 1:16 |
|
0 |
T2CKPS0 |
TMR2 инкрементируется пока не достигнет величины, записанной в регистре периодаPR2. после этого он обнуляется и начинает счёт сначала. Выходной сигнал до дополнительного делителя используется в качестве сигналов сдвига для последовательного порта в синхронном режиме.
30.10.2000 и 4.11.2000.
CCP – Compare/ Capture (захват)/PWM
PWM – Pulse Width Modulation (широко-импульсная модуляция)
Каждый из двух модулей CCPможет выполнять одну из функций:
чтение “на лету” без остановки счёта;
генерирование сигнала сравнения;
генерирование сигнала с ШИМ.
Кроме этого каждый модуль содержит 16-ти битовый регистр-защёлку;
CPRxH:CPRxL
И управляющего регистра конфигурации CCPxCON.
1 режим:Capture(захват) используется для изменения временных интервалов и периодов. В регистрыCCPRпереписывается содержимое таймера1 по сигналу на входеRC2 (дляCCP1). Сигналы на защёлкивание можно определить:
отрицательный фронт;
положительный фронт;
один раз на каждый четвёртый отрицательный фронт;
один раз на каждый шестнадцатый отрицательный фронт.
При защёлкивании устанавливается флаг прерывания CCPxIF.
2 режим: Сравнение. Сравнивается содержимое таймера1 иCCPR. Встроенный триггер устанавливается при равенстве этих значений. Сигнал с этого триггера поступает на внешний вывод и в виде флага прерывания. Внутренний триггер можно использовать для перезапуска других устройств:
сбрасывать таймер;
производить запуск АЦП без вмешательства программы.
3
режим: В режиме ШИМ обеспечивается
10-ти битное расширение. Участвует только
таймер2. этот режим является простейшим
аналогом ЦАП.
Период ШИМ = <PR2 + 1> * 4fQ* <TMR2 с предделителем>
Длительность ШИМ = DC1*fQ- <TMR2 с предделителем>
DC1 – 10-ти битное значение, составленное из
CCPRxL(старшие 8 разрядов)
CCPxCON<5:4> (2 младших)
Минимальное время периода ШИМ для стандартных частот опорного генератора
|
Разрешение, бит |
Опорная частота | ||
|
20 МГц |
10 МГц |
4 МГц | |
|
10 |
19.53 кГц |
9.77 кГц |
3.9 кГц |
|
9 |
39 кГц |
19.53 кГц |
7.8 кГц |
|
8 |
78 |
39 |
15.6 |
|
6 |
312.5 |
156 |
62.5 |
Регистры конфигурации CCP1CONиCCP2CON:
|
Биты |
Обозначение |
Назначение |
|
5 |
CCPxX |
В режиме ШИМ 2 мл. бита длительности |
|
4 |
CCPxY | |
|
3 |
CCPxM3 |
Выбор режима модуля |
|
2 |
CCPxM2 | |
|
1 |
CCPxM1 | |
|
0 |
CCPxM0 |
