Автор работы: Пользователь скрыл имя, 11 Апреля 2011 в 12:22, реферат
В настоящее время среди всех 8-разрядных микроконтроллеров - семейство MCS-51 является несомненным чемпионом по количеству разновидностей и количеству компаний, выпускающих его модификации. Оно получило свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии n-МОП.
Пример: CLR A
;Записывает в аккумулятор число
00h
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
(A) = 0
Машинный код:
1 1 1 0 0 1 0 0
CLR <bit> - сбрасывает
указанный бит в нуль.
Описание: сбрасывает
(записывает '0') в указанный во втором
байте команды бит. Команда не
изменяет содержимое флагов.
Пример: CLR C ;Записывает
во флаг переноса '0'
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
(C) = 0
Машинный код:
1 1 0 0 0 0 1 1
прямая битовая
адресация;
Пример: CLR P1.2
;Записывает во второй бит порта 1 '0'
Количество байт:
2
Количество циклов:
1
Действие команды:
(PC) = (PC) + 2
(bit) = 0
Машинный код:
1 1 0 0 0 0 1 0
b b b b b b b b
CPL A - каждый бит
аккумулятора инвертируется.
Описание: каждый
бит аккумулятора инвертируется, т.е.
если в каком-либо из восьми бит аккумулятора
записана '1', то в этот бит записывается
'0' и наоборот.
Пример: CPL A
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
(A) = not(A)
Машинный код: 1
1 1 1 0 1 0 0
CPL <bit> - инвертируется
указанный бит.
Описание: бит адрес, которого указан во втором байте команды инвертируется, т.е. если бит содержит '1', то в этот бит записывается '0' и наоборот.
прямая битовая
адресация;
Пример: CPL 27
Количество байт:
2
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
(bit) = not(bit)
Машинный код:
1 0 1 1 0 0 1 0
b b b b b b b b
CPL C - инвертируется
флаг переноса 'C'.
Описание: флаг
переноса 'C' инвертируется, т.е. если флаг
переноса 'C' содержит '1', то в него записывается
'0' и наоборот.
Пример: CPL C
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
(C) = not(C)
Машинный код:
1 0 1 1 0 0 1 1
DA A - десятичная
коррекция аккумулятора при
Описание: команда
десятичной коррекции позволяет
вести сложение чисел, представленных
в упакованном двоично-
Если биты аккумулятора
с 0 по 3 содержат число большее 9 (xxxx1010:xxxx1111)
или флаг вспомогательного переноса
AC содержит '1', то к аккумулятору прибавляется
число 6 для того, чтобы получить правильную
двоично-десятичную цифру в младшей тетраде.
Если старшие
биты аккумулятора (с 4 по 7) содержат число
большее 9 (1010xxxx :1111xxxx) или флаг переноса
C содержит '1', то к аккумулятору прибавляется
число 60h для того, чтобы получить правильную
двоично-десятичную цифру в старшей тетраде.
Если в результате
операции DA A возникнет перенос, то флаг
переноса C будет установлен в 1. Единичный
флаг переноса после операции DA A означает,
что результат суммирования больше 100
и этим можно воспользоваться для суммирования
многоразрядных двоично-десятичных чисел.
Команда десятичной коррекции не воздействует
на флаг переполнения OV.
Примечание: команда
DA A не может преобразовать двоичное число
из аккумулятора в двоично-десятичный
вид или правильно скорректировать двоично-десятичное
вычитание.
Пример: DA A
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
IF [[(A3-0) > 9] or [(AC)
= 1]] THEN
(A3-0) = (A3-0) + 6
AND
IF [[(A7-4) > 9] or [(C)
= 1]] THEN
(A7-4) = (A7-4) + 6
Машинный код:
1 1 0 1 0 1 0 0
DEC <байт> - производит
вычитание 1 из указанного операнда.
Описание: ячейка
памяти адрес, которой указан во втором
байте команды уменьшается на 1. Если
первоначально в ячейке было записано
значение 00h, то в нее заносится значение
0FFh. Команда не воздействует на флаги.
Примечание: при
выполнении команды DEC над содержимым
внешнего порта используется значение
из внутреннего регистра, а не данные,
присутствующие на выводах микросхемы!
Для команды DEC разрешены следующие режимы адресации байта - источника:
непосредственная.
Пример: DEC A
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
(A) = (A) - 1
Машинный код:
0 0 0 1 0 1 0 0
регистровая;
Пример: DEC R3
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7
Машинный код:
0 0 0 1 1 r r r
косвенно-регистровая;
Пример: DEC @R0
Количество байт:
1
Количество циклов:
1
Действие команды:
(PC) = (PC) + 1
((Ri)) = ((Ri)) - 1, i=0,1
Машинный код:
0 0 0 1 0 1 1 i
прямая;
Пример: DEC 30h
Количество байт:
2
Количество циклов:
1
Действие команды:
(PC) = (PC) + 2
(direct) = (direct) - 1
Машинный код:
0 0 0 1 0 1 0 1
d d d d d d d d
DIV AB - деление.
Описание: делит
8-битовое беззнаковое целое
Количество байт:
1
Количество циклов:
4
Действие команды:
(PC) = (PC) + 1
(A) = (A) div (B)
(A) = (A) mod (B)
Машинный код:
0 1 0 0 0 1 0 0
DJNZ <байт>,<смещение>
- вычитание 1 из указанной ячейки
и переход, если результат не
равен 0.
Описание: вычитание
1 из указанной во втором байте команды
ячейки памяти и переход к вычисляемому
по третьему байту команды адресу, если
результат вычитания не равен 0. Если первоначально
в ячейке памяти содержится '0', то в результате
выполнения операции туда будет записано
число '0FFH'. Команда не воздействует на
флаги. Новое значение программного счетчика
при переходе вычисляется суммирование
содержимого программного счетчика со
вторым операндом (третьим байтом команды).
Перед выполнением суммирования в программный
счетчик заносится адрес первого байта
следующей команды. Суммирование производится
с учетом знака третьего байта команды,
представленного в дополнительном коде.
Примечание: при
выполнении команды DJNZ над содержимым
внешнего порта используется значение
из внутреннего регистра, а не данные,
присутствующие на выводах микросхемы!
Для команды DJNZ разрешены следующие режимы адресации байта - источника:
регистровая;
Пример: DJNZ R3 ,LABEL1;
Количество байт:
2
Количество циклов:
2
Действие команды:
(PC) = (PC) + 2
(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7
IF (Rn) < > 0, THEN n=0,1,2,3,4,5,6,7
(PC) = (PC) + rel
Машинный код:
1 1 0 1 1 r r r
R e l A d r e s
прямая;
Пример: DJNZ 30h,LABEL1;
Количество байт:
3
Количество циклов:
2
Действие команды:
(PC) = (PC) + 3
(direct) = (direct) - 1
IF (direct) < > 0 THEN
(PC) = (PC) + rel
Машинный код:
1 1 0 1 0 1 0 1
d d d d d d d d
R e l A d r e s
Устройство
параллельных портов
микроконтроллеров MCS-51
Порты P0, P1, P2, P3 являются
квазидвунаправленными портами
ввода- вывода и предназначены для обеспечения
обмена информацией микроконтроллера
с внешними устройствами, образуя 32 линии
ввода- вывода. Каждый из портов содержит
восьмиразрядный регистр, имеющий байтовую
и битовую адресацию для установки (запись
'1') или сброса (запись '0') разрядов этого
регистра с помощью программного обеспечения.
Выходы этих регистров соединены с внешними
ножками микросхемы. Упрощенная схема
одного разряда порта показана на рис.
1
Рис. 1. Упрощенная
схема одного бита порта.
Один разряд регистра - защелки порта представляет собой D-триггер. Данные с внутренней шины микроконтроллера записываются в регистр-защелку по сигналу "запись в защелку". Выход "Q" D-триггера подключается к внутренней шине (считывается) по сигналу "чтение защелки". Значение сигнала непосредственно с внешнего вывода порта считывается по сигналу "чтение вывода". Некоторые команды чтения порта используют сигнал "чтение защелки ", другие "чтение выода". Чтение внешних ножек микросхемы осуществляется командами:
MOV A, P3 ;Скопировать состояние ножек порта P3 в аккумулятор
JB P3.4, Metka ;Если
на 4 ножке порта P3 логическая
‘1’, то перейти на метку
Чтение регистра - защелки осуществляется командами чтение - модификация - запись. Например:
CPL P3.1 ;Проинвертировать сигнал на первой ножке порта P3
ORL P2,#56h ;Установить единичный сигнал на ножках 1,2,4 и 6 порта P2
ANL P3,#03h ;Установить
нулевой сигнал на ножках 0 и
1 порта P3
Порты микросхемы
служат для управления внешними устройствами,
подключенными к
Рисунок 2. Схема
подключения светодиодных индикаторов
к параллельному порту.
Присутствие в
схеме мощного транзистора