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

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

 

 

 

 

 

 

 

 

 

 

 

 

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

 

В семействе 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) формируются только значения признаков результата.

Значения