Состав семейства MCS-51

Автор работы: Пользователь скрыл имя, 11 Апреля 2011 в 12:22, реферат

Краткое описание

В настоящее время среди всех 8-разрядных микроконтроллеров - семейство MCS-51 является несомненным чемпионом по количеству разновидностей и количеству компаний, выпускающих его модификации. Оно получило свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии n-МОП.

Содержимое работы - 1 файл

MSC51.doc

— 589.00 Кб (Скачать файл)

Пример: 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 - десятичная  коррекция аккумулятора при сложении  двоично-десятичных чисел. 

Описание: команда  десятичной коррекции позволяет  вести сложение чисел, представленных в упакованном двоично-десятичном коде. Команда применяется после инструкций ADD или ADDC. Инструкции (команды) ADD или ADDC позволяют суммировать сразу две тетрады, расположенные в одном байте. 

Если биты аккумулятора с 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-битовое беззнаковое целое число  из аккумулятора А на 8-битовое целое  без знака в регистре В. В аккумулятор A заносится целая часть результата деления, а в регистр В - остаток. Флаги переноса C и переполнения OV будут очищены (записан '0'). Если в регистре B перед операцией деления содержится '0', то в аккумуляторы A и B будут занесены неопределенные значения, а флаг переполнения будет установлен (записана '1'). 

Количество байт: 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. Этот рисунок иллюстрирует особенности подключения индикаторов к параллельным портам микроконтроллера MCS-51. 

 

Рисунок 2. Схема  подключения светодиодных индикаторов  к параллельному порту. 

Присутствие в  схеме мощного транзистора позволяет  подключать к выводам порта светодиодные индикаторы непосредственно без  усилителя мощности. Однако при этом необходимо следить за максимальной допустимой мощностью, рассеиваемой на микросхеме и напряжением, подаваемом на светодиод. Эквивалентная схема, на которой показан путь протекания выходного тока порта приведена на рисунке 3. Как видно из этой схемы именно этот ток используется для зажигания светодиода. 

Информация о работе Состав семейства MCS-51