ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 1044
Скачиваний: 1
29
Для обращения к РПД и ВПД используют различные команды:
–MOVX-пересылка данных ВПД;
–MOV-пересылка данных РПД. Общая структура РПД имеет вид:
Ячейки с адресами 0H÷1FH РПД размещают банки регистров общего
назначения (РОН). Всего банков четыре, и каждый из них содержит по восемь регистров: R0, R1,…,R7. Текущий банк регистров, с которым работает процессор задается программно.
В адресном пространстве 20H÷2FH РПД размещается область прямоадресуемых бит, в этой области каждый из 128 битов имеет свой адрес
ик каждому из них возможно отдельное обращение с помощью команд.
Вобласти с адресами 30H÷7FH могут размещаться любые данные пользователя (байты).
Непосредственно РПД в адресном пространстве примыкает область регистра специальных функций (РСФ) с адресами от 80H÷0FFH.
Вся работа основных узлов ОМК управляется с помощью РСФ. Перечислим основные РСФ:
1)A*-основной регистр контроллера-аккумулятор(его адрес 0E0H).
Замечание: «*» означает, что данный РСФ позволяет прямо адресовать свои отдельные биты. Например, для обращения к первому биту аккумулятора в команде записывают АСС.1.
2)В*- регистр расширитель аккумулятора может использоваться как обычная ячейка памяти с адресом 0F0H, а также используется для хранения старшего байта результата в операциях умножения и деления.
3)PSW* (Program Status Word)-слово состояния программы. Его формат:
где С-признак переноса;
АС-признак дополнительного переноса;
F0-признак пользователя, который устанавливается программно по усмотрению пользователя;
RS1, RS0-биты, определяющие номер текущего регистрового банка (‘00’-нулевой банк РОН,…, ’11’-третий банк РОН);
V-признак переполнения, т.е. переноса в старший знаковый разряд; Р- признак паритета (нечетности).
4) SP - регистр указатель стека в РПД.
Перед записью информации в стек, значение SP увеличивается на единицу (SP←SP+1), после чтения информации из стека значение
7 |
0 |
адрес |
|||||||
PSW* |
C |
AC |
F0 RS1 |
RS0 |
V |
- |
P |
||
0D0H |
|||||||||
уменьшается на единицу (SP→SP-1). |
|||||||||
30
Такой режим работы со стеком называется «преинкрементный / постдекрементный».
После сигнала «сброс» SP=07H, т.е. стек располагается в первом регистровом банке.
5)DPTR-16-разрядный регистр указатель данных. В DPTR хранится адрес ячейки при косвенном обращении к внешней ПП или данных. DPTR состоит из двух 8-разрядных регистров:
–DPH-старший байт; –DPL-младший байт.
6)Р0*, Р1*,Р2*,Р3*-8-разрядные регистры данных портов ввода/вывода ОМК.
7)IP*, IE*-регистр управления приоритетами прерываний и регистр маскирования прерываний (запрещений).
8)TCON*, TMOD-регистр состояния и регистр управления внутренними таймерами-счетчиками ОМК Т1, Т0.
9)TH0, TL0 старший и младший байт данных соответственно
TH1, TL1 таймера счетчика Т0 и Т1.
10) SCON*, SBUF-регистр управления и регистр данных встроенного последовательного интерфейса.
11)PCON-регистр управления потребляемой мощностью ОМК.
3.4. Система команд ОМК К1816ВЕ51
Система команд включает 111 базовых 1, 2, 3-х байтных команд. Первый байт в команде всегда ход операции, а второй и третий либо адреса операндов, либо непосредственно сам операнд.
Всистеме команд используются следующие виды адресации операнда:
–регистровая, если операнд находится в регистре;
–косвенная-регистровая, если в регистре адрес операнда;
–прямая, если в команде значением задан адрес операнда;
–непосредственная, если в команде задано значение операнда (число);
–неявная, если операнды закодированы в КОП.
Выделяют пять основных групп команд ВЕ51:
–команды пересылки данных;
–команды арифметических операций;
–команды логических операций;
–команды работы с битами;
–команды передачи управления или переходов.
3.4.1. Команды пересылки данных
Все основные пути пересылки данных в контроллере изобразим в виде графа:
31
ВПП |
@A+PC |
@DPTR |
ВПД |
(ПЗУ) |
@A+DPTR |
@Ri |
(ОЗУ) |
А |
|||
adr |
@Ri |
||
РПД |
|||
Rn |
#data8 |
||
@A+PC-ячейка памяти программ, |
адрес который вычисляется как |
||
сумма, содержимого счетчика команд РС и аккумулятора (косвенно регистровая адресация);
@A+DPTRячейка памяти программ, адрес вычисляется как сумма 16разрчдного регистра указателя DPTR и аккумулятора;
@DPTR-ячейка внешней памяти данных, адрес которого находится в |
||||||||||
DPTR (адрес 16-разрядный); |
||||||||||
@Ri-ячейка ВПД, 8-разрядный адрес который находится в Ri (i=0,1); |
||||||||||
adr-ячейка, РПД адрес которой прямо указан в команде; |
||||||||||
@Ri-ячейкаРПД, 8-разрядный адрес (i=0,1); |
||||||||||
Rn-операнд находится в регистре контроллера, текущего регистрового |
||||||||||
банка (n=0,7); |
||||||||||
#data8- 8-разрядное значение (байт). |
||||||||||
Кроме указанных путей имеются еще два: |
||||||||||
т.е. в DPTR можно загружать 16- |
||||||||||
DPTR |
#data16 |
, |
С |
bit |
||||||
разрядное значение, а в признак переноса С |
||||||||||
прямо адресуемый бит.
Можно выделить три типа команд пересылки:
–пересылки данных в РПД;
–пересылки данных в ВПД;
–чтение данных из ВПП.
А) Команды пересылки данных в РПД. MOV A, src ; A←src (src=Rn, @Ri, adr, #data8) MOV Rn, src ; Rn←src (src=A, adr, #data8)
MOV @Ri, src ; @Ri←src РПД (src=A, adr, #data8) MOV adr, src ; adr←src (src=A, adr, Rn, @Ri, #data8)
Пример: 1)переслать содержимое регистра R1 в R2: MOV R2, R1; такой команды нет
MOV 2, 1 ; переслать ячейку с адресом 1 в 2. 2)MOV @R0, A ; из А в ячейку РПД, адрес которой в R0. 3)MOV R3, #8H ; R3=8H.
Команды работы со стеком:
PUSH adr-загрузить прямоадресуемый операнд в стек;
32
POP adr-прочитать значение прямоадресуемого операнда из стека.
Пример: 1)PUSH 1, загрузить в стек значение из РПД с адресом 1Н. |
|||||
2)загрузить в аккумулятор значение 10Н: |
|||||
MOV |
A, #10H |
||||
MOV |
ACC, #10H |
||||
XCH |
A, src-команда обмена A↔src (src=Rn, 7 |
A 0 |
@Ri, |
||
adr); |
|||||
SWAP A-обмен тетрад аккумулятора.
Б) Команды пересылки данных в ВПД.
Если используется 16-разрядная адресация ячеек ВПД, то команды
пересылки: |
|||
MOVX A, @DPTR |
; A←из ячейки по адресу DPTR (ПЗУ) |
||
MOVX A, @DPTR |
; @DPTR←A |
||
Для загрузки регистра DPTR используют команду MOV DPTR, #data16 |
|||
В случае 8-раздной адресации ячеек ВПД используют команду: |
|||
MOVX A, @Ri ; |
A←@Ri |
||
MOVX @Ri, A ; |
при этом в Ri 8-разрядный адрес ячейки ВПД. |
||
В) Команды чтения информации из ВПП (или внутренняя ПП, |
|||
если ЕА=1). |
|||
MOVC |
A, @A+PC |
; |
A←@A+PC |
MOVC |
A, @A+DPTR |
; A←@A+DPTR в аккумулятор загружается |
|
значение из ячейки ПЗУ, адрес которой определяется как сумма А+РС или
A+DPTR.
Пример: 1) прочитать содержимое ячейки ПП, расположенной следом за выполненной командой.
MOV A, #0H MOVC A, @A+PC
2) прочитать из ВПД содержимое ячейки памяти с адресом 2000Н. MOV DPTR, #2000H
MOVX A, @DPTR
3.4.2. Команды арифметических операций
А) команды сложения:
ADD A, src ; A←A+src (src=Rni, @Ri, adr, #data8) ADC A, src ; A←A+src+C (C-признак переноса)
Б) команды вычитания:
SUBB A, src ; A←A-src-C
В) команды инкремента и декремента:
INC src ; src←src+1 (src=A, Rn, @Ri, adr) DEC src ; src←src-1
INC DPTR ; увеличение на единицу 16-разрядного DPTR.