Шумахер У. Полупроводниковая электроника
.pdfINFSEMI_2-Text.fm, стр. 263 из 589 (September 3, 2010, 17:05)
7.2. Восьмибитные микроконтроллеры 263
распределения адресов векторов прерыва- |
3. В текущий момент выполняется команда |
|||||||||||||||||||||||||||||||||||||||
ний для микроконтроллера С501. Обычно |
|
|
RETI или другая команда, осуществляю- |
|||||||||||||||||||||||||||||||||||||
векторы прерываний расположены в облас- |
|
|
щая запись в регистры приоритета или в |
|||||||||||||||||||||||||||||||||||||
ти ПЗУ, начинающейся с адреса 0003h. Ми- |
|
|
иные |
активизируемые |
по |
прерыванию |
||||||||||||||||||||||||||||||||||
нимальный интервал между двумя последо- |
|
|
регистры. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
вательными векторами прерывания состав- |
|
|
Если как минимум одно из этих условий |
|||||||||||||||||||||||||||||||||||||
ляет 8 байт, следовательно, вектора преры- |
имеет место, то команда LCALL, вызываю- |
|||||||||||||||||||||||||||||||||||||||
ваний могут располагаться по адресам |
щая процедуру обработки прерывания, не |
|||||||||||||||||||||||||||||||||||||||
0003h, 000Bh, 0013h, 001Bh, 0023h, 002Bh, |
будет запущена. Условие 2 гарантирует, что |
|||||||||||||||||||||||||||||||||||||||
0033h, …00FBh. |
|
|
|
|
выполнение текущей команды будет полно- |
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
стью завершено до того, как микроконтрол- |
||||||||||||||||||||||||||||||||
FFFFh |
Память |
|
|
|
лер переключится на процедуру обработки |
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
прерывания. Условие 3 |
обеспечивает |
ис- |
||||||||||||||||||||||||||||||||
|
|
|
программ |
|
|
|
полнение как минимум одной команды (из |
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
Прерывание |
|
|
|
основного тела программы) до переключе- |
|||||||||||||||||||||||||||||||||
002Bh |
|
|
от Таймера 2 |
|
|
|
ния на следующую программу обработки |
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
Прерывание от последо- |
|
|
прерывания. Эта задержка даёт возмож- |
||||||||||||||||||||||||||||||||||
0023h |
вательного порта |
|
|
|
ность контроллеру прерываний обнаружи- |
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
Прерывание |
|
|
|
вать изменения в текущем приоритете пре- |
|||||||||||||||||||||||||||||||||
001Bh |
|
|
от Таймера 1 |
|
|
|
рывания. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
Внешнее |
|
|
|
|
|
Опрос флага прерывания повторяется в |
|||||||||||||||||||||||||||||||
0013h |
|
прерывание 1 |
|
|
|
каждом машинном цикле. При этом обра- |
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|
|
Прерывание |
|
|
8 байт |
батывается значение флага, зафиксирован- |
|||||||||||||||||||||||||||||||||
000Bh |
|
от Таймера 0 |
|
|
ное в предыдущем машинном цикле. Надо |
|||||||||||||||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|
|
Внешнее |
|
|
|
отметить, что если флаг запроса на преры- |
|||||||||||||||||||||||||||||||||
0003h |
|
прерывание 0 |
|
|
|
вание был установлен, но соответствующая |
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|
|
|
Сброс |
|
|
|
реакция микроконтроллера была заблоки- |
||||||||||||||||||||||||||||||||
0000h |
|
|
|
|
|
рована одним из указанных выше условий и |
||||||||||||||||||||||||||||||||||
Рис. 7.6. Источники прерываний и адреса со- |
при этом на момент окончания действия |
|||||||||||||||||||||||||||||||||||||||
блокирующего |
условия |
флаг |
запроса |
на |
||||||||||||||||||||||||||||||||||||
ответствующих векторов (на примере микро- |
||||||||||||||||||||||||||||||||||||||||
прерывание перестал быть активным, |
то |
|||||||||||||||||||||||||||||||||||||||
|
|
|
контроллера С501). |
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
прерывание, обработка которого ещё не на- |
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
Источник прерывания, устанавливая со- |
чалась, так и не будет обработано. |
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
Иными словами, система «не помнит», |
||||||||||||||||||||||||||||||||||||||
ответствующий флаг, информирует конт- |
|
|
||||||||||||||||||||||||||||||||||||||
что флаг запроса на прерывание был уста- |
||||||||||||||||||||||||||||||||||||||||
роллер прерываний о возникновении усло- |
||||||||||||||||||||||||||||||||||||||||
новлен, но это прерывание не было обрабо- |
||||||||||||||||||||||||||||||||||||||||
вий, требующих |
запроса |
на |
прерывание. |
|||||||||||||||||||||||||||||||||||||
тано; в каждом цикле опроса во внимание |
||||||||||||||||||||||||||||||||||||||||
Состояние флага |
запроса |
на |
прерывание |
|||||||||||||||||||||||||||||||||||||
принимаются только активные запросы на |
||||||||||||||||||||||||||||||||||||||||
фиксируется в каждом машинном цикле. |
||||||||||||||||||||||||||||||||||||||||
прерывание. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
В следующем машинном |
цикле произво- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
Последовательность действий в цикле |
||||||||||||||||||||||||||||||||||||||
дится опрос его состояния. Если флаг был |
|
|
||||||||||||||||||||||||||||||||||||||
опроса/вызова команды LCALL показана |
||||||||||||||||||||||||||||||||||||||||
установлен, то контроллер прерываний сге- |
||||||||||||||||||||||||||||||||||||||||
на Рис. 7.7. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
нерирует команду LCALL, которая вызовет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
переход ЦПУ к программе обработки, рас- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
C1 |
|
|
|
|
|
C2 |
|
|
|
|
|
C3 |
|
|
|
C4 |
|
|
C5 |
|
|
|
|
|
||||||||||||||
положенной по адресу, указанному в соот- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
S5P2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
ветствующем векторе прерывания. Эта ап- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
паратная команда LCALL может быть за- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
блокирована любым из ниже перечислен- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
ных условий: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
Преры- |
Преры- |
|
|
|
Команда |
Программа |
||||||||||||||||||||||||||||||
1. Уже обрабатывается прерывание с рав- |
|
|
|
|||||||||||||||||||||||||||||||||||||
вание |
вание |
|
|
|
перехода |
|
обработки |
|||||||||||||||||||||||||||||||||
ным или более высоким приоритетом. |
обнару- |
опро- |
|
|
|
по вектору |
прерывания |
|||||||||||||||||||||||||||||||||
2. Текущий машинный цикл (опроса) не |
|
жено |
|
шено |
|
|
|
прерывания |
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
является последним циклом для коман- |
Рис. 7.7. Временная диаграмма процесса обна- |
|||||||||||||||||||||||||||||||||||||||
ды, которая исполнялась в момент пос- |
ружения прерывания и входа в программу его |
|||||||||||||||||||||||||||||||||||||||
тупления запроса на прерывание. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
обработки. |
|
|
|
|
|
|
|
|
INFSEMI_2-Text.fm, стр. 264 из 589 (September 3, 2010, 17:05)
264 7. Микроконтроллеры
Надо отметить, что в соответствии с при- |
Вызов этой команды сам по себе занимает |
ведёнными выше правилами прерывание, |
два машинных цикла. Следовательно, меж- |
поступившее во время фаз С5 и С6, если |
ду моментом обнаружения внешнего пре- |
оно обладает высоким приоритетом и ста- |
рывания и исполнением первой команды |
новится активным перед S5P2 (в машинном |
программы обработки прерывания пройдёт |
цикле С3 на Рис. 7.7), будет обработано да- |
как минимум три полных машинных цикла. |
же без исполнения хотя бы одной команды |
Более длительное время реакции на вне- |
из программы с приоритетом более низкого |
шнее прерывание может быть результатом |
уровня. |
блокирования запроса любым из трёх упо- |
Таким образом, процессор реагирует на |
мянутых выше условий. Если уже обраба- |
прерывание выполнением аппаратной ко- |
тывается прерывание с таким же или более |
манды LCALL для вызова соответствующей |
высоким уровнем приоритета, то длитель- |
программы обработки прерывания. В неко- |
ность дополнительной задержки будет оп- |
торых случаях после этого аппаратно сбра- |
ределяться параметрами текущей (уже ис- |
сывается флаг запроса прерывания. В ос- |
полняемой) программы обработки преры- |
тальных случаях флаг сброшен не будет, и |
вания. Даже если для завершения команды, |
пользовательская программа должна будет |
исполняемой на момент обнаружения пре- |
сделать это сама. |
рывания, требуется какое-то время, то за- |
Выполнение программы обработки пре- |
держка не может превысить три машинных |
рывания продолжается последовательно |
цикла, поскольку процесс исполнения даже |
вплоть до команды RETI. Команда RETI |
самых длинных команд (MUL и DIV) зани- |
информирует процессор о том, что про- |
мает только четыре машинных цикла. Од- |
грамма обработки прерывания закончила |
нако если исполняемая в момент обнаруже- |
свою работу, и перегружает два верхних |
ния прерывания команда является коман- |
байта из стека в счётчик команд. Выполне- |
дой возврата из обработки прерывания |
ние ранее прерванной основной програм- |
(RETI), командой записи в регистр разре- |
мы возобновляется с того места, в котором |
шения прерывания или командой записи в |
она была приостановлена. Необходимо от- |
регистр приоритетов прерываний, то до- |
метить, что команда RETI играет очень |
полнительная задержка не превысит пяти |
важную роль, поскольку она информирует |
машинных циклов (не более чем один ма- |
процессор о том, что после возобновления |
шинный цикл, который нужен для завер- |
основной программы разрешён приём пре- |
шения текущей исполняемой команды, и |
рываний с текущим уровнем приоритета |
максимум четыре машинных цикла, необ- |
(т.е. с тем же уровнем приоритета, как и |
ходимых для исполнения следующей длин- |
только что обработанное прерывание). |
ной команды, например команды умноже- |
Простая команда RET тоже приводит к |
ния или деления (MUL или DIV)). |
возобновлению прерванной основной про- |
Следовательно, если имеет место оди- |
граммы, но контроллер прерываний будет |
ночное прерывание, то время реакции на |
считать, что текущее прерывание всё ещё |
него (с момента обнаружения прерывания |
активно. В этом случае никакие новые пре- |
до начала выполнения первой команды |
рывания с тем же или более низким уров- |
программы-обработчика) всегда превышает |
нем приоритета не будут восприняты про- |
три машинных цикла и всегда меньше, чем |
цессором. |
девять машинных циклов. |
Время реакции на прерывание |
7.2.6. Структура портов ввода/вывода |
|
После обнаружения внешнего прерыва- |
Цифровые порты ввода/вывода |
|
ния соответствующий ему флаг запроса |
||
Микроконтроллеры семейства С500 поз- |
||
прерывания устанавливается в фазе S5P3 |
||
каждого машинного цикла. Значение этого |
воляют производить операции ввода/выво- |
|
флага не будет обработано схемой опроса до |
да для входных и выходных цифровых сиг- |
|
следующего машинного цикла. Если запрос |
налов. Такие операции осуществляются че- |
|
на прерывание активен и нет препятствий к |
рез специально предназначенные для этой |
|
его обработке, то следующей исполняемой |
цели выводы микроконтроллера, которые |
|
командой будет аппаратная команда пере- |
сгруппированы по 8 выводов и образуют |
|
хода к программе обработки прерывания. |
8-битные порты. Каждый порт включает в |
INFSEMI_2-Text.fm, стр. 265 из 589 (September 3, 2010, 17:05)
себя входное устройство (буфер), триггер- |
Чтение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VCC |
||||||||||||||||
ную защёлку и выходной драйвер. |
|
защёлки |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Внутренний |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
Управление доступом к порту для записи |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
или считывания данных осуществляется че- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
подтягива- |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ющий |
|||||||||||
рез соответствующий регистр специальных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
резистор |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
Внутренняя |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
функций. |
|
|
|
|
|
|
|
D |
|
|
|
|
|
Q |
|||||||||||||||||||
|
|
|
|
|
|
|
шина |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вывод |
||||||||||
На Рис. 7.8 в упрощённом виде показа- |
микро- |
Однобитный |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
триггер- |
|
|
|
|
|
|
|
|
|
|
|
|
порта |
||||||||||||||||||
но, как работают однобитная триггерная за- |
контроллера |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
защёлка |
_ |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
щёлка и буфер ввода/вывода («сердце» каж- |
|
|
|
|
|
|
|
|
|
порта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Запись |
CLK |
|
|
Q |
|||||||||||||||||||||||||||||
дого порта ввода/вывода). Защёлка порта |
в защёлку |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n1 |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
(один бит в регистре SFR этого порта) пока- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
зана как D-триггер, который по сигналу от |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
ЦПУ «запись в защёлку» считывает значе- |
Чтение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
ние бита данных с внутренней шины мик- |
вывода |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
роконтроллера по фронту сигнала тактовой |
порта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
частоты. Выход Q триггера подключается к |
Рис. 7.9. Схема порта (применима ко всем |
||||||||||||||||||||||||||||||||
внутренней шине по сигналу процессора |
|
|
портам, кроме порта 0). |
||||||||||||||||||||||||||||||
«чтение вывода порта». Некоторые из ко- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
манд чтения порта (например, при чтении |
мощью внутренних схем на полевых тран- |
||||||||||||||||||||||||||||||||
содержимого SFR-регистров портов P0, P2, |
зисторах (см. Рис. 7.9). Каждая из линий |
||||||||||||||||||||||||||||||||
P3) активируют сигнал «чтение защёлки» |
ввода/вывода может независимо програм- |
||||||||||||||||||||||||||||||||
(Read Latch), тогда как другие активируют |
мироваться для использования в качестве |
||||||||||||||||||||||||||||||||
сигнал «чтение вывода порта» (Read Pin). |
ввода или вывода данных. В первом случае |
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
значение бита, записанного в защёлке порта, |
|||||||||||||||||||||||||
Чтение |
|
|
|
|
|
|
|
должно соответствовать логической 1 (т.е. на |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
Рис. 7.9 выходы триггера-защёлки должны |
||||||||||||||||||||||||||
защёлки |
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
находиться в следующих состояниях: Q = 1, |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
а Q = 0). При этом полевой транзистор n1 |
|||||||||||||||||||||||||
Внутренняя |
|
|
|
|
|
|
|
выходного драйвера порта будет закрыт. Со- |
|||||||||||||||||||||||||
|
|
Q |
|
|
|
||||||||||||||||||||||||||||
шина |
D |
|
|
|
ответственно, на выводе порта может при- |
||||||||||||||||||||||||||||
микро- |
|
|
|
|
Вывод |
сутствовать ВЫСОКИЙ |
уровень (его по |
||||||||||||||||||||||||||
|
|
|
|
|
Схема |
||||||||||||||||||||||||||||
контроллера |
Защёлка |
|
|
|
порта |
||||||||||||||||||||||||||||
|
|
|
драйвера |
умолчанию обеспечивает наличие внутрен- |
|||||||||||||||||||||||||||||
|
порта |
_ |
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
порта |
|
него подтягивающего резистора) либо НИЗ- |
||||||||||||||||||||||||||
Запись |
CLK |
Q |
|
|
|
||||||||||||||||||||||||||||
в защёлку |
|
|
|
|
|
КИЙ уровень, задаваемый внешним источ- |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
ником сигнала. В отличие от состояния ВЫ- |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
СОКОГО уровня на выходе порта, перевод |
|||||||||||||||||||||||||
Чтение |
|
|
|
|
|
|
|
его в НИЗКИЙ уровень связан с протекани- |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
ем определённого тока от источника сигна- |
||||||||||||||||||||||||||
вывода |
|
|
|
|
|
|
|
||||||||||||||||||||||||||
порта |
|
|
|
|
|
|
|
ла. Поэтому порты такого типа иногда назы- |
|||||||||||||||||||||||||
Рис. 7.8. Типичная структура порта микрокон- |
вают квазидвунаправленными. |
||||||||||||||||||||||||||||||||
Архитектура портов некоторых из мик- |
|||||||||||||||||||||||||||||||||
троллера семейства С500. |
|
||||||||||||||||||||||||||||||||
|
роконтроллеров семейства С500 обеспечи- |
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
Выходные драйверы портов 0 и 2 и вход- |
вает возможность работы как в квазидву- |
||||||||||||||||||||||||||||||||
направленном |
режиме (совместимом со |
||||||||||||||||||||||||||||||||
ные буферы порта 0 используются также |
|||||||||||||||||||||||||||||||||
стандартным режимом работы порта про- |
|||||||||||||||||||||||||||||||||
для доступа к внешней памяти. В этом слу- |
|||||||||||||||||||||||||||||||||
цессора семейства 8051), так и в полностью |
|||||||||||||||||||||||||||||||||
чае (при обращении к внешней памяти че- |
|||||||||||||||||||||||||||||||||
двунаправленном режиме с входными и вы- |
|||||||||||||||||||||||||||||||||
рез порт 0) младший байт адреса мульти- |
|||||||||||||||||||||||||||||||||
ходными уровнями напряжений, стандарт- |
|||||||||||||||||||||||||||||||||
плексируется |
по времени |
со считывае- |
|||||||||||||||||||||||||||||||
ными для КМОП. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
мым/записываемым байтом данных. Если |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
адрес шестнадцатибитный, то его старший |
Аналоговые входные порты |
||||||||||||||||||||||||||||||||
байт передаётся через порт 2. |
|
Некоторые |
модификации микроконт- |
||||||||||||||||||||||||||||||
Выходное напряжение драйверов портов |
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
7.2. Восьмибитные микроконтроллеры 265 |
(за исключением драйвера порта 0) «подтя- |
роллеров семейства С500 имеют встроен- |
|
ный АЦП с несколькими входными линия- |
||
нуто» к уровню напряжения питания с по- |
||
ми. Соответствующие выводы микроконт- |
||
|
INFSEMI_2-Text.fm, стр. 266 из 589 (September 3, 2010, 17:05)
266 7. Микроконтроллеры
роллера, в зависимости от его модифика- |
нератора. Как правило, арифметические и |
|||
ции, либо предназначаются исключительно |
логические операции реализуются в фазе 1, |
|||
для приёма аналоговых сигналов, либо мо- |
а пересылка данных между регистрами — в |
|||
гут использоваться как в качестве аналого- |
фазе 2. |
|
|
|
вых входов, так и в качестве цифровых пор- |
Временные диаграммы, приведённые на |
|||
тов ввода/вывода (такой вариант является |
Рис. 7.10, демонстрируют процесс выборки |
|||
стандартным для микроконтроллеров с не- |
и исполнения команд микроконтроллера в |
|||
большим количеством выводов). |
«привязке» к тактам и фазам машинного |
|||
Выводы, предназначенные для работы с |
цикла. |
|
|
|
аналоговыми сигналами, могут функцио- |
Поскольку у пользователя отсутствует |
|||
нировать в одном из двух режимов. Когда |
возможность непосредственного доступа к |
|||
они используются в качестве аналоговых |
внутренним тактовым сигналам микрокон- |
|||
входов, номер требуемого аналогового ка- |
троллера, для получения косвенной инфор- |
|||
нала задаётся значением соответствующего |
мации о них может быть использован сиг- |
|||
битового поля в управляющем регистре |
нал ALE (разрешение фиксации адреса в |
|||
АЦП. Когда же они используются в качест- |
триггерной защёлке). Сигнал ALE обычно |
|||
ве цифровых входов, связанный с данным |
переводится в активное состояние дважды в |
|||
портом регистр специальных функций бу- |
течение каждого машинного цикла: это |
|||
дет содержать цифровое значение, присут- |
происходит сначала в фазах S1P2 и S2P2 и |
|||
ствующее на линиях порта. Для того чтобы |
повторно в фазах S4P2 и S5P1. |
|
||
это цифровое значение линий порта было |
Исполнение команды |
длительностью |
в |
|
считано в регистр, уровни входных напря- |
один машинный цикл начинается в фазе S1P2 |
|||
жений на них должны находиться в заранее |
с записи кода команды в регистр команд. |
|
||
заданных для логического 0 и логической 1 |
Если исполняемая команда является двух- |
|||
границах (VIL/VIH). Таким образом, можно |
байтной, то считывание второго байта кода |
|||
одновременно использовать |
аналоговые |
операции (КОП) производится в фазе S4 того |
||
входные порты для приёма аналоговых и |
же самого машинного цикла. Если команда |
|||
цифровых сигналов. |
|
однобайтная, то прочитанный в фазе S4 байт |
||
После сброса микроконтроллера все ана- |
(который представляет собой КОП следую- |
|||
логовые функции выводов блокируются, и |
щей команды) игнорируется (отбрасывает- |
|||
они конфигурируются как линии цифровых |
ся), и инкрементирования счётчика команд |
|||
портов ввода/вывода. Аналоговые функ- |
не происходит. Исполнение команды будет |
|||
ции могут быть назначены линиям порта |
закончено в конце фазы S6P2. |
|
||
только после установки соответствующих |
На Рис. 7.10, а, б приведены временные |
|||
битов в регистре специальных функций |
диаграммы исполнения |
однобайтной |
и |
|
(SFR) этого порта. Запись логического нуля |
двухбайтной команд длительностью в один |
|||
в соответствующий бит регистра SFR кон- |
машинный цикл. |
|
|
|
фигурирует данный вход как аналоговый. |
Большинство команд микроконтролле- |
|||
Неиспользуемые аналоговые |
входы могут |
ров семейства С500 исполняются за один |
||
по-прежнему использоваться как линии |
машинный цикл. Только команды MUL |
|||
цифрового порта ввода/вывода. |
(умножение) и DIV (деление) требуют более |
|||
7.2.7. Тактовые сигналы ЦПУ |
двух машинных циклов (а точнее, требуется |
|||
четыре цикла). Обычно в каждом машин- |
||||
Основной тактовый сигнал |
|
ном цикле из памяти считываются два бай- |
||
|
та кода операции (КОП). Единственным |
|||
|
|
|||
Машинный цикл состоит из шести так- |
исключением из данного правила является |
|||
тов. Каждый из этих тактов разделён на две |
исполнение команды MOVX. Эта команда |
|||
фазы: фаза 1 и фаза 2. Соответственно, |
доступа к внешней памяти данных является |
|||
один машинный цикл содержит фазы, на- |
однобайтной и выполняется за 2 машинных |
|||
чиная с S1P1 (первый такт, первая фаза) и |
цикла. Во втором машинного цикле вместо |
|||
заканчивая S6P2 (шестой такт, вторая |
двух операций чтения КОП осуществляется |
|||
фаза). |
|
адресация внешней памяти данных и счи- |
||
В зависимости от версии микроконтрол- |
тывание данных из неё. На Рис. 7.10, в, г |
|||
лера семейства С500, каждый такт длится |
показаны временные диаграммы исполне- |
|||
один или два периода сигнала тактового ге- |
ния обычной однобайтной команды, зани- |
INFSEMI_2-Text.fm, стр. 271 из 589 (September 3, 2010, 17:05)
|
|
|
|
|
|
7.2. Восьмибитные микроконтроллеры |
271 |
||||
|
|
|
|
|
|
|
|||||
|
|
Команды для работы с битовыми пере- |
|
Команды обмена с аккумулятором: |
|
|
|||||
менными позволяют: |
|
|
|
Команда XCH осуществляет обмен бай- |
|||||||
установить бит в 1; |
|
|
|
|
тами между операндом-источником и |
||||||
сбросить бит в 0; |
|
|
|
|
регистром A (аккумулятором). |
|
|
||||
сформировать побитовое дополнение до |
Команда |
XCHD |
осуществляет |
обмен |
|||||||
|
двух; |
|
|
|
|
между младшим полубайтом байта, со- |
|||||
выполнить команду перехода, если бит |
|
держащегося в операнде-источнике, и |
|||||||||
|
был установлен в 1; |
|
|
|
младшим полубайтом регистра-аккуму- |
||||||
выполнить команду перехода, если бит |
|
лятора A. |
|
|
|
|
|||||
|
был сброшен в 0; |
|
|
|
Команда MOVX пересылает байт из вне- |
||||||
выполнить команду перехода, если бит |
|
шней памяти данных в аккумулятор. Ад- |
|||||||||
|
|
был установлен в 1, с последующей запи- |
|
рес ячейки внешней памяти может быть |
|||||||
|
|
сью 0 в этот бит; |
|
|
|
|
задан как через регистр DPTR (16-бит- |
||||
переписать значение бита в/из флага пе- |
|
ный), так и с использованием регистров |
|||||||||
|
|
реноса. |
|
|
|
|
R0 или R1 (8-битных). |
|
|
||
|
|
Адресуемые биты или их дополнения мо- |
Команда MOVC пересылает байт из па- |
||||||||
гут быть объединены по И или по ИЛИ с |
|
мяти программ в аккумулятор. Значение |
|||||||||
флагом переноса. Результат операции будет |
|
операнда, находящегося в аккумуляторе, |
|||||||||
записан во флаг переноса. |
|
|
|
используется в качестве индекса для |
|||||||
Типы команд |
|
|
|
|
256-байтной таблицы, выбор которой |
||||||
|
|
|
|
осуществляется через значение базового |
|||||||
|
|
|
|
|
|
|
|||||
|
|
Команды микроконтроллера можно раз- |
|
регистра (DPTR или PC). Содержимое |
|||||||
делить на четыре подгруппы: |
|
|
указанной таким образом ячейки памяти |
||||||||
|
команды обмена данными; |
|
|
программ (байт) пересылается в аккуму- |
|||||||
|
арифметические; |
|
|
|
|
лятор. |
|
|
|
|
|
|
логические; |
|
|
|
|
Команды пересылки объектного адреса: |
|||||
|
команды передачи управления. |
|
|
Команда MOV DPTR, #data16 загружает |
|||||||
Команды обмена данными |
|
|
|
16-битное слово данных (адрес объекта), |
|||||||
|
|
|
указанное |
непосредственно в качестве |
|||||||
|
|
|
|
|
|
|
|||||
|
|
Команды обмена данными, в свою оче- |
|
операнда, |
в |
регистровую |
пару |
||||
редь, делятся на три подгруппы: |
|
|
DPH/DPL. |
|
|
|
|||||
|
общего назначения; |
|
|
Арифметические команды |
|
|
|||||
|
обмена с аккумулятором; |
|
|
|
|||||||
|
|
|
|
|
|
|
|||||
|
пересылки объектного адреса. |
|
|
Микроконтроллеры семейства С500 ис- |
|||||||
|
|
За исключением команд извлечения дан- |
пользуют четыре базовые арифметические |
||||||||
ных из стека (POP) или пересылки данных |
операции. Непосредственно поддержива- |
||||||||||
непосредственно |
в |
регистр |
PSW |
ются только 8-битные операции с беззнако- |
|||||||
(MOV PSW), ни одна из этих команд не |
выми переменными. Однако благодаря на- |
||||||||||
влияет на текущее состояние флагов в ре- |
личию флага переполнения можно произ- |
||||||||||
гистре слова состояния (PSW). |
|
водить сложение и вычитание как для це- |
|||||||||
|
|
Команды обмена данными общего назначе- |
лых чисел со знаком, так и для целых чисел |
||||||||
ния: |
|
|
|
без знака. Арифметические операции также |
|||||||
Команда MOV пересылает бит или байт |
могут производиться |
непосредственно с |
|||||||||
|
|
из операнда-источника в операнд назна- |
числами в двоично-десятичном формате. |
||||||||
|
чения. |
|
|
|
|
Сложение: |
|
|
|
|
|
Команда PUSH инкрементирует указа- |
|
Команда INC (инкрементирование) до- |
|||||||||
|
|
тель стека и после этого передаёт байт из |
|
бавляет единицу к операнду-источнику и |
|||||||
|
|
операнда-источника по адресу, заданно- |
|
помещает результат в операнд-источник |
|||||||
|
|
му указателем стека. |
|
|
|
(при этом состояние флагов в регистре |
|||||
Команда POP пересылает байт операнда |
|
PSW не изменяется). |
|
|
|||||||
|
|
из ячейки памяти, адрес которой задан |
|
Команда ADD суммирует значение ре- |
|||||||
|
|
указателем стека, в операнд назначения, |
|
гистра А (аккумулятора) с операндом- |
|||||||
|
|
после чего декрементирует указатель |
|
источником и помещает результат в А |
|||||||
|
|
стека. |
|
|
|
|
(аккумулятор). |
|
|
|