Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Применение микроконтроллеров MCS-51 при проектировании электронных устройств. Учебное пособие
.pdf
Каждый источник прерываний может быть индивидуально запро-
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
