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

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

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

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

Добавлен: 16.06.2025

Просмотров: 1031

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

33

Пример: INC

20H ; увеличение на единицу содержимого ячейки по адресу

20Н.

Г) команды умножения и деления:

MUL AB ; (B).(A)

A* B

,если значения в регистре В ≠ 0 после умножения,

старший

младший

то устанавливается признак переполнения V=1.

байт

байт

разультата

результата

DIV AB ; (A).(B)

A / B

целая

остаток

часть

от

результата

деления

Команды работают с целыми числами: DA

A- десятичная

коррекция

аккумулятора после сложения двоично-десятичных чисел.

Команды логических операций.

А) команды логического умножения, сложения и сложения по модулю два.

ANL A, src ; A ← A src (src = Rn , @Ri , adr, data8)

"И"

ANL adr,src ; adr ← adr src (src = A,#data8)

ORL A, src

"ИЛИ"

ORL adr,src

XRL A, src

"искл. ИЛИ"

XRL adr, src

Логические операции выполняются побитно.

Б) команды инверсии, отчистки и сдвига аккумулятора.

CPL A ; A←А

CLR A

;

A=0

А

RLA-циклический сдвиг аккумулятора на один бит

влево.

RR A- циклический сдвиг аккумулятора на один бит вправо.

RLC A-команда

сдвига

аккумулятора

влево

7

А

0

через бит переноса С.

С

RRC A- команда сдвига аккумулятора вправо

через бит переноса С.

3.4.3. Команды работы с битами

Вданных командах в качестве операндов используется:

–отдельные биты РСФ (помеченные *);

–биты из области прямоадресуемых бит РПД (20Н÷2FH);

–отдельные биты портов ввода/вывода.

Вкачестве битового аккумулятора данных команд используется признак переноса с контроллера. Таким образом один из битовых операндов

ирезультат выполнения операции как правило сохраняется в признаке переноса С.

А)команды очистки, инверсии и установки бита: CLR bit ; bit = 0

SETB bit ; bit = 1


34

CPL

bit ; bit =

bit

Пример: установка третьего бита аккумулятора:

SETB

ACC.3

CPL

P0.6

; инверсия шестого бита порта Р0

CLR

20.6H ; отчистка шестого бита ячейки с адресом ?????.

Б) команды пересылки бит:

MOV

c, bit ; c←bit

MOV

bit, c

Пример: MOV c, P37 ; значение седьмого бита Р3 загружается в с. В) команды битовых логических операций:

ANL c, bit ; c←c ”и” bit (٧)

ANL c, /bit ; подобная команда, но с←с ”и” bit с инверсией бита

ORL c, bit ; c←c “или” bit (٨) ORL c, /bit ; c←c “или” bit

Пример: найти логическое произведение третьего бита порта Р2 с шестым битом порта Р3 и результат выдать в нулевой бит порта Р0:

MOV c, P2.3 ; c←P2.3 ANL c, P3.6 ; c←c ٧ P3.6 MOV P0.0, c ; P0.0←c.

3.4.4.Команды передачи управления или переходов.

К ним относятся команды условных и безусловных переходов, а также команды вызова возврата из подпрограммы.

Все команды передачи управления делят на три группы:

–команды дальних переходов (long);

–команды абсолютных переходов (absolute);

–команды коротких (относительных) переходов (short).

Команды дальних переходов осуществляется только внутри страниц объемом 2к байта каждая.

Относительные переходы осуществляются на расстоянии ±128 байт от текущей команды.

А)команды безусловных переходов и вызова подпрограмм. LJMP adr16 ; безусловный дальний переход

LCALL

adr16 ; дальний вызов подпрограммы

AJMP adr11 ; абсолютный безусловный переход

ACALL

adr11 ; абсолютный вызов подпрограммы (adr11–11-

разрядный адрес перехода)

SJMP

rel ; относительный безусловный переход (rel-смещение

относительно текущей команды)

Переход осуществляется по схеме PC←PC+ rel смещение rel может принимать как положительное значения (в этом случае оно записывается в прямом коде), так и отрицательное (в дополнительном коде).


35

Замечание: в случае использования компиляторов с языков ассемблера часто возможно применения обобщенных команд перехода JMP и CALL. В этом случае при трансляции компилятор сам определяет какой тип переходов использовать.

Б)команда относительного безусловного перехода.

JMP @A+DPTR ; безусловный переход по адресу вычисляемому как сумма аккумулятора А и регистра указателя DPTR.

В)команды условных переходов (все они относятся к относительному типукороткие).

JZ rel ; переход, если результат равен 0

JNZ

rel ; переход, если результат не равен 0

JC

rel ; переход, если перенос (с=1)

JNC

rel ; переход, если нет переноса (с=0)

JB

bit, rel ; переход, если значение указанного бита равно 1

JNB

bit, rel ; переход, если значение указанного бита равно 0

JBC

bit, rel ; переход, если bit =1 с последующей отчисткой бита.

Г)команды организации циклов (относятся к относительным переходамкоротким).

DJNZ

Rn, rel ; Rn←Rn-1 (Rn ≠ 0) уменьшение регистра Rn на единицу и

переход по адресу rel , если Rn ≠ 0

DJNZ

adr, rel ; уменьшение прямоадресуемой ячейки РПД на единицу

и переход по адресу rel

CJNZ

A,#data, rel ; проверка равенства аккумулятора значению data

A=data и переход на rel, если не равно

CJNZ

A, adr, rel ; проверка равенства аккумулятора значению из

ячейки adr и переход на rel, если не равно

CJNZ

Rn, #data, rel

CJNZ

@Ri, #data, rel ; проверка равенства значения и ячейки, адрес

котрой в Ri значению data и переход, если не равно Г)команды возврата из подпрограмм.

RET ; возврат из подпрограммы с извлечением из стека 16-разрядного адреса возврата.

RETI ; возврат из подпрограммы обработки прерываний в отличии от предыдущей команды осуществляет разблокировку приоритетов прерываний после обработки подпрограммы.

3.5.Встроенные таймеры счетчики контроллера К1816ВЕ51

Вконтроллере реализованы два 16-разряных суммирующих таймера счетчика Т0 и Т1. Они предназначены для подсчета внешних импульсов, подаваемых на входы Т0 и Т1 (режим счетчика) и для подсчета числа выполненных машинных циклов контроллера (режим таймера).

Оба таймера счетчика управляются с помощью РСФ: TMOD и TCON.


36

Возможны четыре различных режима работы каждого таймера счетчика (нулевого; первого; второго; третьего-режима).

Нулевой режим работы.

В этот режиме каждый таймер счетчик работает как 8-разрядный двоичный счетчик импульсов с 5-разрядным делителем частоты и схемой управления.

Управление данным режимом осуществляется с помощью TMOD:

T0

T1

GATE0

C / T0

M0.1

M0.0

GATE1

C / T1

7

M1.1

M1.0

0

GATE–сигнал (значение бита TMOD) управляющий блокировкой работы таймера –счетчика.

Если GATE=1, то работа таймера-счетчика может быть приостановлена внешним сигналом INT=0. Сигнал, INT подается на входы внешних прерываний порта Р.3 в альтернативном режиме работы.

схема управления (А)

fOSR

1:12

C/T=0

предделитель

TF

T0(T1)-входы

TL(5-разряд.)

C/T=0

TH(8-разряд.)

1-пуск

млад. 8-разрад. старш. 8-разрад.

0-остановка

GATE

1

1

&

таймер-счетчик

таймер-счетчик

INTO

(INT1)

TR

Данный режим удобно использовать для подсчета длительности импульсов, подаваемых на вход INT.

C / T–бит задания режима работы таймера-счетчика. C / T=0–режим таймера.

C / T=1–режим счетчика.

М х.1, М х.0–биты режима работы таймера/счетчика (00-нулевой режим;01-первый режим; 10-второй режим; 11-третий режим).

Первый режим таймера-счетчика.

Полностью совпадает с нулевым режимом, отличиеиспользуется не 5- разрядный, а 8-разрядный предделитель частоты TL.

Замечание: значение любого таймера/счетчика (Т0,Т1) может быть прочитано в любой момент времени путем чтения информации из регистра данных таймеров/счетчиков:

–TL0, TH0 для T0;

–TL1,TH1 для T1.

Замечание: управление сигналом блокировки счета TR, а также чтение сигнала переполнения таймера/счетчика TF осуществляется через регистр

специальных

7

0 функций TCON:

TR1

TF1

TR0

TF0

IE1

IT1

IE0

IT0

T1

T0

управление счетчиком

прерываний


37

Второй режим таймера/счетчика (автоперегружаемого генератора частоты). В этом режиме для подсчета импульсов используется только младший байт TL таймера/счетчика, а старшие байты TH используются для хранения начальных значений счетчика TL. При этом при переполнении младшего байта TL автоматически осуществляется перезагрузка значения из ТН в TL и

7

0

TF

счет возобновляется.

&-схема разрешения перезагрузки.

схема

TL

управления

8

(А)

&

Замечание: изменяя начальное значение в

7

8 0

регистре

TH

пользователь

может

TL

варьировать период (частоту) следования

периодических импульсов на выходе TF. Таким образом реализуется

генератор импульсов с программируемой частотой.

Данный режим используют для задания скорости передачи (следования импульсов) по внутреннему последовательному интерфейсу.

Третий режим таймеров/счетчиков.

В этом режиме работает только таймер Т0. При этом таймер Т0 представляет два независимых 8-разрядных двоичных счетчика:

–ТН0-может подстывать машинные циклы;

–TL0-может подсчитывать машинные циклы или внешние импульсы. Таким образом используя третий режим в ОМК ВЕ51 можно получить

три независимых двоичных счетчика.

3.6.Встроенный последовательный интерфейс ОМК

Предназначен для передачи байт по трем выделенным линиям (TxD, RxD и GND) последовательно бит за битом.

Последовательный интерфейс представляет собой универсальный асинхронный приемопередатчик (УАПП).

Возможны четыре режима работы УАПП. Управление и обмен данными с УАПП осуществляется через два регистра специальных функций:

–SBUF-буферного регистра данных; –SCON-регистра управления интерфейсом.

Нулевой режим УАПП (сдвигового регистра).

В этом режиме выход интерфейса RxD (Р.3.0) используется как для приема, так и для передачи восьми битовых информационных посылок.

Вывод же TxD (Р.3.1) используется для выдачи импульсов синхронизации, сопровождающих каждый передаваемый бит (сдвиговые импульсы).