Файл: Курс лекций по микроконтроллерам.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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.