Мегаобучалка Главная | О нас | Обратная связь


Система команд микроконтроллера семейства 8051.



2020-02-04 175 Обсуждений (0)
Система команд микроконтроллера семейства 8051. 0.00 из 5.00 0 оценок




 

Название команды Мнемокод КОП Т Б Ц Операция
Пересылка в аккумулятор из регистра (n=0÷7) MOV A, Rn 11101rrr 1 1 1 (A) (Rn)
Пересылка в аккумулятор прямоадресуемого байта MOV A, ad 11100101 3 2 1 (A) (ad)
Пересылка в аккумулятор байта из РПД (i=0,1) MOV A, @Ri 1110011i 1 1 1 (A) ((Ri))
Загрузка в аккумулятор константы MOV A, #d 01110100 2 2 1 (A) #d
Пересылка в регистр из аккумулятора MOV Rn, A 11111rrr 1 1 1 (Rn) (A)
Пересылка в регистр прямоадресуемого байта MOV Rn, ad 10101rrr 3 2 2 (Rn) (ad)
Загрузка в регистр константы MOV Rn, #d 01111rrr 2 2 1 (Rn) #d
Пересылка по прямому адресу аккумулятора MOV ad, A 11110101 3 2 1 (ad) (A)
Пересылка по прямому адресу регистра MOV ad, Rn 10001rrr 3 2 2 (ad) (Rn)
Пересылка прямоадресуемого байта по прямому адресу MOV add, ads 10000101 9 3 2 (add) (ads)
Пересылка байта из РПД по прямому адресу MOV ad, @Ri 1000011i 3 2 2 (ad) ((Ri))
Пересылка по прямому адресу константы MOV ad, #d 01110101 7 3 2 (ad) #d
Пересылка в РПД из аккумулятора MOV @Ri, A 1111011i 1 1 1 ((Ri)) (A)
Пересылка в РПД прямоадресуемого байта MOV @Ri, ad 0110011i 3 2 2 ((Ri)) (ad)
Пересылка в РПД константы MOV @Ri, #d 0111011i 2 2 1 ((Ri)) #d
Загрузка указателя данных MOV DPTR, #d16 10010000 13 3 2 (DPTR) #d16
Пересылка в аккумулятор байта из ПП MOVC A, @A+DPTR 10010011 1 1 2 ((A) +(DPTR))
Пересылка в аккумулятор байта из ПП MOVC A, @A+PC 10000011 1 1 2 (PC) (PC)+1,  (A) ((A)+(PC))
Название команды Мнемокод КОП Т Б Ц Операция
Пересылка в аккумулятор байта из ВПД MOVX A, @Ri 1110001i 1 1 2 (A) ((Ri))
Пересылка в аккумулятор байта из расширенной ВПД MOVX A,@DPTR 11100000 1 1 2 (A) ((DPTR))
Пересылка в ВПД из аккумулятора MOVX @Ri, A 1111001i 1 1 2 ((Ri)) (A)
Пересылка в расширенную ВПД из аккумулятора MOVX @DPTR,A 11110000 1 1 2 ((DPTR)) (A)
Загрузка в стек PUSH ad 11000000 3 2 2 (SP) (SP) + 1, ((SP)) (ad)
Извлечение из стека POP ad 11010000 3 2 2 (ad) (SP), (SP) (SP) - 1
Обмен аккумулятора с регистром XCH A, Rn 11001rrr 1 1 1 (A) ↔ (Rn)
Обмен аккумулятора с прямоадресуемым байтом XCH A, ad 11000101 3 2 1 (A) ↔ (ad)
Обмен аккумулятора с байтом из РПД XCH A, @Ri 1100011i 1 1 1 (A) ↔ ((Ri))
Обмен младших тетрад аккумулятора и байта РПД XCHD A, @Ri 1101011i 1 1 1 (A0…3) ↔((Ri)0…3)
Сложение аккумулятора с регистром (n=0÷7) ADD A, Rn 00l01rrr 1 1 1 (A) (A) + (Rn)
Сложение аккумулятора с прямоадресуемым байтом ADD A, ad 00100101 3 2 1 (A) (A) + (ad)
Сложение аккумулятора с байтом из РПД (i = 0,1) ADD A, @Ri 0010011i 1 1 1 (A) (A) + ((Ri))
Сложение аккумулятора с константой ADD A, #d    00100100 2 2 1 (A) (A) + #d
Сложение аккумулятора с регистром и переносом ADDC A, Rn 00111rrr 1 1 1 (A) (A) + (Rn) + (C)
Сложение аккумулятора с прямоадресуемым байтом и переносом ADDC A, ad 00110101 3 2 1 (A) (A) + (ad) + (C)
Сложение аккумулятора с байтом из РПД и переносом ADDC A, @Ri 0011011i 1 1 1 (A) (A) + ((Ri)) + (C)
Сложение аккумулятора с константой и переносом ADDC A, #d 00110100 2 2 1 (A) (A) + # d + (C)
Десятичная коррекция аккумулятора DA A 11010100            1 1 1 Если (А0…3)>9 или ((AC)=1),то(А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) (А4…7) + 6
Вычитание из аккумулятора регистра и заёма SUBB A, Rn 10011rrr 1 1 1 (A) (A) - (C) - (Rn)
Вычитание из аккумулятора прямоадресуемого байта и заема SUBB A, ad 10010101 3 2 1 (A) (A) - (C) - ((ad))
Вычитание из аккумулятора байта РПД и заема SUBB А, @Ri            1001011i 1 1 1 (A) (A) - (C) - ((Ri))
Вычитание из аккумулятора константы и заема SUBB А, d 10010100 2 2 1 (A) (A) - (C) - #d
Инкремент аккумулятора INC А 00000100 1 1 1 (A) (A) + 1
Инкремент регистра INC Rn 00001rrr 1 1 1 (Rn) (Rn) + 1
Инкремент прямоадресуемого байта INC ad 00000101 3 2 1 (ad) (ad) + 1
Инкремент байта в РПД INC @Ri 0000011i 1 1 1 ((Ri)) ((Ri)) + 1
Инкремент указателя данных INC DPTR 10100011 1 1 2 (DPTR ) (DPTR) + 1
Декремент аккумулятора DEC A 00010100 1 1 1 (A) (A) – 1
Декремент регистра DEC Rn 00011rrr 1 1 1 (Rn) (Rn) – 1
Декремент прямоадресуемого байта DEC ad 00010101 3 2 1 (ad) (ad) – 1
Декремент байта в РПД DEC @Ri 0001011i 1 1 1 ((Ri)) ((Ri)) - 1
Умножение аккумулятора на регистр В MUL AB 10100100 1 1 4 (B)(A) (A)*(В)
Деление аккумулятора на регистр В DIV AB 10000100 1 1 4 (B).(A) (A)/(В)

 

Логическое И аккумулятора и регистра ANL A, Rn 01011rrr 1 1 1 (A) (A) AND (Rn)
Логическое И аккумулятора и прямоадресуемого байта ANL A, ad 01010101 3 2 1 (A) (A) AND (ad)
Логическое И аккумулятора и байта из РПД ANL A, @Ri 0101011i 1 1 1 (A) (A) AND ((Ri))
Логическое И аккумулятора и константы ANL A, #d 01010100 2 2 1 (A) (A) AND #d
Логическое И прямоадресуемого байта и аккумулятора ANL ad, A 01010010 3 2 1 (ad) (ad) AND (A)
Логическое И прямоадресуемого байта и константы ANL ad, #d 01010011 7 3 2 (ad) (ad) AND #d
Логическое ИЛИ аккумулятора и регистра ORL A, Rn 01001rrr 1 1 1 (A) (A) OR (Rn)
Логическое ИЛИ аккумулятора и прямоадресуемого байта ORL A, ad 01000101 3 2 1 (A) (A) OR (ad)
Логическое ИЛИ аккумулятора и байта из РПД ORL A, @Ri 0100011i 1 1 1 (A) (A) OR ((Ri))
Логическое ИЛИ аккумулятора и константы ORL A, #d 01000100 2 2 1 (A) (A) OR #d
Логическое ИЛИ прямоадресуемого байта и аккумулятора ORL ad, A 01000010 3 2 1 (ad) (ad) OR (A)
Логическое ИЛИ прямоадресуемого байта и константы ORL ad, #d 01000011 7 3 2 (ad) (ad) OR #d
Исключающее ИЛИ аккумулятора и регистра XRL A, Rn 01101rrr 1 1 1 (A) (A) XOR (Rn)
Исключающее ИЛИ аккумулятора и прямоадресуемого байта XRL A, ad 01100101 3 2 1 (A) (A) XOR (ad)
Исключающее ИЛИ аккумулятора и байта из РПД XRL A, @Ri 0110011i 1 1 1 (A) (A) XOR ((Ri))
Исключающее ИЛИ аккумулятора и константы XRL A, #d 01100100 2 2 1 (A) (A) XOR #d
Исключающее ИЛИ прямоадресуемого байта и аккумулятора XRL ad, A 01100010 3 2 1 (ad) (ad) XOR (A)
Исключающее ИЛИ прямоадресуемого байта и константы XRL ad, #d 01100011 7 3 2 (ad) (ad) XOR #d
Сброс аккумулятора CLR A 11100100 1 1 1 (A) 0
Инверсия аккумулятора CPL A 11110100 1 1 1 (A) NOT(A)
Сдвиг аккумулятора влево циклический RL A 00100011 1 1 1 (An+1) (An), n=0÷6, (A0) (A7)
Сдвиг аккумулятора влево через перенос RLC A 00110011 1 1 1 (An+1) (An), n=0÷6 (A0) (C), (C) (A7)
Сдвиг аккумулятора вправо циклический RR A 00000011 1 1 1 (An) (An+1), n=0÷6, (A7) (A0)
Сдвиг аккумулятора вправо через перенос RRC A 00010011 1 1 1 (An) (An+1), n=0÷6 (A7) (C), (C) (A0)
Обмен местами тетрад в аккумуляторе SWAP A 11000100 1 1 1 (A0…3) ↔ (A4…7)

 

Сброс переноса CLR С 11000011 1 1 1 (C) 0
Сброс бита CLR bit 11000010 4 2 1 (b) 0
Установка переноса SETB С 11010011 1 1 1 (C) 1
Установка бита SETB bit 11010010 4 2 1 (b) 1
Инверсия переноса CPL С 10110011 1 1 1 (C) NOT(C)
Инверсия бита CPL bit 10110010 4 2 1 (b) NOT(b)
Логическое И бита и переноса ANL С, bit 10000010 4 2 2 (C) (C) AND (b)
Логическое И инверсии бита и переноса ANL С, /bit 10110000 4 2 2 (C) (C) AND (NOT(b))
Логическое ИЛИ бита и переноса ORL С, bit 01110010 4 2 2 (C) (C) OR (b)
Логическое ИЛИ инверсии бита и переноса ORL С, /bit 10100000 4 2 2 (C) (C) OR (NOT(b))
Пересылка бита в перенос MOV С, bit 10100010 4 2 1 (C) (b)
Пересылка переноса в бит MOV bit, С 10010010 4 2 2 (b) (C)
Длинный переход в полном объеме ПП LJMP ad16 00000010 12 3 2 (PC) ad16
Абсолютный переход внутри страницы в 2 Кб AJMP ad11 a10a9a800001 6 2 2 (PC) (PC) + 2, (PC0-10) ad11
Короткий относительный переход внутри страницы в 256 байт SJMP rel 10000000 5 2 2 (PC) (PC) + 2, (PC) (PC) +rel
Косвенный относительный переход JMP @A+DPTR 01110011 1 1 2 (PC) (A) + (DPTR)
Переход, если аккумулятор равен нулю JZ rel 01100000 5 2 2 (PC)(PC)+2, если (A)=0, то (PC)(PC)+rel
Переход, если аккумулятор не равен нулю JNZ rel 01110000 5 2 2 (PC)(PC)+2, если (A)≠0, то (PC)(PC)+rel
Переход, если перенос равен единице JC rel 01000000 5 2 2 (PC)(PC)+2, если (С)=1, то (PC)(PC)+rel
Переход, если перенос равен нулю JNC rel 01010000 5 2 2 (PC)(PC)+2, если (С)=0, то (PC)(PC)+rel
Переход, если бит равен единице JB bit, rel 00100000 11 3 2 (PC)(PC)+3, если (b)=l, то (PC)(PC)+rel
Переход, если бит равен нулю JNB bit, rel 00110000 11 3 2 (PC)(PC)+3, если (b)=0, то (PC)(PC)+rel
Переход, если бит установлен, с последующим сбросом бита JBC bit, rel 00010000 11 3 2 (PC) (PC) + 3, если (b)=1, то (b) 0 и (PC) (PC) + rel
Декремент регистра и переход, если не нуль DJNZ Rn, rel 11011rrr 5 2 2 (PC) (PC) + 2, (Rn) (Rn) - 1, если (Rn) ≠ 0, то (PC) (PC) + rel
Декремент прямоадресуемого байта и переход, если не нуль DJNZ ad, rel 11010101 8 3 2 (PC) (PC) + 2, (ad) (ad) - 1, если (ad) ≠ 0, то (PC) (PC) + rel
Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно CJNE A, ad, rel 10110101 8 3 2 (PC) (PC) + 3,если (A) ≠ (ad), то (PC) (PC) + rel,если (A) < (ad), то (C) 1, иначе (C) 0
Сравнение аккумулятора с константой и переход, если не равно CJNE A, #d, rel 10110100 10 3 2 (PC) (PC) + 3,если (A) ≠ #d, то (PC) (PC) + rel,если (A) < #d, то (C) 1, иначе (С) 0
Сравнение регистра с константой и переход, если не равно CJNE Rn, #d, rel 10111rrr 10 3 2 (PC) (PC) + 3,если (Rn) ≠ #d, то (PC) (PC) + rel,если (Rn) < #d, то (C) 1, иначе (С) 0
Сравнение байта в РПД с константой и переход, если не равно CJNE @Ri,#d,rel 1011011i 10 3 2 (PC) (PC) + 3,если ((Ri)) ≠ #d, то (PC) (PC) + rel,если ((Ri)) < #d, то (C) 1, иначе (C) 0
Длинный вызов подпрограммы LCALL adl6 00010010 12 3 2 (PC) (PC) + 3, (SP) (SP) +1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC) ad16
Абсолютный вызов подпрограммы в пределах страницы в 2 Кб ACALL ad11 a10a9a810001 6 2 2 (PC) (PC) + 2, (SP) (SP) + 1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC0-10) ad11
Возврат из подпрограммы RET 00100010 1 1 2 (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
Возврат из подпрограммы обработки прерывания RETI 00110010 1 1 2 (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
Пустая операция NOP 00000000 1 1 1 (PC) (PC) + 1

Приложение Б

 

Подпрограмма основного опроса датчиков, передача сигнала на последовательный порт (модем) адреса датчика при его ;срабатывании.

OPROS:               

в P1.0..P1.3 записывается адресующий код мультиплексора – код

проверяемого датчика

ADDRESS_BIT0 EQU P1.0 ;адрес бита порта P1.0

ADDRESS_BIT1 EQU P1.1 ;адрес бита порта P1.1

ADDRESS_BIT2 EQU P1.2 ;адрес бита порта P1.2

ADDRESS_BIT3 EQU P1.3 ;адрес бита порта P1.3

TEMP EQU R1 ;адрес регистра R1

P0.0, P0.1 – биты выходного сигнала мультиплексоров №1 и №2 соответственно

BIT_Q_MUX1 EQU P0.0 ;адрес бита порта P0.0

BIT_Q_MUX2 EQU P0.1 ;адрес бита порта P0.1

 

CLR A   ;сброс аккумулятора

CLR P1.4 ;разрешение работы мультиплексора №1  

CLR P1.5 ;разрешение работы мультиплексора №2  

CALL INIT ;вызов подпрограммы инициализации последовательного ;порта  

START_OPROS:

MOV C,ACC.0 ;запись адреса проверяемого ;датчика

MOV ADDRESS_BIT0,С

в порты P1.0..P1.3 через бит ;переноса

MOV C,ACC.1

MOV ADDRESS_BIT1,C

MOV C,ACC.2

MOV ADDRESS_BIT2,C

MOV C,ACC.3

MOV ADDRESS_BIT3,C

JNB BIT_Q_MUX1,NOT_ERR

если не сработал датчик

подсоединенный к 1-му

мультиплексору, то проверить

датчик по такому же адресу 2-го

мультиплексора

CLR TEMP    ;очищаем регистр, для временного хранения адреса датчика

MOV TEMP,A ;заносим адрес сработавшего датчика

ORL A,#00010000B

4-й бит аккумулятора обозначает 1-й мультиплексор

CALL SP_OUT ;вызов подпрограммы передачи ;данных о сработавшем датчике через последовательный порт

MOV A,TEMP ;восстанавливаем значение адреса ;датчика

NOT_ERR:

JNB BIT_Q_MUX2,END_OPROS

если не сработал датчик ;подсоединенный ко 2-му ;мультиплексору, то продолжить сканирование

CLR TEMP    ;очищаем регистр, для временного ;хранения адреса датчика

MOV TEMP,A ;заносим адрес сработавшего ;датчика

ORL A,#00100000B

5-й бит аккумулятора обозначает ;2-й мультиплексор

CALL SP_OUT ;вызов подпрограммы передачи ;данных о сработавшем датчике через последовательный порт

MOV A,TEMP ;восстанавливаем значение адреса ;датчика

END_OPROS:

CJNE A,#00001111B,NOT_EXIT

если была опрошена последняя ;пара датчиков, то

RET ;возвращение из подпрограммы ;опроса датчиков

NOT_EXIT:

INC A   ;увеличение аккумулятора на 1, для опроса следующей пары датчиков

JMP START_OPROS

продолжаем опрос

 Подпрограмма инициализации последовательного порта в режиме 3 со скоростью передачи данных 2400 бод.

INIT: MOV SCON,#00100010B

    MOV TMOD,#00100000B

    ;настройка Т/С1

MOV PCON,#0 ;сброс бита SMOD

MOV TH1,#<.NOT.13+1

K=f/(12*32*0.0024)= 13, где ;f=12МГц есть частота синхронизации микроконтроллера

    SET TR1 ;включить Т/С1

    RET ;вернуться из подпрограммы

Пподпрограмма передачи данных и контрольного бита данных через последовательных порт

SP_OUT: MOV C,P ;пересылка контрольного бита

    MOV TB8,C   ;из флага паритета SCON.3

M1: JNT T1,M1 ;синхронизация передачи

    CLR T1 ;сброс бита SCON.1

    MOV SBUF,A ;передача контрольного бита и содержимого аккумулятора через последовательный порт

    RET



2020-02-04 175 Обсуждений (0)
Система команд микроконтроллера семейства 8051. 0.00 из 5.00 0 оценок









Обсуждение в статье: Система команд микроконтроллера семейства 8051.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (175)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)