Проектирование цифровых устройств на микроконтроллерах семейства MCS-51
Структурная схема микроконтроллеров семейства MCS-51: отличительные особенности, назначение выводов, блок регистров специальных функций. Карта прямоадресуемых бит. Методы адресации, граф команд пересылки, обмена и загрузки. Ввод и отображение информации.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.08.2011 |
Размер файла | 135,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Проектирование цифровых устройств на микроконтроллерах семейства MCS-51
1. Структурная схема микроконтроллеров семейства MCS-51
Принятые сокращения:
8ADR |
- |
младшие 8 бит адреса Программной Памяти (ПП); |
|
11ADR |
- |
11-ти битовый адрес в текущей странице Программной Памяти (ПП) по 2 Кбайта; |
|
16ADR |
- |
16-ти битовый адрес Программной Памяти; |
|
bit |
- |
8-ми битовый адрес прямоадресуемого бита в Резидентной Памяти Данных (РПД) или в блоке Регистров Специальных функций (РСФ); |
|
#DAT |
- |
8-ми битовый непосредственный операнд; |
|
#D16 |
- |
16-ти битовый непосредственный операнд; |
|
dir |
- |
8-ми битовый адрес прямоадресуемого байта в РПД или РСФ; |
|
DPTR |
- |
Регистр указатель данных |
|
Ft |
- |
Частота кварцевого генератора; |
|
PC |
- |
Программный счетчик; |
|
Р0, Р1, Р2, Р3 - 8- ми битовые двунаправленные Порты ввода/вывода; |
|||
PSW |
- |
Слово состояния процессора; |
|
rel |
- |
8-ми битовое смещение адреса Программной Памяти (со знаком в дополнительном коде); |
|
Ri |
- |
Регистры косвенной адресации (R0, R1); |
|
i |
- |
Двоичный код регистра косвенной адресации; |
|
Rn |
- |
Регистры Общего Назначения (РОНы) - (R0_R7); |
|
r r r |
- |
Двоичный код РОНа; |
|
SFR |
- |
Блок Регистров Специальных Функций (РСФ); |
|
S0_S7 |
- |
Страницы Программной Памяти (ПП) по 256 байт; |
|
sss |
- |
(A10,A9,A8 - три бита адреса) - двоичный код номера страницы ПП по 256 байт; |
|
SP |
- |
Указатель стека; |
|
& |
- |
Логическая команда «И» |
|
\/ |
- |
Логическая команда «ИЛИ» |
|
(+) |
- |
Логическая команда «ИСКЛЮЧАЮЩЕЕ ИЛИ» |
|
~ |
- |
Логическая команда «ИНВЕРСИЯ» |
|
<> |
- |
Неравенство |
|
[ ] |
- |
В скобках указаны номера битов; |
|
( ) |
- |
В скобках указан адрес операнда в Резидентной Памяти Данных (РПД) или Внешней Памяти Данных (ВПД); |
|
(( )) |
- |
В скобках указан адрес операнда в Памяти Программ (ПП) (Резидентной или Внешней); |
Таблица 1 - Отличительные особенности микроконтроллеров семейства MCS-51
Контроллер |
ROM/EPROM(кбайт) |
RAM(байт) |
Т/С |
Макс.Ft(МГц) |
Особенности группы |
|
8031AH |
- |
128 |
2 |
12 |
n-MOS технология,Базовая конфигурация,4 порта |
|
8051AH |
4K ROM |
128 |
2 |
12 |
||
8751H |
4K EPROM |
128 |
2 |
12 |
||
80C31BH |
- |
128 |
2 |
12, 16 |
CMOS технология,Режим понижен. энерго-потребл., 3 бита защиты |
|
80C51BH |
4K ROM |
128 |
2 |
12, 16 |
||
87C51BH |
4K EPROM |
128 |
2 |
16, 20 |
||
8032AH |
- |
256 |
3 |
12 |
n-MOS технология,4 порта,3 бита защиты |
|
8052AH |
8K ROM |
256 |
3 |
12 |
||
8752BH |
8K EPROM |
256 |
3 |
12 |
||
80С32 |
- |
256 |
3 |
20, 24 |
CMOS технология,Таймер/счетчик с прямым и обратным счетом,3 бита защиты |
|
80С52 |
8K ROM |
256 |
3 |
20, 24 |
||
87C52 |
8K EPROM |
256 |
3 |
20, 24 |
||
80C54 |
16K ROM |
256 |
3 |
20, 24 |
||
87C54 |
16K EPROM |
256 |
3 |
20, 24 |
||
80C58 |
32K ROM |
256 |
3 |
20, 24 |
||
87C58 |
32KEPROM |
256 |
3 |
20, 24 |
||
80L52 |
8K ROM |
256 |
3 |
16, 20 |
Контроллеры с пониженным напряжением питания 2,7…3,6 Вольт |
|
87L52 |
8K EPROM |
256 |
3 |
16, 20 |
||
80L54 |
16K ROM |
256 |
3 |
16, 20 |
||
87L54 |
16K EPROM |
256 |
3 |
16, 20 |
||
80L58 |
32K ROM |
256 |
3 |
16, 20 |
||
87L58 |
32KEPROM |
256 |
3 |
16, 20 |
||
80C31FA |
- |
256 |
3 |
20, 24 |
Модуль РСА,Т/С с прямым и обратным счетом |
|
80C51FA |
8K ROM |
256 |
3 |
20,24 |
||
87C51FA |
8K EPROM |
256 |
3 |
20,24 |
||
83C51FB |
16K ROM |
256 |
3 |
20, 24 |
Сторожевой таймер,3 бита защиты |
|
87C51FB |
16K EPROM |
256 |
3 |
20, 24 |
||
83C51FC |
32K ROM |
256 |
3 |
20, 24 |
||
87C51FC |
32KEPROM |
256 |
3 |
20, 24 |
||
80С51GB |
- |
256 |
3 |
20, 24 |
АЦП (8 кан/8 разрядов),2 РСА, 6 портов I/O,Сторожевой таймер |
|
83C51GB |
8K ROM |
256 |
3 |
20, 24 |
||
87C51GB |
8K EPROM |
256 |
3 |
20, 24 |
Новое семейство микроконтроллеров 8xC151Sx (MCS-151) по системе команд, набору программно доступных ресурсов, системе прерываний, набору блоков ввода-вывода и функциям выводов корпуса совместимы с микроконтроллерами 8xC51Fx. Усовершенствования коснулись, в основном, операционного ядра. Введены: конвейер команд, режим страничной адресации памяти и др.
В результате при конвейерной выборке в пределах одной страницы время выполнения команды составляет два периода частоты задающего кварцевого генератора (вместо 12 периодов у предыдущего семейства MCS-51).
Микроконтроллеры семейства MCS-251 являются развитием архитектуры семейств MCS-51 и MCS-151. В основу положена «старая» система команд и устоявшийся набор блоков ввода/вывода: три таймера-счетчика, последовательный порт, блок РСА и сторожевой таймер.
Центральный процессор микроконтроллеров MCS-251 построен с использованием конвейера команд (время выполнения команд - 2 периода частоты кварцевого генератора) и регистрового файла. Система команд дополнена инструкциями, оперирующими 16-ти и 32-х разрядными операндами.
Основой микроконтроллера (см. рис. 1) является 8-ми битовое Арифметическое-Логическое устройство (АЛУ). Память МК логически разделена: на память программ - ПП (внутреннюю или внешнюю), адресуемую 16-ти битовым счетчиком команд (СК) и память данных - внутреннюю (Резидентная память данных - РПД) 128 (или 256) байт а также внешнюю (Внешняя память данных - ВПД) до 64 Кбайт. Физически память программ реализована на ПЗУ (доступна только по чтению), а память данных - на ОЗУ (возможна запись и чтение данных).
Прием и выдача внешних сигналов осуществляется через 4 восьмибитовых порта Р0..Р3. При обращении к внешней памяти программ (ВПП) или памяти данных (ВПД) порты Р0 и Р2 используются как мультиплексированная внешняя шина Адрес/Данные. Линии порта Р3 могут выполнять также альтернативные функции (см. табл. 2).
16-ти битовый регистр DPTR формирует адрес ВПД или базовый адрес Памяти программ в команде преобразования Аккумулятора. Регистр DPTR может также использоваться как два независимых 8-ми битовых регистра (DPL и DPH) для хранения операндов.
8-ми битовый внутренний регистр команд (РК) принимает код выполняемой команды; этот код дешифрируется схемой управления, которая генерирует управляющие сигналы (см. рис. 1).
Обращение к регистрам специальных функций - РСФ (SFR - на рис. 1 они обведены пунктирной линией) возможно только с использованием прямой байтовой адресации в диапазоне адресов от 128 (80h) и более.
Размещено на http://www.allbest.ru/
Резидентная память данных (РПД) в первых моделях микроконтроллеров семейства MCS-51 имела объем 128 байт. Младшие 32 байта являются одновременно и регистрами общего назначения - РОН (4 банка по 8 РОНов). Программа может обратиться к одному из 8-ми РОНов активного банка. Выбор активного банка РОНов осуществляется программированием двух бит в регистре состояния процессора - PSW (см. табл. 5). Переключение банков РОНов упрощает выполнение подпрограмм и обработку прерываний, т.к. не нужно пересылать в стек содержимое РОНов основной программы при вызове подпрограммы.
Таблица 2 - Назначение выводов MCS-51
№ выв. |
Обозначение |
Назначение |
|
1..8 |
Р1[0..7] |
8-ми битовый квазидвунаправленный порт ввода/вывода |
|
9 |
RST |
Сигнал сброса (активный уровень - высокий); Сигнал RST обнуляет : PC и большинство Регистров Специальных Функций (SFR), запрещая все прерывания и работу таймеров; выбирает Банк РОНов 0; записывает в порты Р0_Р3 "все единицы", подготавливая их на ввод; записывает код 07H в указатель стека (SP); |
|
10..17 |
P3[0..7] P3[0] P3[1] P3[2] P3[3] P3[4] P3[5] P3[6] P3[7] |
8-ми битовый квазидвунаправленный порт ввода/вывода; после записи в соответствующий разряд "1" - выполняет дополнительные (альтернативные) функции: Вход последовательного порта - RxD; Выход последовательного порта - TxD; Вход внешнего прерывания 0 - ~INT0; Вход внешнего прерывания 1 - ~INT1; Вход таймера/счетчика 0 - Т0; Вход таймера/счетчика 1 - Т1; Выход строб. сигнала при записи в ВПД - ~WR; Выход строб. сигнала при чтении из ВПД - ~RD; |
|
18, 19 |
X1, X2 |
Выводы для подключения кварцевого резонатора или LC-контура; |
|
20 |
GND |
Общий вывод; |
|
21..28 |
P2[0..7] |
8-ми битовый квазидвунаправленный порт ввода /вывода; или выход адреса A[8_15] в режиме работы с внешней памятью (ВПП или ВПД); |
|
29 |
PME |
Строб чтения Внешней Памяти Программ, выда-ется только при обращении к внешнему ПЗУ; |
|
30 |
ALE |
Строб адреса Внешней памяти (ВПП или ВПД); |
|
31 |
ЕА |
Отключение РПП, уровень "0" на этом входе пе-реводит МК на выборку команд только из ВПП; |
|
39..32 |
Р0[0..7] |
8-ми битовый двунаправленный порт ввода/ вывода; при обращении к Внешней Памяти выдает адреса A[0_7] (которые записываются во внешний регистр по сигналу ALE), а затем обменивается байтом синхронно с сигналом ~PME (для команд) или ~WR,~RD (для данных в ВПД), при обращении к Внешней Памяти в регистр порта Р0 записываются все единицы, разрушая хранимую там информацию; |
|
40 |
Ucc |
Вывод напряжения питания |
Обращение к РПД возможно с использованием косвенной или прямой байтовой адресации.
Расширенная область РПД (у микроконтроллеров семейства MCS-52 и последующих семейств) с адреса 128 (80h) до 255 (FFh) может адресоваться только с использованием косвенного метода адресации.
Таблица 3 - Блок Регистров Специальных Функций (s f r)
Адрес Dir |
Мнемо-код |
Наименование |
|
0E0h |
* ACC |
Аккумулятор |
|
0F0h |
* B |
Регистр расширитель аккумулятора |
|
0D0h |
* PSW |
Слово состояния процессора |
|
0B0h |
* P3 |
Порт 3 |
|
0A0h |
* P2 |
Порт 2 |
|
90h |
* P1 |
Порт 1 |
|
80h |
* P0 |
Порт 0 |
|
0B8h |
* IP |
Регистр приоритетов прерываний |
|
0A8h |
* IE |
Регистр маски прерываний |
|
99h |
SBUF |
Буфер последовательного приемо-передатчика |
|
98h |
* SCON |
Регистр управления/статуса последовательного порта |
|
89h |
TMOD |
Регистр режимов таймеров/счетчиков |
|
88h |
* TCON |
Регистр управления/статуса таймеров/счетчиков |
|
8Dh |
TH1 |
Таймер 1 (старший байт) |
|
8Bh |
TL1 |
Таймер 1 (младший байт) |
|
8Ch |
TH0 |
Таймер 0 (старший байт) |
|
8Ah |
TL0 |
Таймер 0 (младший байт) |
|
83h |
DPH |
Регистр-указатель данных (DPTR)(старший байт) |
|
82h |
DPL |
Регистр-указатель данных (DPTR)(младший байт) |
|
81h |
SP |
Регистр-указатель стека |
|
87h |
PCON |
Регистр управления мощностью потребления |
* - Отмеченные регистры допускают адресацию отдельных бит (см. табл. 4)
2. Программная модель MCS-51
2.1 Карта прямоадресуемых бит
В Резидентной Памяти Данных В блоке Регистров Спец. Функций
7Fh |
||||||||||||||||||
Адреса РПД |
Адреса |
|||||||||||||||||
SFR |
||||||||||||||||||
30h |
Регистр В |
|||||||||||||||||
2Fh |
7F |
7E |
7D |
7C |
7B |
7A |
79 |
78 |
0F0h |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
|
2Eh |
77 |
76 |
75 |
74 |
73 |
72 |
71 |
70 |
||||||||||
2Dh |
6F |
6E |
6D |
6C |
6B |
6A |
69 |
68 |
||||||||||
2Ch |
67 |
66 |
65 |
64 |
63 |
62 |
61 |
60 |
Регистр АСС |
|||||||||
2Bh |
5F |
5E |
5D |
5C |
5B |
5A |
59 |
58 |
0E0h |
E7 |
E6 |
E5 |
E4 |
E3 |
E2 |
E1 |
E0 |
|
2Ah |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
||||||||||
29h |
4F |
4E |
4D |
4C |
4B |
4A |
49 |
48 |
||||||||||
28h |
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
||||||||||
27h |
3F |
3E |
3D |
3C |
3B |
3A |
39 |
38 |
||||||||||
26h |
37 |
36 |
35 |
34 |
33 |
32 |
31 |
30 |
IP |
|||||||||
25h |
2F |
2E |
2D |
2C |
2B |
2A |
29 |
28 |
0B8h |
BC |
BB |
BA |
B9 |
B8 |
||||
24h |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
||||||||||
23h |
1F |
1E |
1D |
1C |
1B |
1A |
19 |
18 |
Порт Р3 |
|||||||||
22h |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
0B0h |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
|
21h |
0F |
0E |
0D |
0C |
0B |
0A |
09 |
08 |
||||||||||
20h |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
IE |
|||||||||
1Fh |
R7 |
0A8h |
AF |
AC |
AB |
AA |
A9 |
A8 |
||||||||||
Порт Р2 |
||||||||||||||||||
18h |
R0 |
0A0h |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
||||||||
17h |
R7 |
|||||||||||||||||
SCON |
||||||||||||||||||
98h |
9F |
9E |
9D |
9C |
9B |
9A |
99 |
98 |
||||||||||
10h |
R0 |
|||||||||||||||||
R7 |
Порт Р1 |
|||||||||||||||||
90h |
97 |
96 |
95 |
94 |
93 |
92 |
91 |
90 |
||||||||||
08h |
R0 |
TCON |
||||||||||||||||
07h |
R7 |
88h |
8F |
8E |
8D |
8C |
8B |
8A |
89 |
88 |
||||||||
Порт Р0 |
||||||||||||||||||
00h |
R0 |
80h |
87 |
86 |
85 |
84 |
83 |
82 |
81 |
80 |
2.2 Типы команд MCS-51
Размещено на http://www.allbest.ru/
Почти половина команд выполняется за 1 машинный цикл (МЦ) (см. таблицы 8..12). При частоте кварцевого генератора 12 МГц время выполнения такой команды - 1 мкс. Остальные команды выполняются за 2 машинных цикла, т.е. за 2мкс (см. таблицы 8..12). Только команды умножения (MUL) и деления (DIV) выполняются за 4 машинных цикла.
За время одного машинного цикла происходит два обращения к Памяти Программ (внутренней или внешней) для считывания двух байтов команды или одно обращение к Внешней Памяти Данных (ВПД).
3. Методы (способы) адресации MCS-51
1. РЕГИСТРОВАЯ АДРЕСАЦИЯ - 8-ми битовый операнд находится в РОНе выбранного банка регистров;
2 НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ - операнд находится во втором (а для 16-ти битового операнда и в третьем) байте команды;
3 КОСВЕННАЯ АДРЕСАЦИЯ - операнд находится в Памяти Данных (РПД или ВПД), а адрес ячейки памяти содержится в одном из РОНов косвенной адресации (R0 или R1); в командах PUSH и POP адрес содержится в указателе стека SP; регистр DPTR может содержать адрес ВПД объемом до 64К;
4 ПРЯМАЯ БАЙТОВАЯ АДРЕСАЦИЯ - (dir) - используется для обращения к ячейкам РПД (адреса 00h…7Fh) и к регистрам специальных функций SFR (адреса 80h…0FFh);
5 ПРЯМАЯ БИТОВАЯ АДРЕСАЦИЯ - (bit) - используется для обращения к отдельно адресуемым 128 битам, расположенным в ячейках РПД по адресам 20H…2FH и к отдельно адресуемым битам регистров специальных функций (см. табл. 2.3);
6 КОСВЕННАЯ ИНДЕКСНАЯ АДРЕСАЦИЯ - упрощает просмотр таблиц в Памяти Программ, адрес ПП определяется по сумме базового регистра (PC или DPTR) и индексного регистра (Аккумулятора);
7 НЕЯВНАЯ (ВСТРОЕННАЯ) АДРЕСАЦИЯ - в коде команды содержится неявное (по умолчанию) указание на один из операндов (чаще всего на Аккумулятор).
ФОРМАТ СЛОВА СОСТОЯНИЯ ПРОЦЕССОРА (PSW)
Прямой байтовый адрес PSW : dir - 0D0H.
Допускается адресация отдельных бит PSW : bit - 0D0H_0D7H.
C - флаг переноса, выполняет также функции «булевого Аккумулято-ра» в командах, оперирующих с битами;
AC - флаг вспомогательного (дополнительного) переноса;
F0 - флаг пользователя - устанавливается, сбрасывается и проверяется программно;
OV - Флаг арифметического переполнения; его значение определяется операцией "Исключающее ИЛИ" сигналов входного и выходного переносов старшего разряда АЛУ; единичное значение этого флага указывает на то, что результат арифметической операции в дополнительном коде занял знаковый разряд; при выполнении операции деления флаг OV сбрасывается, а в случае деления на ноль - устанавливается; при умножении флаг OV устанавливается, если результат больше 255 (0FFH);
Разряд PSW[1] - Резервный, содержит триггер, доступный по записи или чтению; P - флаг паритета - является дополнением аккумулятора до четности; формируется комбинационной схемой (программно доcтупен только по чтению).
В микроконтроллерах MCS-51 отсутствует флаг «Z». Но в командах условного перехода (JZ, JNZ) проверяется комбинационной схемой текущее (нулевое) содержимое Аккумулятора
Размещено на http://www.allbest.ru/
Таблица 5 -- Таблица ассемблера MCS-51
\ Rn |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
\ @Ri |
R0 |
R1 |
Прямая адресация |
Непосредственная |
|||||||
MOV A,Rn |
E8 |
E9 |
EA |
EB |
EC |
ED |
EE |
EF |
MOV A,@Ri |
E6 |
E7 |
MOV A |
E5 |
, dir |
MOV A |
74 |
,#DAT |
|||
MOV Rn,A |
F8 |
F9 |
FA |
FB |
FC |
FD |
FE |
FF |
MOV @Ri,A |
F6 |
F7 |
MOV dir |
F5 |
, A |
MOV dir |
75 |
,#DAT |
|||
MOV Rn |
78 |
79 |
7A |
7B |
7C |
7D |
7E |
7F |
,#DAT |
MOV @Ri |
76 |
77 |
,#DAT |
MOV dir |
B5 |
, dir |
||||
MOV Rn |
A8 |
A9 |
AA |
AB |
AC |
AD |
AE |
AF |
, dir |
MOV @Ri |
A6 |
A7 |
, dir |
PUSH |
C0 |
, dir |
MOV DPTR |
90 |
,#D16 |
|
MOV dir |
B8 |
B9 |
BA |
BB |
BC |
BD |
BE |
BF |
, Rn |
MOV dir |
B6 |
B7 |
, @Ri |
POP |
D0 |
, dir |
||||
XCH A,Rn |
C8 |
C9 |
CA |
CB |
CC |
CD |
CE |
CF |
XCH A,@Ri |
C6 |
C7 |
XCH A |
C5 |
, dir |
||||||
SWAP A |
C4 |
<Обмен тетрад Аккумулятора |
XCHD A,@Ri |
D6 |
D7 |
<Обмен младших тетрад |
||||||||||||||
ПересылкиВПД с Акк |
MOVX A,@DPTR |
E0 |
MOVX A,@Ri |
E2 |
E3 |
Пересылки из Пам. Прогр. в Акк |
MOVC A,@A+DPTR |
93 |
||||||||||||
MOVX @DPTR,A |
F0 |
MOVX @Ri,A |
F2 |
F3 |
MOVC A,@A+PC |
B3 |
Арифметические и логические команды
Комментарии |
\Rn |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
\@Ri |
R0 |
R1 |
Прям. адресация |
Непосредственная |
|||||
А<А+( ) |
ADD A,Rn |
28 |
29 |
2A |
2B |
2C |
2D |
2E |
2F |
ADD A,@Ri |
26 |
27 |
ADD A |
25 |
,dir |
ADD A, |
24 |
,#DAT |
|
A<А+( )+C |
ADDC A,Rn |
38 |
39 |
3A |
3B |
3C |
3D |
3E |
3F |
ADDC A,@Ri |
36 |
37 |
ADDC A |
35 |
,dir |
ADDC A |
34 |
,#DAT |
|
A<А-( )-C |
SUBB A,Rn |
98 |
99 |
9A |
9B |
9C |
9D |
9E |
9F |
SUBB A,@Ri |
96 |
97 |
SUBB A |
95 |
,dir |
SUBB A |
94 |
,#DAT |
|
( )< ( ) + 1 |
INC Rn |
08 |
09 |
0A |
0B |
0C |
0D |
0E |
0F |
INC @Ri |
06 |
07 |
INC |
05 |
,dir |
INC A |
04 |
||
( )< ( ) - 1 |
DEC Rn |
18 |
19 |
1A |
1B |
1C |
1D |
1E |
1F |
DEC @Ri |
16 |
17 |
DEC |
15 |
,dir |
DEC A |
14 |
||
А<А & ( ) |
ANL A,Rn |
58 |
59 |
5A |
5B |
5C |
5D |
5E |
5F |
ANL A,@Ri |
56 |
57 |
ANL A |
55 |
,dir |
ANL A |
54 |
,#DAT |
|
( )<( ) & А |
ANL dir |
52 |
,A |
ANL dir |
53 |
,#DAT |
|||||||||||||
А<А \/ ( ) |
ORL A,Rn |
48 |
49 |
4A |
4B |
4C |
4D |
4E |
4F |
ORL A,@Ri |
46 |
47 |
ORL A |
45 |
,dir |
ORL A |
44 |
,#DAT |
|
( )<( ) \/ А |
ORL dir |
42 |
,A |
ORL dir |
43 |
,#DAT |
|||||||||||||
А<А (+) ( ) |
XRL A,Rn |
68 |
69 |
6A |
6B |
6C |
6D |
6E |
6F |
XRL A,@Ri |
66 |
67 |
XRL A |
65 |
,dir |
XRL A |
64 |
,#DAT |
|
( )<( ) (+) А |
XRL dir |
62 |
,A |
XRL dir |
63 |
,#DAT |
|||||||||||||
BA < A ? B |
MUL AB |
A4 |
INC DPTR |
52 |
Сброс |
CLR A |
E4 |
Циклический сдвиг |
RL A |
23 |
RR A |
03 |
|||||||
A . B < A / B |
DIV AB |
B4 |
DA A |
D4 |
Инверсия |
CPL A |
F4 |
Сдвиг через перенос |
RLC A |
33 |
RRC A |
13 |
Флаг OV при выполнении операции деления - сбрасывается, а в случае деления на ноль - устанавливается; при умножении флаг OV устанавливается, если результат больше 255 (0FFH)
Флаги : Р (четности Аккумулятора) и Z (нулевого содержимого Аккумулятора) формируются комбинационными схемами. Эти флаги модифицируются любыми командами, изменяющими содержимое Аккумулятора
Таблица 7 - Таблица дизассемблера MCS-51
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
||
0 |
NOP |
AJMP S0+8ADR |
LJMP 16ADR |
RR A |
INC A |
INC dir |
INC @R0 |
INC @R1 |
|
1 |
JBC bit,rel |
ACALL S0+8ADR |
LCALL 16ADR |
RRC A |
DEC A |
DEC dir |
DEC @R0 |
DEC @R1 |
|
2 |
JB bit,rel |
AJMP S1+8ADR |
RET |
RL A |
ADD A,#DAT |
ADD A,dir |
ADD A,@R0 |
ADD A,@R1 |
|
3 |
JNB bit,rel |
ACALL S1+8ADR |
RETI |
RLC A |
ADDC A,#DAT |
ADDC A,dir |
ADDC A,@R0 |
ADDC A,@R1 |
|
4 |
JC rel |
AJMP S2+8ADR |
ORL dir,A |
ORL dir, #DAT |
ORL A,#DAT |
ORL A,dir |
ORL A,@R0 |
ORL A,@R1 |
|
5 |
JNC rel |
ACALL S2+8ADR |
ANL dir,A |
ANL dir, #DAT |
ANL A,#DAT |
ANL A,dir |
ANL A,@R0 |
ANL A,@R1 |
|
6 |
JZ rel |
AJMP S3+8ADR |
XRL dir,A |
XRL dir, #DAT |
XRL A,#DAT |
XRL A,dir |
XRL A,@R0 |
XRL A,@R1 |
|
7 |
JNZ rel |
ACALL S3+8ADR |
ORL C,bit |
JMP @A +DPTR |
MOV A,#DAT |
MOV dir, #DAT |
MOV @R0, #DAT |
MOV @R1, #DAT |
|
8 |
SJMP rel |
AJMP S4+8ADR |
ANL C,bit |
MOVC A,@A+PC |
DIV AB |
MOV dir,dir |
MOV dir,@R0 |
MOV dir,@R1 |
|
9 |
MOV DPTR, #D16 |
ACALL S4+8ADR |
MOV bit,C |
MOVC A,@A+ DPTR |
SUBB A,#DAT |
SUBB A,dir |
SUBB A,@R0 |
SUBB A,@R1 |
|
A |
ORL C,/bit |
AJMP S5+8ADR |
MOV C,bit |
INC DPTR |
MUL AB |
MOV @R0,dir |
MOV @R1,dir |
||
B |
ANL C,/bit |
ACALL S5+8ADR |
CPL bit |
CPL C |
CJNE A,#DAT,rel |
CJNE A,dir,rel |
CJNE @R0,#D,rel |
CJNE @R1,#D.rel |
|
C |
PUSH Dir |
AJMP S6+8ADR |
CLR bit |
CLR C |
SWAP A |
XCH A,dir |
XCH A,@R0 |
XCH A,@R1 |
|
D |
POP dir |
ACALL S6+8ADR |
SETB bit |
SETB C |
DA A |
DJNZ dir,rel |
XCHD A,@R0 |
XCHD A,@R1 |
|
E |
MOVX A, @DPTR |
AJMP S7+8ADR |
MOVX A,@R0 |
MOVX A,@R1 |
CLR A |
MOV A,dir |
MOV A,@R0 |
MOV A,@R1 |
|
F |
MOVX @DPTR,A |
ACALL S7+8ADR |
MOVX @R0,A |
MOVX @R1,A |
CPL A |
MOV dir,A |
MOV @R0,A |
MOV @R1,A |
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Таблица дизассемблера MCS-51
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
||
INC R0 |
INC R1 |
INC R2 |
INC R3 |
INC R4 |
INC R5 |
INC R6 |
INC R7 |
0 |
|
DEC R0 |
DEC R1 |
DEC R2 |
DEC R3 |
DEC R4 |
DEC R5 |
DEC R6 |
DEC R7 |
1 |
|
ADD A,R0 |
ADD A,R1 |
ADD A,R2 |
ADD A,R3 |
ADD A,R4 |
ADD A,R5 |
ADD A,R6 |
ADD A,R7 |
2 |
|
ADDC A,R0 |
ADDC A,R1 |
ADDC A,R2 |
ADDC A,R3 |
ADDC A,R4 |
ADDC A,R5 |
ADDC A,R6 |
ADDC A,R7 |
3 |
|
ORL A,R0 |
ORL A,R1 |
ORL A,R2 |
ORL A,R3 |
ORL A,R4 |
ORL A,R5 |
ORL A,R6 |
ORL A,R7 |
4 |
|
ANL A,R0 |
ANL A,R1 |
ANL A,R2 |
ANL A,R3 |
ANL A,R4 |
ANL A,R5 |
ANL A,R6 |
ANL A,R7 |
5 |
|
XRL A,R0 |
XRL A,R1 |
XRL A,R2 |
XRL A,R3 |
XRL A,R4 |
XRL A,R5 |
XRL A,R6 |
XRL A,R7 |
6 |
|
MOV R0, #DAT |
MOV R1, #DAT |
MOV R2, #DAT |
MOV R3, #DAT |
MOV R4, #DAT |
MOV R5, #DAT |
MOV R6, #DAT |
MOV R7, #DAT |
7 |
|
MOV dir,R0 |
MOV dir,R1 |
MOV dir,R2 |
MOV dir,R3 |
MOV dir,R4 |
MOV dir,R5 |
MOV dir,R6 |
MOV dir,R7 |
8 |
|
SUBB A,R0 |
SUBB A,R1 |
SUBB A,R2 |
SUBB A,R3 |
SUBB A,R4 |
SUBB A,R5 |
SUBB A,R6 |
SUBB A,R7 |
9 |
|
MOV R0,dir |
MOV R1,dir |
MOV R2,dir |
MOV R3,dir |
MOV R4,dir |
MOV R5,dir |
MOV R6,dir |
MOV R7,dir |
A |
|
CJNE R0,#D, rel |
CJNE R1,#D, rel |
CJNE R2,#D, rel |
CJNE R3,#D, rel |
CJNE R4,#D, rel |
CJNE R5,#D, rel |
CJNE R6,#D, rel |
CJNE R7,#D, rel |
B |
|
XCH A,R0 |
XCH A,R1 |
XCH A,R2 |
XCH A,R3 |
XCH A,R4 |
XCH A,R5 |
XCH A,R6 |
XCH A,R7 |
C |
|
DJNZ R0,rel |
DJNZ R1,rel |
DJNZ R2,rel |
DJNZ R3,rel |
DJNZ R4,rel |
DJNZ R5,rel |
DJNZ R6,rel |
DJNZ R7,rel |
D |
|
MOV A,R0 |
MOV A,R1 |
MOV A,R2 |
MOV A,R3 |
MOV A,R4 |
MOV A,R5 |
MOV A,R6 |
MOV A,R7 |
E |
|
MOV R0,A |
MOV R1,A |
MOV R2,A |
MOV R3,A |
MOV R4,A |
MOV R5,A |
MOV R6,A |
MOV R7,A |
F |
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Таблица 8 - Команды пересылки, обмена и загрузки
Комментарии |
Мнемокод |
К О П |
ТК |
Б |
МЦ |
|
A < Rn; Пересылка из РОНа в Акк |
MOV A,Rn |
11101rrr |
1 |
1 |
1 |
|
A < (Ri); Пересыдка из РПД в Акк |
MOV A,@Ri |
1110011i |
1 |
1 |
1 |
|
A < (dir); Пересылка из РПД в Акк |
MOV A,dir |
11100101 |
3 |
2 |
1 |
|
A < #DAT; Загрузка байта в Акк |
MOV A,#DAT |
01110100 |
2 |
2 |
1 |
|
Rn < A; Пересылка из Акк. в РОН |
MOV Rn,A |
11111rrr |
1 |
1 |
1 |
|
(Ri) < A; Пересылка из Акк. в РПД |
MOV @Ri,A |
1111011i |
1 |
1 |
1 |
|
(dir) < A; Пересылка из Акк. в РПД |
MOV dir,A |
11110101 |
3 |
2 |
1 |
|
(dir) < #DAT; Загрузка байта в РПД |
MOV dir,#DAT |
01110101 |
7 |
3 |
2 |
|
Rn < #DAT; Загрузка байта в РОН |
MOV Rn,#DAT |
01111rrr |
2 |
2 |
1 |
|
(Ri) < #DAT; Загрузка байта в РПД |
MOV @Ri,#DAT |
0111011i |
2 |
2 |
1 |
|
(dir)<(dir); Пересыл. из РПД в РПД |
MOV dir,dir |
10000101 |
9 |
3 |
2 |
|
Rn < (dir); Пересылка из РПД в РОН |
MOV Rn, dir |
10101rrr |
3 |
2 |
2 |
|
(Ri)<(dir); Пересылка из РПД в РПД |
MOV @RI,dir |
1010011i |
3 |
2 |
2 |
|
(dir)<Rn; Пересылка из РОНа в РПД |
MOV dir, Rn |
10001rrr |
3 |
2 |
2 |
|
(dir)<(Ri); Пересылка из РПД в РПД |
MOV dir,@Ri |
1000011i |
3 |
2 |
2 |
|
DPTR<#D16; Загрузка слова в DPTR |
MOV DPTR,#D16 |
10010000 |
13 |
3 |
2 |
|
A - Rn; Обмен Акк. с РОНом |
XCH A, Rn |
11001rrr |
1 |
1 |
1 |
|
A - (Ri); Обмен Акк. с РПД |
XCH A, @Ri |
1100011i |
1 |
1 |
1 |
|
A -(dir); Обмен Акк. с РПД |
XCH A, dir |
11000101 |
3 |
2 |
1 |
|
Обмен младших тетрад Акк. с РПД |
XCHD A, @Ri |
1101011i |
1 |
1 |
1 |
|
Обмен тетрад Аккумулятора (Циклический сдвиг Акк. на 4 бита) |
SWAP A |
11000100 |
1 |
1 |
1 |
|
SP<SP+1;(SP)<(dir); Запись в стек |
PUSH dir |
11000000 |
3 |
2 |
2 |
|
(dir)<(SP);SP<SP-1; Чтение из стека |
POP dir |
11010000 |
3 |
2 |
2 |
|
A<(DPTR);Пересылка из ВПД в Акк. |
MOVX A,@DPTR |
11100000 |
1 |
1 |
2 |
|
(DPTR)<A;Пересылка из Акк. в ВПД |
MOVX @DPTR,A |
11110000 |
1 |
1 |
2 |
|
A<(Ri); Пересылка из ВПД в Акк. |
MOVX A,@Ri |
1110001i |
1 |
1 |
2 |
|
(Ri)<A; Пересылка из Акк. в ВПД |
MOVX @Ri,A |
1111001i |
1 |
1 |
2 |
|
A < ((A+DPTR)); Пересылка байта из ПП в Акк. |
MOVC A,@A+DPTR |
10010011 |
1 |
1 |
2 |
|
A<((A+PC));Пересылка из ПП в Акк. |
MOVC A,@A+PC |
10000011 |
1 |
1 |
2 |
Таблица 9 - Арифметические и логические команды
Комментарии |
Мнемокод |
К О П |
ТК |
Б |
МЦ |
|
A<A+Rn; Сложение Акк. с РОНом |
ADD A,Rn |
00101rrr |
1 |
1 |
1 |
|
A<A+(Ri); Сложение Акк. с РПД |
ADD A, @Ri |
0010011i |
1 |
1 |
1 |
|
A<A+(dir); Сложение Акк. с РПД |
ADD A, dir |
00100101 |
3 |
2 |
1 |
|
A<A+#DAT; Сложение Акк. с #DAT |
ADD A,#DAT |
00100100 |
2 |
2 |
1 |
|
A < A + Rn + C; |
ADDC A, Rn |
00111rrr |
1 |
1 |
1 |
|
A < A + (Ri) + C; |
ADDC A, @Ri |
0011011i |
1 |
1 |
1 |
|
A < A + (dir) + C; |
ADDC A, dir |
00110101 |
3 |
2 |
1 |
|
A < A + #DAT + C; |
ADDC A,#DAT |
00110100 |
2 |
2 |
1 |
|
Десятичная коррекция Аккумулятора после сложения |
DA A |
11010100 |
1 |
1 |
1 |
|
A < A - Rn - C; |
SUBB A,Rn |
10011rrr |
1 |
1 |
1 |
|
A < A - (Ri) - C; |
SUBB A, @Ri |
1001011i |
1 |
1 |
1 |
|
A < A - (dir) - C; |
SUBB A,dir |
10010101 |
3 |
2 |
1 |
|
A < A - #DAT - C; |
SUBB A,#DAT |
10010100 |
2 |
2 |
1 |
|
A < = A + 1; Инкремент Аккумул. |
INC A |
00000100 |
1 |
1 |
1 |
|
Rn < Rn + 1; Инкремент РОНа |
INC Rn |
00001rrr |
1 |
1 |
1 |
|
(Ri) < (Ri) + 1; Инкремент РПД |
INC @Ri |
0000011i |
1 |
1 |
1 |
|
(dir) < (dir) + 1; Инкремент РПД |
INC dir |
00000101 |
3 |
2 |
1 |
|
DPTR<DPTR+1; Инкремент DPTR |
INC DPTR |
10100011 |
1 |
1 |
2 |
|
A < A - 1; Декремент Аккумул. |
DEC A |
00010100 |
1 |
1 |
1 |
|
Rn < Rn - 1; Декремент РОНа |
DEC Rn |
00011rrr |
1 |
1 |
1 |
|
(Ri) < (Ri) - 1; Декремент РПД |
DEC @Ri |
0001011i |
1 |
1 |
1 |
|
(dir) < (dir) - 1; Декремент РПД |
DEC dir |
00010101 |
3 |
2 |
1 |
|
BA < A * B; Умножение A на B, B < старш. байт, A < младш. байт |
MUL AB |
10100100 |
1 |
1 |
4 |
|
A.B < A / B; Деление A на B, A < байт частного, B < остаток |
DIV AB |
10000100 |
1 |
1 |
4 |
|
A < A & Rn; Лог. "И" Акк. и РОНа |
ANL A,Rn |
01011rrr |
1 |
1 |
1 |
|
A < A & (Ri); Лог."И" Акк. и РПД |
ANL A,@Ri |
0101011i |
1 |
1 |
1 |
|
A < A & (dir); Лог."И" Акк. и РПД |
ANL A,dir |
01010101 |
3 |
2 |
1 |
|
A<A & #DAT; Лог."И" Акк. и #DAT |
ANL A,#DAT |
01010100 |
2 |
2 |
1 |
|
(dir) < (dir) & A; Лог."И" РПД и Акк |
ANL dir, A |
01010010 |
3 |
2 |
1 |
|
(dir) < (dir) & #DAT ; |
ANL dir,#DAT |
01010011 |
7 |
3 |
2 |
|
A < A \/ Rn; Лог."ИЛИ" Акк. и РОНа |
ORL A,Rn |
01001rrr |
1 |
1 |
1 |
|
A < A \/ (Ri); Лог."ИЛИ" Акк. и РПД |
ORL A,@Ri |
0100011i |
1 |
1 |
1 |
|
A < A \/ (dir);Лог."ИЛИ" Акк. и РПД |
ORL A, dir |
01000101 |
3 |
2 |
1 |
|
A < A \/ #DAT; |
ORL A,#DAT |
01000100 |
2 |
2 |
1 |
|
(dir) < (dir) \/ A; |
ORL dir, A |
01000010 |
3 |
2 |
1 |
|
(dir) < (dir) \/ #DAT; |
ORL dir,#DAT |
01000011 |
7 |
3 |
2 |
|
A<A (+) Rn;"Искл.ИЛИ" Акк. и РОН |
XRL A, Rn |
01101rrr |
1 |
1 |
1 |
|
A < A (+) (Ri); |
XRL A, @Ri |
0110011i |
1 |
1 |
1 |
|
A < A (+) (dir); |
XRL A, dir |
01100101 |
3 |
2 |
1 |
|
A < A (+) #DAT; |
XRL A,#DAT |
01100100 |
2 |
2 |
1 |
|
(dir) < (dir) (+) A; |
XRL dir,A |
01100010 |
3 |
2 |
1 |
|
(dir) < (dir) (+) #DAT; |
XRL dir,#DAT |
01100011 |
7 |
3 |
2 |
|
A < 0; Сброс Аккумулятора |
CLR A |
11100100 |
1 |
1 |
1 |
|
A < ~A; Инверсия Аккумулятора |
CPL A |
11110100 |
1 |
1 |
1 |
|
Циклический сдвиг влево Акк. |
RL A |
00100011 |
1 |
1 |
1 |
|
Цикл.сдвиг влево Акк. через перенос |
RLC A |
00110011 |
1 |
1 |
1 |
|
Циклический сдвиг вправо Акк. |
RR A |
00000011 |
1 |
1 |
1 |
|
Цикл.сдвиг вправо Акк.через перенос |
RRC A |
00010011 |
1 |
1 |
1 |
Таблица 10 - Операции с битами
Комментарии |
Мнемокод |
К О П |
ТК |
Б |
МЦ |
|
С < 0; Сброс флага С |
CLR C |
11000011 |
1 |
1 |
1 |
|
C < 1; Установка флага С |
SETB C |
11010011 |
1 |
1 |
1 |
|
С < ~C; Инверсия флага С |
CPL C |
10110011 |
1 |
1 |
1 |
|
(bit) < 0; Сброс прямоадресуем.бита |
CLR bit |
11000010 |
4 |
2 |
1 |
|
(bit) < 1; Установка "бита" |
SETB bit |
11010010 |
4 |
2 |
1 |
|
(bit) < ~(bit); Инверсия "бита" |
CPL bit |
10110010 |
4 |
2 |
1 |
|
C < C & (bit); Лог."И" С и "бита" |
ANL C,bit |
10000010 |
4 |
2 |
2 |
|
C < C & ~(bit); "И" С и инверс.бита |
ANL C,/bit |
10110000 |
4 |
2 |
2 |
|
C < C \/ (bit); Лог."ИЛИ" С и бита |
ORL C,bit |
01110010 |
4 |
2 |
2 |
|
C < C \/ ~(bit); Лог."ИЛИ" С и инверсии прямоадресуемого бита |
ORL C,/bit |
10100000 |
4 |
2 |
2 |
|
C < (bit); Пересылка из прямоад- ресуемого бита во флаг С |
MOV C,bit |
10100010 |
4 |
2 |
1 |
|
(bit) < C; Пересылка из С в "бит" |
MOV bit,C |
10010010 |
4 |
2 |
2 |
Таблица 11 - Команды условных переходов
Комментарии |
Мнемокод |
К О П |
ТК |
Б |
МЦ |
|
PC < PC + 2 + rel, если А = 0 |
JZ rel |
01100000 |
5 |
2 |
2 |
|
PC < PC + 2 + rel, если А <> 0 |
JNZ rel |
01110000 |
5 |
2 |
2 |
|
PC < PC + 2 + rel, если флаг С = 1 |
JC rel |
01000000 |
5 |
2 |
2 |
|
PC < PC + 2 + rel, если флаг С = 0 |
JNC rel |
01010000 |
5 |
2 |
2 |
|
PC < PC + 3 + rel, если (bit) = 1 |
JB bit,rel |
00100000 |
11 |
3 |
2 |
|
PC < PC + 3 + rel, если (bit) = 0 |
JNB bit,rel |
00110000 |
11 |
3 |
2 |
|
PC < PC + 3 + rel, если (bit) = 1, (bit) < 0 |
JBC bit,rel |
00010000 |
11 |
3 |
2 |
|
PC < PC + 3 + rel, если A<>#DAT, C < 1, если A < #DAT, С < 0, если A > #DAT |
CJNE A, #DAT, rel |
10110100 |
10 |
3 |
2 |
|
PC < PC + 3 + rel, если Rn<>#DAT, C < 1, если Rn < #DAT, С < 0, если Rn > #DAT |
CJNE Rn, #DAT, rel |
10111rrr |
10 |
3 |
2 |
|
PC<PC + 3 + rel, если(@Ri)<>#DAT, C < 1, если (@Ri) < #DAT, С < 0, если (@Ri) > #DAT |
CJNE @Ri, #DAT, rel |
1011011i |
10 |
3 |
2 |
|
PC < PC + 3 + rel, если A<>(dir), C < 1, если A < (dir), С < 0, если A > (dir) |
CJNE A, dir, rel |
10110101 |
8 |
3 |
2 |
|
PC < PC + 2 + rel, если Rn - 1 <> 0 |
DJNZ Rn, rel |
11011rrr |
5 |
2 |
2 |
|
PC < Pc + 3 + rel, если (dir) - 1 <> 0 |
DJNZ dir,rel |
11010101 |
8 |
3 |
2 |
Таблица 12 - Команды безусловных переходов
Комментарии |
Мнемокод |
К О П |
ТК |
Б |
МЦ |
|
PC[0_15]<16ADR; Длинный переход |
LJMP 16ADR |
00000010 |
12 |
3 |
2 |
|
PC[0_11] < 11ADR; Переход внутри страницы в 2 Кбайта |
AJMP 11ADR |
sss00001 |
6 |
2 |
2 |
|
PC < PC + 2 + rel; Относит.переход |
SJMP rel |
10000000 |
5 |
2 |
2 |
|
PC < A + DPTR; Косвенный относительный переход |
JMP @A+DPTR |
01110011 |
1 |
1 |
2 |
|
(SP) < PC + 3; PC[0_15] < 16ADR; Длинный вызов подпрограммы |
LCALL 16ADR |
00010010 |
12 |
3 |
2 |
|
(SP) < PC + 2; PC[0_10] < 11ADR; Вызов подпр. внутри страницы в 2Кб |
ACALL 11ADR |
sss10001 |
6 |
2 |
2 |
|
PC < (SP); Возврат из подпрограммы |
RET |
00100010 |
1 |
1 |
2 |
|
PC < (SP); Возврат из подпро- граммы обработки прерываний |
RETI |
00110010 |
1 |
1 |
2 |
|
PC < PC + 1; Холостая команда |
NOP |
00000000 |
1 |
1 |
1 |
микроконтроллер схема адресация функция
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Сложные микроконтроллерные системы могут состоять только из одного микроконтроллера (см. рис.4). Дополнительные элементы выполняют функции усилителей мощности (для управления светодиодными семисегментными индикаторами) или преобразователей уровней сигналов.
На выходе порта Р2 формируются сигналы типа «бегущий нуль» для динамического управления индикаторами и сканирования столбцов матрицы клавиатуры.
При расширении памяти программ или памяти данных, кроме собственно чипов памяти, необходим дополнительный параллельный регистр (см. рис. 5) для запоминания младшего байта адреса с выходов порта Р0. После этого микроконтроллер обменивается с внешней памятью одним байтом данных по линиям порта Р0. Запоминать старший байт адреса с выходов порта Р2 не нужно, потому что адресная информация на этих выводах не изменяется во время всего цикла обмена
4. Таймеры / счетчики внешних событий
Два программируемых 16-ти битовых таймера/счетчика (Т/С 0 и Т/С 1) могут быть использованы в качестве таймеров или счетчиков внешних событий. При работе в качестве таймера содержимое Т/С инкрементируется в каждом машинном цикле, т. е. через каждые 12 периодов резонатора. При работе в качестве счетчика содержимое Т/С инкрементируется под воздействием перехода "1-0" внешнего входного сигнала, подаваемого на соответствующий вывод (Т0 или Т1). Максимальная входная частота счетчиков: Ft / 24.
Таблица 13 - Выбор режимов таймеров / счетчиков (TMOD)
Биты TMOD |
Обозна-чение |
Выбор режима |
|
0, 1 4, 5 |
М0, М1 |
Определяют один из 4-х режимов работы, отдельно для Т/С 1 и Т/С 0 : |
|
2 6 |
C/~T 0 C/~T 1 |
Определяет работу отдельно для каждого счетчика в режиме : C/~T = 0 - таймера; C/~T = 1 - счетчика внешних событий. |
|
3 7 |
GATE 0 GATE 1 |
Разрешает управлять счетчиком от внешнего вывода (~INT0 - для Т/С 0, ~INT1 - для Т/С 1) : GATE = 0 - управление запрещено, GATE = 1 - управление разрешено. |
Таблица 14 - Назначение битов TCON
Биты TMOD |
Обозна-чение |
Назначение разрядов TCON |
|
5 7 |
TF 0 TF 1 |
Флаги переполнения Т/С, устанавливаются аппаратно при переполнении соответствующего Т/С (переходе из состояния «все единицы» в состояние «все нули»). Если прерывание от соответствующего Т/С разрешено, то установка флага TF вызовет прерывание. Флаги TF 0 или TF 1 сбрасываются аппаратно при передаче управления подпрограмме обработки соответствую-щего прерывания |
|
4 6 |
TR 0 TR 1 |
Разрешение счета отдельно для каждого Т/С : TR = 0 - счет остановлен, TR = 0 - разрешение счета. |
|
1 3 |
IE 0 IE 1 |
Флаги запроса внешних прерываний по входам ~INT0 и ~INT1 соответственно; устанавливаются аппаратно (от внешних устройств) или программно и вызывают подпрограмму обработки прерываний. Если прерыва-ние вызвано по фронту сигнала, эти флаги сбрасыва-ются аппаратно при переходе к подпрограмме. Если прерывание было вызвано низким уровнем на входе ~INT0 (~INT1), то сброс флага должна выполнять подпрограмма обслуживания прерывания, воздействуя на источник прерывания для снятия запроса. |
|
0 2 |
IT 0 IT 1 |
Управление видом прерывания отдельно по входам ~INT 0 или ~INT 1 : IT = 0 - прерывание по уровню (низкому), IT = 0 - прерывание по фронту «1-0» |
РЕЖИМ РАБОТЫ «0» (М0=0, М1=0) функционально совместим с таймером/счетчиком микроконтроллера MCS-48. Деление импульсов Машинных Циклов (МЦ) на 32 выполняют 5 младших разрядов регистров TL 0, TL 1.
Логика работы в РЕЖИМЕ 0 на примере Т/C 0 показана на рис. 6 Для Т/C 1 логика работы аналогична.
Счет начинается при установке бита TR 0 регистра TCON в состояние «1». (Если бит TR = 0, то регистры соответствующих таймеров/ счетчиков TH и TL могут использоваться как дополнительные РОНы).
Установка бита GATE в единичное состояние позволяет в режиме внутреннего таймера измерять длительность импульсного сигнала, подаваемого на вход внешнего прерывания ~INT.
РЕЖИМ РАБОТЫ «1» (М0=1, М1=0) аналогичен РЕЖИМУ «0». Отличие состоит в том, что таймерные регистры TL, TH - 16-ти разрядные.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
РЕЖИМ РАБОТЫ «2» (М0=0, М1=1) представляет собой 8-ми разрядный делитель TL 0 (или TL 1) с переменным (программируемым) коэффициентом деления. При каждом переполнении 8-ми разрядного счетчика TL 0 устанавливается флаг TF 0 и происходит перезагрузка счетчика TL 0 из регистра TH 0 (рис. 7). Для Т/C 1 логика работы аналогична.
РЕЖИМ РАБОТЫ «3» различный для T/C 0 и T/C 1. Счетчик T/C 1 в режиме «3» заблокирован (сохраняет свое текущее значение). T/C 0 в РЕЖИМЕ «3» представляет собой два независимых 8-ми разрядных счетчика TL 0 и TH 0.
Размещено на http://www.allbest.ru/
TL 0 может работать в режиме таймера и в режиме счетчика. За ним сохраняются все биты управления T/C 0 и входные сигналы T0, ~INT0 (см. рис. 8). TH 0 может работать только в режиме таймера, использует бит включения TR 1 и выставляет флаг переполнения TF 1 (рис. 8).
5. Режимы прерывания микроконтроллеров MCS-51
Запросы от внешних прерываний ~INT0, ~INT1 фиксируются в триггерах IE0, IE1 Регистра Управления T/C и внешними прерываиями (TCON). Установка этих триггеров осуществляется низким уровнем на входах ~INT0, ~INT1 (если сброшены биты IT0 = 0, IT1 = 0 регистра TCON), или по фронту «1-0» (если биты установлены: IT 0 = 1, IT 1 = 1).
Запросы прерываний от Таймеров/Счетчиков фиксируются в триггерах TF0, TF1 регистра управления TCON.
Запрос прерывания последовательного порта вызывается установкой флага прерывания приемника RI или флага прерывания передатчика TI в регистре SCON. В отличие от всех остальных флагов, RI и TI сбрасываются только программным путем (обычно в пределах подпрограммы обработки прерывания, где определяется: какому из флагов RI или TI соответствует прерывание).
Все перечисленные флаги прерываний : IE0, IE1, TF0, TF1, RI, TI - могут быть установлены (или сброшены) программно и вызвать соответствующие прерывания.
Прерывание по каждому из перечисленных источников может быть разрешено или запрещено установкой или сбросом соответствующего бита в РЕГИСТРЕ МАСКИ (Разрешения) ПРЕРЫВАНИЙ - (IE) :
· EA - управление всеми источниками прерываний; если EA = 0 - все прерывания запрещены; если EA = 1 - прерывания могут быть разрешены индивидуально;
· ES = 1 - разрешение прерывания от последовательного порта, при ES = 0 - запрещение прерывания;
· ET 1 = 1 - разрешение прерывания от T/C 1; ET 1 = 0 - запрет;
· EX 1 = 1 - разрешение прерывания от внешнего источника ~INT1, при EX1 = 0 - запрет;
· ET 0 = 1 - разрешение прерывания от T/C 0; ET 0 = 0 - запрет;
· EX 0 = 1 - разрешение прерывания от внешнего источника ~INT0, при EX 0 = 0 - запрет.
РЕГИСТР ПРИОРИТЕТОВ ПРЕРЫВАНИЙ - IP предназначен для установки уровня приоритета прерывания для каждого из пяти источников прерываний :
· PS - установка уровня приоритета прерывания от последовательного порта;
· PT1 - установка уровня приоритета прерывания от T/C 1;
· PX1 - установка уровня приоритета прерывания от внешнего источника ~INT1;
· PT0 - установка уровня приоритета прерывания от T/C 0;
· PX0 - установка уровня приоритета прерывания от внешнего источника ~INT0.
Наличие в разряде регистра IP «1» устанавливает для соответст-вующего источника высокий уровень приоритета, а наличие «0» - низкий уровень приоритета.
Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания.
Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета.
Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производиться в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов (табл. 15):
Таблица 15 - Приоритеты внутри одного уровня и векторы прерываний
Источник прерывания |
Приоритет внутри уровня |
Векторы прерываний в адресном пространстве Прогр. Памяти |
|
Внешнее прерывание ~INT 0 |
высший |
0003h |
|
Таймер/Счетчик Т/С 0 |
000Bh |
||
Внешнее прерывание ~INT 1 |
0013h |
||
Таймер/Счетчик Т/С 1 |
001Bh |
||
Последовательный порт |
низший |
0023h |
При переходе по вектору на подпрограмму обработки прерывания аппаратно запрещаются все прерывания с уровнем приоритета, равным (или меньшим) уровню приоритета обслуживаемого прерывания.
Подпрограмма обслуживания прерывания должна заканчиваться выполнением команды RETI, которая восстанавливает состояние логики прерывания и загружает из стека в счетчик команд (РС) адрес возврата в исходную программу. При использовании команды RET восстанавливается только счетчик команд (РС) из стека. Состояние логики прерывания команда RET не меняет, т. е. сохраняется запрет на прерывания с равным (или меньшим) приоритетом.
6. Последовательный интерфейс микроконтроллеров MCS-51
Через Универсальный Асинхронный Приемо-Передатчик (УАПП) осуществляется прием и передача информации, представленной последовательным кодом (младшими битами вперед), в полном дуплексном режиме обмена (как у СОМ-порта компьютера). В состав УАПП (или Последовательного Порта) входят :
· принимающий и
· передающий сдвигающие регистры, а также
· специальный буферный регистр (SBUF) приемопередатчика.
Запись байта в буфер SBUF приводит к автоматической перезаписи байта в сдвигающий регистр передатчика и инициирует начало последовательной передачи байта. Наличие буферного регистра приемника SBUF позволяет совмещать операцию чтения ранее принятого байта с последовательным приемом очередного байта. Если к моменту окончания приема байта предыдущий байт не был считан из SBUF, то он будет потерян.
Управление режимами работы УАПП определяется кодом, записанным в РЕГИСТР УПРАВЛЕНИЯ/СТАТУСА ПОСЛЕДОВА-ТЕЛЬНОГО ПОРТА (SCON):
· SM0, SM1 - определяют режимы работы УАПП (см. табл. 22);
· SM2 - разрешение многопроцессорной работы; (в режимах 2 и 3
при SM2 = 1 бит прерывания R1 не устанавливается, если принятый девятый бит данных RB8 = 0);
· REN - разрешение ПРИЕМА последовательных данных:
REN = 1 - разрешение приема,
REN = 0 - запрет приема;
· TB8 - девятый бит передаваемых данных в режимах 2 и 3; устана-вливается и сбрасывается программно;
· RB8 - девятый бит принятых данных в режимах 2 и 3;
· TI - флаг прерывания передатчика; устанавливается аппаратно в конце выдачи 8-го бита в режиме 0 или в начале стоп-бита - в других режимах; сбрасывается программой;
· RI - флаг прерывания приемника; устанавливается аппаратно в конце приема 8-го бита в режиме 0 или в середине стоп-бита - в других режимах; сбрасывается программой.
Таблица 16 - Режимы работы последовательного порта УАПП
SM0,SM1 |
Режим |
Наименование |
Скорость обмена |
|
0 0 |
0 |
Передача и прием 8-ми битовых данных через двунаправленный вывод RxD ; через вывод TxD выдаются синхроим-пульсы сдвига |
Ft / 12 |
|
0 1 |
1 |
Передача (через вывод TxD) и прием (через вывод RxD): старт-бита (0), 8-ми битовых данных и стоп-бита (1) |
Fov / 16, при SMOD=1 Fov / 32 при SMOD=0 |
|
1 0 |
2 |
Передача (через вывод TxD) и прием (через вывод RxD): старт-бита (0), 9-ти битовых данных и стоп-бита (1) |
Ft / 32, при SMOD=1 Ft / 64 при SMOD=0 |
|
1 1 |
3 |
Передача (через вывод TxD) и прием (через вывод RxD): старт-бита (0), 9-ти битовых данных и стоп-бита (1) |
Fov / 16, при SMOD=1 Fov / 32 при SMOD=0 |
Fov - частота переполнения T/C1, работающего в режиме таймера или в режиме счетчика внешних событий. (Прерывание от T/C1 должно быть запрещено).
SMOD - старший бит регистра управления мощностью PCON.
В режиме 2 и 3 в многопроцессорных системах один из контроллеров (или IBM PC) играет роль ведущего, а остальные - ведомые. Механизм такой работы аппаратно поддерживается битом SM2 регистра SCON.
Ведущий микроконтроллер посылает вначале посылки «байт адреса». Адрес отличается от данных тем, что его девятый бит установлен в «1», а у данных - девятый бит равен «0». При SM2 = 1 байт адреса вызывает прерывание, а байт данных - нет. Микроконтроллер, у которого байт адреса совпал с собственным кодом, сбрасывает бит SM2 и имеет возможность принимать следующие за ним байты данных. Остальные ведомые оставляют бит SM2 установленным и не реагируют на последующие байты данных.
Таблица 17 - Программирование УАПП для стандартных скоростей обмена
Скорость приема/ передачи, Кбод |
Ft, МГц |
Регистр SCON Режим УАПП |
Регистр PCON |
Регистр TMOD для Т/С 1 |
Таймер Т/С 1 |
||||
SM0 SM1 |
SMOD |
C/~T |
M1 |
M0 |
TH 1 |
TL 1 |
|||
1000 |
12 |
0 0 |
|||||||
375 |
12 |
1 0 |
1 |
||||||
62,5 |
12 |
* 1 |
1 |
0 |
1 |
0 |
0FFh |
||
19,2 |
11,059 |
* 1 |
1 |
0 |
1 |
0 |
0FDh |
||
9,6 |
11,059 |
* 1 |
0 |
0 |
1 |
0 |
0FDh |
||
4,8 |
11,059 |
* 1 |
0 |
0 |
1 |
0 |
0FAh |
||
2,4 |
11,059 |
* 1 |
0 |
0 |
1 |
0 |
0E4h |
||
1,2 |
11,059 |
* 1 |
0 |
0 |
1 |
0 |
0E8h |
||
0,1375 |
11,059 |
* 1 |
0 |
0 |
1 |
0 |
18h |
||
0,110 |
6 |
* 1 |
0 |
0 |
1 |
0 |
72h0 |
||
0,110 |
12 |
* 1 |
0 |
0 |
0 |
1 |
0FEh |
0EBh |
* - бит SM0 = 0 для режима 1 УАПП (8-ми битовые данные), бит SM0 = 1 для режима 3 УАПП (9-ми битовые данные).
· SMOD - бит удвоения скорости приема/передачи УАПП (см. табл. 2.22 и табл. 2.23);
· GF1, GF0 - резервные биты, содержат триггеры, доступные по записи и чтению;
· PD - бит включения режима микропотребления;
· IDL - бит включения режима холостого хода.
Размещено на Allbest.ru
Подобные документы
Структурная схема и программная модель микроконтроллеров семейства MCS-51. Особенности и принципы использования регистровой, непосредственной, косвенной, байтовой и битовой адресации данных. Описание формата команд обмена, пересылки, загрузки операндов.
реферат [560,5 K], добавлен 13.12.2010Изучение функциональных возможностей программы ISIS Proteus, системы команд и способов адресации данных в микро ЭВМ семейства МК51. Определение состояния регистров и внутренней памяти данных после выполнения программы. Сохранение содержимого в стеке.
лабораторная работа [89,7 K], добавлен 16.04.2014Проектирование специализированных радиоэлектронных устройств с применением микропроцессорных комплектов и цифровых микросхем среднего и малого уровней интеграции. Архитектура микроконтроллеров семейства INTEL8051. Программа устройства на Ассемблере.
курсовая работа [42,3 K], добавлен 29.07.2009Обзор характеристик контроллера по сбору аналоговой информации и преобразовании ее в цифровую, типы корпусов и исполнений, функциональное назначение выводов. Описание регистров PIC, тактовых генераторов. Система команд, блок ввода аналоговых данных.
курсовая работа [338,0 K], добавлен 05.09.2011Рассмотрение структуры и принципов работы таймеров/счетчиков (общего назначения, сторожевого, типов А, В, С, D, Е) микроконтроллеров и аналого-цифрового преобразователя семейства AVR с целью разработки обучающего компьютерного электронного пособия.
курсовая работа [1,0 M], добавлен 06.03.2010Семейство 16-разрядных микроконтроллеров Motorola 68HC12, их структура и функционирование. Модуль формирования ШИМ-сигналов. Средства отладки и программирования микроконтроллеров 68НС12. Особенности микроконтроллеров семейства MCS-196 фирмы INTEL.
курсовая работа [239,6 K], добавлен 04.01.2015Семейство однокристальных микроконтроллеров HCS12. Внутренняя или неявная адресация INH. Команды загрузки и пересылки данных, битовых операций, вызова подпрограмм и перехода в режимы пониженного энергопотребления. Основная блок-схема алгоритма, листинг.
курсовая работа [453,4 K], добавлен 04.06.2014Реализация булевых функций на мультиплексорах. Применение постоянных запоминающих устройств (ПЗУ). Структурная схема программируемых логических матриц (ПЛМ). Функциональная схема устройства на микросхемах малой и средней степени интеграции, ПЗУ и ПЛМ.
курсовая работа [524,1 K], добавлен 20.12.2013Структурная схема устройства управления. Алгоритм работы микроконтроллера в его составе. Строение центрального процессорного элемента – микроконтроллера AVR семейства Classic. Принципиальная схема устройства, расчет временных параметров ее работы.
курсовая работа [636,5 K], добавлен 03.12.2013Описание дешифратора и структурная схема устройства. Расчет потребляемой мощности и времени задержки. Описание мультиплексора и структурная схема коммутатора параллельных кодов. Устройство параллельного ввода слов в регистры. Ждущий мультивибратор.
курсовая работа [2,3 M], добавлен 27.04.2015