4. Ваша первая программа для микроконтроллера Intel 8051: Методические указания к лабораторной работе №1 по курсу « Микропроцессоры и вычислительные устройства» / Добряк В.А. Екатеринбург: УГТУ, 1999.
32с.
5. Система команд микроконтроллера INTEL 8051: Методические указания к лабораторной работе №2 по курсу «Цифровые устройства и микропроцессоры»/В.А.Добряк, В.К.Рогозин, Екатеринбург: УГТУ, 1999.32с.
ПРИЛОЖЕНИЕ Система команд микроконтроллера К1816ВЕ51
Команды передачи данных
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Пересылка в аккумулятор из регистра (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)<-((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 | 00101rrr | 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 V ((AC)=1), то (А0..3)<- (А0..3)+6, затем если (A4..7)>9 V ((С)=1), то (A4..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 A,@Ri | 1001011i | 1 | 1 | 1 | (A)<-(A)-(C)-((Ri)) |
Вычитание из аккумулятора константы и заёма | SUBB A,d | 10010100 | 2 | 2 | 1 | (A)<-(A)-(C)-#d |
Инкремент аккумулятора | INC A | 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)*(B) |
Деление аккумулятора на регистр В | DIV AB | 10000100 | 1 | 1 | 4 | (A).(B)<-(A)/(B) |
Команды логических операций
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Логическое И аккумулятора и регистра | 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)V(Rn) |
Логическое ИЛИ аккумулятора и прямоадресуемого байта | ORL A,ad | 01000101 | 3 | 2 | 1 | (A)<-(A)V(ad) |
Логическое ИЛИ аккумулятора и байта из РПД | ORL A,@Ri | 0100011i | 1 | 1 | 1 | (A)<-(A)V((Ri)) |
Логическое ИЛИ аккумулятора и константы | ORL A,#d | 01000100 | 2 | 2 | 1 | (A)<-(A)V#d |
Логическое ИЛИ прямоадресуемого байта и аккумулятора | ORL ad,A | 01000010 | 3 | 2 | 1 | (ad)<-(ad)V(A) |
Логическое ИЛИ прямоадресуемого байта и константы | ORL ad,#d | 01000011 | 7 | 3 | 2 | (ad)<-(ad)V#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+1)<-(An), n=0..6, (A7)<-(A0) |
Сдвиг аккумулятора вправо через перенос | RRC A | 00010011 | 1 | 1 | 1 | (An+1)<-(An), n=0..6, (A7)<-(C), (C)<-(A0) |
Обмен местами тетрад в аккумуляторе | SWAP A | 11000100 | 1 | 1 | 1 | (А0..3)<-(А4-7) |
Команды операций с битами