Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Применение микроконтроллеров MCS-51 при проектировании электронных устройств. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Каждый источник прерываний может быть индивидуально запро-
PSPT1 PX1
PT0P
граммирован на различный (один из двух) уровень приоритета путём установки или сброса бита в регистре IP (Interrupt Priority – приоритет прерываний), находящегося в области SFR. Далее показан формат это­го регистра.
(MSB) (LSB)
- - - - - -
X0
Бит приоритета = 1 присваивается высокий приоритет
Бит приоритета = 0 присваивается низкий приоритет
Символ Позиция Функция
—
— —
PS
PT1
PX1
PT0
PX0
IP.7
IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0
Зарезервировано ***Используются в более стар­ших моделях
Зарезервировано *** Зарезервировано *** Бит приоритета последовательного порта Бит приоритета по переполнению таймера 1 Бит приоритета прерывания от внешнего источника 1 Бит приоритета по переполнению
таймера 0
Бит приоритета прерывания от внешнего источника 0
Прерывание с низким приоритетом может быть прервано прерыва­нием с более высоким приоритетом, но не другим, низкоприоритет­ным, прерыванием. Прерывание с высоким приоритетом не может быть прервано другим источником прерываний.
Если одновременно поступают два прерывания с различными при­оритетами, обслуживается прерывание с
более высоким приоритетом. В случае одновременного поступления прерываний с одинаковым уровнем приоритета очередность обслуживания прерываний определя­ется процедурой внутреннего опроса. Таким образом, каждый уровень приоритета имеет вторичную структуру, определяемую последова­тельностью внутреннего опроса.
Рис. 6.1 показывает, как регистры IE и IP и последовательность внутреннего опроса определяют, какое прерывание должно быть об­служено.
Во время работы все флаги прерываний защёлкиваются в системе управления прерываниями в течение S5 каждого машинного цикла.
31
Внутренний опрос происходит в следующем машинном цикле. Если флаг разрешения прерывания установлен в 1, система генерирует LCALL в определенное место памяти программ, если некоторые дру­гие условия не блокируют прерывание. Блокировку могут вызвать не­сколько условий, в том числе происходящая в данный момент обра­ботка прерываний равного или более высокого приоритета.
INT0
TF0
0
1
IT0
IE0
IE Register
IP Register
0
INT1
1
TF1
RI
TI
Рис. 6.1. Использование регистров
1
IT1
Individual
Enable
IE1
Polling Direction
Lowest Priority
Global Enable
Level
IE и IP для обслуживания прерываний
Аппаратно-генерируемый сигнал LCALL вызывает помещение со­держимого PC в стек и перезагрузку PC стартовым адресом подпро­граммы обслуживания прерываний в соответствии с рис. 4.2.
В стеке сохраняется только PC, но не PSW и какие-либо регистры. Это экономит время при обработке прерываний, но накладывает на программиста ответственность за правильную обработку прерывания. В
результате многие операции, типичные для систем управления – пе­реключение разряда порта, перезагрузка таймера или разгрузка после­довательного буфера – часто выполняются быстрее, чем при других архитектурных решениях.
32
Некоторые приложения требуют более двух уровней приоритетов для обработки прерываний. Это может быть достигнуто программны­ми средствами. Вы можете попытаться сами написать такую процеду­ру или подсмотреть её в [5] на стр. 1–21.
В заключение краткого обзора аппаратных средств на рис. 6.2 по­казана архитектура 8051 и на рис. 6.3 – назначение выводов.
P0.0-Р0.7
P2.0-Р2.7
Регистр
адреса
ОЗУ
Регистр
В
РЕГИСТР КОМАНД
Схема управления
и синхронизации
PSEN
ALE
EA
RST
XTAL1
Драйверы
порта 0
ОЗУ ППЗУ
АСС ТМР 1
ТМР 2 АЛУ
ГЕНЕРАТОР
XTAL2
Защёлка
порта 0
PSW
Защелка
порта 1
Драйверы
порта 1
P1.0-P1.7
Драйверы
порта 2
Защёлка
порта 2
Блоки прерываний,
последовательного
порта и таймеров
(SFRs, TIMERS, PCA)
Указатель
стека
Защёлка
порта 3
Драйверы
порта 3
P3.0-P3.7
Регистр
адреса
программ
Буфер
ИНКР.РС
РС
DPTR
Рис. 6.2. Архитектура микроконтроллера i8051
33
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6 P1.7
PEZET
(RxD)P3.0
(TxD)P3.1
(NT0)P3.2
(NT1)P3.3
(T0) P3.4
(T1) P3.5
(WR) P3.6
(RD) P3.7
XTAL2
XTAL1
Vss
1
2
3
4
5 6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26 25
24
23
22
21
Vcc
P0.0(AD0)
P0.1(AD1)
P0.2(AD2)
P0.3(AD3)
P0.4(AD4)
P0.5(AD5)
P0.6(AD6)
P0.7(AD7)
EA/Vpp
ALE/PROG
PSEN
P2.7 (A15) P2.6 (A14)
P2.5 (A13)
P2.4 (A12)
P2.3 (A11)
P2.2 (A10)
P2.1 (A9) P2.0 (A8)
Рис. 6.3. Цоколёвка микроконтроллера i8051
34
7. СИСТЕМА КОМАНД MCS-51
7.1. Слово состояния программы и методы адресации
Ну, а теперь пора перейти к знакомству с системой команд i8051. Для начала приведём формат слова состояния программы (PSW –
Program Status Word), часто также называемого флаговым регистром (рис. 7.1).
PSW6 PSW5 PSW4 PSW3 PSW2 PSW1 PSW1PSW7
F0
CY
AC
RS1
RS0 OV
F1
P
Флаг
переноса
Carry Flag
Флаг дополнительного
General Purpose Status
переноса
Auxiliary Carry Flag
Флаг общего
назначения
Flag
Bit1
Bit0
Биты селектора банка
регистров Register
Bank Select
Бит чётности числа единиц
Parity Flag
Определяемый
пользователем флаг
User Definable Flag
Флаг переполнения
Overflow Flag
Рис. 7.1. Формат слова состояния
Опишем методы адресации, используемые в этих микроконтролле­рах. Их всего шесть.
1. Команды с регистровой адресацией (Register Instructions). Дан­ная адресация применяется для доступа к регистрам выбранного банка, обозначаемым от R0 до R7. Команды, работающие с регистровой адре­сацией, имеют в коде операции 3 бита (не правда ли, что-то знакомое:
3 бита, 3 бита, 3 бита...?), определяющих номер
регистра. Номер банка
определяется битами селектора банка в PSW. Эта адресация обеспечи­вает максимальную эффективность кодов.
35
2. Косвенно-регистровая (или просто косвенная) адресация (Indi- rect Addressing), в которой указывается регистр, содержащий адрес
операнда. Может применяться при обращении как к внутреннему, так и к внешнему ОЗУ. Регистрами адресации могут быть только регистры
R1 и R0 любого из выбранных банков регистров или указатель стека SP. При шестнадцатибитной адресации единственным регистром адре-
сации может данных» DPTR (Data PoinTeR).
3. Непосредственная адресация (непосредственные константы – Immediate constants). Здесь операнд содержится во втором байте ко­манды в памяти программ.
4. Прямая адресация (Direct Addressing), при которой адрес опе-
ранда содержится во втором байте команды. Эта адресация применяет­ся только при обращении к внутреннему ОЗУ данных и к SFR.
5. Индексная адресация
зована только при обращении к памяти программ и только при чтении. Индексная адресация предназначена для работы с таблицами в памяти программ. 16-битный регистр базы (DPTR или PC) указывает на начало (базу) таблицы, а аккумулятор определяет смещение (индекс, вход в таблицу – table entry). Адрес элемента таблицы определяется сложени­ем базы
Другой тип индексной адресации применяется в командах условно­го перехода на метку («case jump»). Здесь адрес перехода вычисляется в виде суммы указателя базы и данных аккумулятора.
6. Неявная адресация (Register – Specific Instructions). Некоторые инструкции могут быть выполнены только с определенными регистра­ми, например, только с аккумулятором. В этом случае нет необходи­мости явно указывать
быть только шестнадцатиразрядный регистр «указатель
(Indexed Addressing). Может быть исполь-
с индексом.
на операнд.
7.2. Команды пересылки данных
Теперь дадим краткую характеристику команд по группам. Более
подробную информацию можно получить из [5–7] или из программы
ApBuilder.
Первой рассмотрим группу команд пересылки данных. Её можно подразделить на подгруппы пересылки для внутренней памяти, внеш­ней памяти и пересылки из таблиц. Далее используются стандартные обозначения: <src> (source) – источник, <dest> (destination) – прием­ник. В табл. 7.1 приведены основные сведения
36
о командах пересылки
для внутренней памяти данных. Время выполнения дано для случая тактовой частоты 12 МГц.
Следует обратить внимание на следующие обстоятельства. Во всех устройствах MCS-51 стек расположен на кристалле и растет в сторону увеличения адресов. Поскольку по отношению к SP используется кос­венная адресация, стек может попасть в Upper 128, но не в SFR.
Команда XCHD A, @Ri обменивает (от exchange –
обменивать) младшие тетрады (нибблы) аккумулятора и второго операнда, опреде­ляемого с помощью косвенной адресации.
Таблица 7.1
Группа команд пересылки
Мнемоника Операция
MOV A,<src> MOV <dest>,A MOV <dest>,<src>
MOV DPTR,#data16
PUSH <src>
POP <dest>
XCH A, <byte>
XCHD A, @Ri
A=<src> X X X X 1 <dest>=A X X X 1 X X X X 2 DPTR=16bit immediate
data INC SP:MOV "@SP”,
<src> MOV <dest>,
"@SP":DEC SP ACC and <byte> ex-
change data ACC and @Ri exchange
low nibbl
Режим адресации
Reg Ind Imm Dir
X 2
X 2
X 2
X X X 1
X 1
Время,
мкс
Для пересылки информации с использованием внешней памяти данных может применяться только косвенная адресация. Параметры команд приведены в табл. 7.2.
Таблица 7.2
Мнемоника Операция
MOVX A, @R1
MOVX @R1, A MOVX A, @DPIR MOVX @DPTR, A
Чтение внешнего ОЗУ @R1 8 бит 2 Запись А во внешнее ОЗУ @R1 8 бит 2 Чтение внешнего ОЗУ @DPTR 16 бит 2 Запись во внешнее ОЗУ @DPTR 16 бит 2
Разрядность
адреса
Время,
мкс
37
Обмен информацией с внешней памятью данных происходит ис­ключительно через аккумулятор. Сигналы RD\ и WR\ вырабатываются только при выполнении команд MOVX. Если выполнение этих команд не предполагается, выводы этих сигналов могут быть использованы как дополнительные линии ввода-вывода.
Для просмотра таблиц используются всего две команды, показан­ные в табл. 7.3; так как обращение
происходит к таблицам в памяти программ, то здесь может выполняться только чтение постоянных данных из ROM и мнемоника MOVC означает MOVe Constant.
Таблица 7.3
Команды чтения данных из памяти программ
Мнемоника Операция Время, мкс
MOVC A, @A+DPTR
MOVC A, @A+PC
Читать байт из ROM по адресу (A+DPTR) 2 Читать байт из ROM по адресу (A+PC) 2
Использование второй команды описывается следующим фрагмен-
том:
MOV A, ENTRY_NUMBER ; в A-номер элемента таблицы CALL TABLE ; поместить в PC адрес таблицы
При этом подпрограмма "TABLE" выглядит следующим образом:
TABLE: MOVC A, GA+PC ; переслать в A данные RET ; возврат
Таблица должна начинаться сразу за инструкцией RET в памяти программ. Эта таблица имеет 255 элементов – от 1 до 255. Нулевой элемент не может быть использован, так как в момент выполнения ин­струкции MOVC A, @A+PC программный счётчик содержит адрес ко­манды RET, которая и должна трактоваться как нулевой элемент таб­лицы.
7.3. Команды преобразования данных
Группа команд преобразования данных включает в себя арифме­тические, логические и булевские (однобитные) инструкции. Перечень арифметических команд приведён в табл. 7.4. Под выражением <byte> понимается байт с любым допустимым методом адресации. Например, для команды ADD:
ADD A, R7 (регистровая адресация)
ADD A, GR0 (косвенная адресация)
38
ADD A, #127 (непосредственная адресация)
ADD A, 7FH (прямая адресация)
Таблица 7.4
Группа арифметических команд
Мнемоника Операция
ADD A, <byte> A=A+<byte> X X X X 1 ADDC A,
<byte> SUBB A, <byte> A=A+<byte>-C X X X X 1 INC A A=A+1 Только аккумулятор 1 INC <byte> <byte>=<byte>+1 X X X 1 INC DPTR DPTR= DPTR+1 Только DPTR 2 DEC A A=A=1 Только аккумулятор 1 DEC <byte> <byte>=<byte>-1 X X X 1 MUL AB B: A=B*A Только ACC и B 4 DIV AB A=Int[A/B] B=Mod[A/B] Только ACC и B 4 DA A Decimal Adjust Только аккумулятор 1
A=A+<byte>+C X X X X 1
Режим адресации
Reg Ind Imm Dir
Время,
мкс
Отметим, что запись #127 означает использование десятичной кон­станты. То же самое число в шестнадцатеричной системе счисления будет выглядеть так: 7FH.
При выполнении команды MUL A B происходит умножение со­держимого аккумулятора на содержимое регистра B и результат поме­щается в пару регистров B и A. После деления содержимого A на со­держимое B (DIV A B
) в аккумуляторе находится целая часть резуль-
тата, а в B – остаток.
Логические операции являются поразрядными. Их список приведён в табл. 7.5.
Таблица 7.5
Логические операции
Мнемоника Операция
AHL A, <byte> A = A. AND. <byte> X X X X 1 AHL <byte>, A <byte> = <byte>.AND.A X 1 AHL <byte>,
#data
<byte> = <byte>.AND. #data
39
Режим адресации
Reg Ind Imm Dir
X 2
Время,
мкс
Окончание табл. 7.5
Мнемоника Операция
ORL A, <byte> A = A.OR. <byte> X X X X 1 ORL <byte>, A <byte> = <byte>.OR.A X 1 ORL <byte>,
#data XRL. A, <byte> A=A.XOR. <byte> X X X X 1 XRL <byte>, A <byte>=<byte>.XOR.A X 1 XRL <byte>,
#data CRL A A=00H Только аккумулятор 1 CRL A A=.NOT.A Только аккумулятор 1 RL A Rotate ACC left 1 bit Только аккумулятор 1 RLC A Rotate Left through Carry Только аккумулятор 1 RR A Rotate ACC Right 1 bit Только аккумулятор 1 RR A Rotate Right through Carry Только аккумулятор 1 SWAP A Обменять тетрады в АСС Только аккумулятор
<byte> <byte>.OR. #data X 2
<byte>=<byte>.XOR. #data X 2
Режим адресации
Reg Ind Imm Dir
Время,
мкс
Булевы (однобитные) команды (табл. 7.6) применяются к 128 адре­суемым битам внутренней RAM и к 128 битам SFR.
Таблица 7.6
Булевы операции
Мнемоника Операция Время, мкс
AHL C, bit C = C.AND.bit 2 AHL C,/bit C = C.AND..NOT.bit 2 OR C, bit C = C.OR.bit 2 OR C,/bit C = C.OR..NOT.bit 2 MOV C, bit C = bit 1 MOV bit, C bit = 1 CLR C C = 0 1 CLR bit bit = 0 1 SETB C C = 1 1 SETB bit bit = 1 1 CPL C C =.NOT.C 1 CPL bit bit =.NOT.bit 1
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]