Система команд микроконтроллеров
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
Система команд микроконтроллеров
В семействе AVR система команд у микроконтроллеров разных типов содержат от 89 до 130 команд (табл. В1, колонка NK). У микроконтроллеров типа 2323, 2343, 2313, 4433, 8515 и 8535 в систему команд входят 118 команд. Эту систему команд будем называть базовой.
В табл. 113 описаны операции, выполняемые по командам базовой системы, и приведены мнемокоды команд, используемые при разработке программы на языке AVR Ассемблера. В таблицах дана сквозная нумерация команд, используемая далее в тексте.
Базовая система команд содержит:
¦ 33 команды регистровых операций, при выполнении которых используются только регистры общего назначения (команды №№ 133);
¦ 26 команд с обращением по адресу в адресном пространстве SRAM (команды №№ 3459);
¦ 2 команды с обращением к регистрам ввода-вывода (команды №№ 60 и 61);
¦ 1 команда с обращением к FlashROM (команда № 62);
¦ 22 команды операций с битами в разрядах регистров общего назначения и регистров ввода-вывода (команды №№ 6384);
¦ 34 команды управления ходом программы (команды №№ 85118).
В систему команд микроконтроллеров типа t1l, t12, t15, 1200 и t28, у которых нет SRAM, не входят команды с обращением по адресу в адресном пространстве SRAM за исключением команд с мнемокодами LD Rd, Z (№ 40) и ST Z, Rr (№ 41), по которым производится обращение к регистрам общего назначения и регистрам ввода-вывода с использованием косвенной адресации. В систему команд у этих микроконтроллеров не входят также 2 команды регистровых операций (№№ 32 и 33) и две команды управления ходом программы (№№ 86 и 88). У микроконтроллеров типа 1200 в систему команд не входит также команда с обращением к FlashROM (№ 62).
В систему команд микроконтроллеров типа m163 и m10З входят дополнительные команды. Появление некоторых из них связано с увеличенным объемом FlashROM, а у микроконтроллера типа т163, кроме того, с наличием аппаратного умножителя.
При разработке программы работы микроконтроллера кроме мнемокодов команд используются директивы ассемблера и другие средства ассемблера. Особенности разработки программы на языке AVR Ассемблера фирмы Atmel рассмотрены в приложении П8.
Таблица 1
№ОперацияМнемокод командыПризнаки результатаHSVNZC1CLR00012TST+0++3COM+0++14NEG++++++5INC++++6DEC++++7LSR++0++8LSL++++++9ROR+++++10ROL++++++11ASR+++++12SWAP13MOV14ADDV++++++15ADC++++++16SUB++++++17SBC++++++18CP++++++19CPC++++++20AND+0+++21OR+0++22EOR+0++d = 0 31, r = 0 31
Таблица 2
№ОперацияМнемокод командыПризнаки результата23SERHSVNZC24LDI25SUBI++++++26SBCI++++++27CPI++++++28ANDI+0++29CBR+0++30ORI+0++31SBR+0++d = 16 31 (), K = 0 255
Таблица 3
№ОперацияМнемокод командыПризнаки результатаHSVNZC32ADIW+++++33SBIW+++++d = 24, 26, 28, 30, K = 0 63
Таблица 4
№ОперацияМнемокод команды№ОперацияМнемокод команды34LSD35STSd, r = 0 31, k адрес из адресного пространства SRAMТаблица 5
№ОперацияМнемокод команды№ОперацияМнемокод команды36LD37ST38LD39ST40LD41ST421
2LD431
2ST441
2LD451
2ST461
2LD471
2ST481
2LD491
2ST501
2LD511
2ST521
2LD531
2ST54LDD55ST56LDD57ST581
2POP591
2PUSH d, r = 0 31, q = 0 63
Таблица 6
№ОперацияМнемокод команды№ОперацияМнемокод команды60IN 61OUTd, r = 0 31, P = 0 63 = $00-$3F
Таблица 7
№ОперацияМнемокод команды(Z.15-1) адрес в FlashROM
Z.0 = 0 мл. байт; Z.0 = 1 ст. байт62LPM
Таблица 8
№ОперацияМнемокод команды№ОперацияМнемокод команды63BLD64BST65CBI66SBI67BCLR68BSETd, r = 0 31; P = 0 31(!); b = 0 7
Таблица 9
№ОперацияМнемокод команды№ОперацияМнемокод команды69CLI70SEI71CLT72SET73CLH74SHE75CLS76SES77CLV78SEV79CLN80SEN81CLZ82SEZ83CLC84SEC
Таблица 10
№ОперацияМнемокод команды№ОперацияМнемокод команды85RJMP k86IJMP871.
2.
3. RCALL k881.
2.
3. ICALL891.
2. RET901.
2.
3. RETIk = -2048 - +2047В группу регистровых операций входят пересылочные, арифметические и логические операции. Команды регистровых операций описаны в табл. 1, 2 и 3. Машинные коды всех команд регистровых операций имеют формат "слово", команды №№ 131 выполняются за один такт, а команды №№ 32 и 33 за два такта.
При описании операций в табл. 13 используются следующие обозначения:
Таблица 11
№ОперацияМнемокод команды№ОперацияМнемокод команды91I = 0BRID k92I = 1BRIE k93T = 0BRTC k94T = 1BRTS k95H = 0BRHC k96H = 1BRHS k97S = 0BRGE k98S = 1BRLT k99V = 0BRVC k100V = 1BRVS k101N = 0BRPL k102N = 1BRMI k103Z = 0BRNE k104Z = 1BREQ k105C = 0BRCC k106C = 1BRCS k107C = 0BRSH k108C = 1BRLO k109SREG.b=0BRBC b, k110SREG.b= 1BRBS b, kk = -64 +63; b = 0 7
Таблица 12
№ОперацияМнемокод команды№ОперацияМнемокод Команды111SBRC 112SBRS 113SBIC 114SBIS 115CPSE d, r = 0 31; P = 0 31 (!); b = 0 7
Таблица 13
№ОперацияМнемокод команды116МК режим энергосбереженияSLEEP117Перезапуск WDTWDR118НетNOP
¦ RdRr регистры общего назначения с номерами d и r соответственно;
¦ (Rd), (Ri) байты в регистрах Rd n R, соответственно;
¦ Rd.b разряд b (b = 07) регистра Rfi, бит в разряде Rd.b;
¦ $ указатель шестнадцатернчного кода;
¦ ^, v, + - знаки логических операции И, ИЛИ, исключающее ИЛИ соответственно;
¦ (?)/( ),( ) знаки операции НЕ, сдвиг кода вправо, сдвиг кода влево соответственно.
Арифметические операции сложение и вычитание могут выполняться с числами без знака в двоичном коде и с числами со знаком в дополнительном двоичном коде. В отличие от микроконтроллеров многих других семейств, в которых вычитание сводится к сложению с числом с измененным знаком (X-Y = X + (-Y )), в микроконтроллерах семейства AVR вычитание выполняется с помощью аппаратного двоичного вычитателя. Работа двоичного вычитателя рассмотрена в приложении П7.
При выполнении арифметических и логических операций кроме кода результата формируются значения признаков результата. При выполнении операций сравнения (команды М№ 18, 19 и 27) формируются только значения признаков результата.
Значения