ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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) используется для выдачи импульсов синхронизации, сопровождающих каждый передаваемый бит (сдвиговые импульсы).