logo
МПТ_L_к

7.4. Система команд мп кр1816ве51

МП КР1816ВЕ51 виконує понад 250 команд по обробці цифрової інформації із всіма його складовими, які приведені,наприклад, в [3], і частину із них розглянемо далі. По функціональному призначенню систему команд, яку використовує МП КР1816ВЕ51, можна розділити на наступні групи:

А) переміщення (пересилання) MOV <байт призначення>, <байт

джерело>; (MOV - aбревіатура команди) - переміщення (пересилання) байта даних від регістра джерела до регістра призначення, або між регістрами та пам’яттю. Наприклад:

MOV А, Rn; передати те, що міститься в регістрі Rn в регістр A, де n = від 0 до 7 (один із вісьми регістрів загального призначення одного банку);

MOV R3, R0; передати те, що міститься в регістрі R0 в регістр R3;

MOV А, R5; передати те, що міститься в регістрі R5 в регістр А;

MOV R5, А; передати те, що міститься в регістрі А в регістр R5;

MOV А,#37Н; занести в регістр А число (константу) 37Н (0011 0111 В);

MOV Rn, ,#45Н; – занести в регістр Rn число 45Н (0100 0101 В);

MOV PSW,Rn; – занести в регістр PSW те, що вміщує регістр Rn;

MOV @Rn,А; – занести в комірку резидентної памяті даних, що знаходиться за одресою, яка знаходиться у регісті Rn; те, що вміщує А (акумулятор);

MOV 24Н,@Rn; – занести в комірку резидентної памяті даних, що

знаходиться за одресою, наприклад, 24Н те, що вміщує така ж комірка за

адресою, яка знаходиться у регісті Rn;

MOV 51Н,45Н; – занести в комірку резидентної памяті даних, що знаходиться за одресою, наприклад, 51Н, те, що вміщує така ж комірка за адресою, наприклад, 45Н;

MOV 51Н,#45Н; – занести в комірку резидентної памяті даних, що знахо-диться за одресою, наприклад, 51Н, безпосередньо число, наприклад, 45Н;

MOV @Rn,Р0; – занести в комірку резидентної памяті даних, що знаходиться за адресою, яка знаходиться у регісті Rn; те, що вміщує порт Р0;

MOV @Rn,#45Н; – занести в комірку резидентної памяті даних, що знаходиться за одресою, яка знаходиться у регісті Rn, число, наприклад, 45Н;

MOV С, Р3.7; – занести у біт перенесення С, те, що вміщує, наприклад, сьомий біт порта Р3;

MOV Р3.7,С, – занести, наприклад, у сьомий біт порта Р3 значення біту перенесення С;

MOV DPTR,#1245Н; – занести в показник DPTR даних із зовнішньої памяті, безпосередньо адресу, наприклад, 1245Н;

MOVХ @DPTR,А; – занести в комірку зовнішньої памяті, адресу якої вміщує показник DPTR, те ,що вміщує А (акумулятор);

MOVХ А,@DPTR; – занести в А дані із зовнішньої комірку памяті, адресу яких вміщує показник DPTR;

Б) перетворення даних (арифметичні та логічні).До них входять команди: додавання, віднімання , збільшення чи зменшення кодів на 1, які можуть знаходитись або в регістрах, або пам”яті. Сюди входять також команди, які реалізують логічні операції АБО та ТА, виключальне АБО, порівняння та інвертування акумулятора і біту перенесення. Наприклад:

ADD А,Rn; та ADDC А,Rn; – до того, що знаходиться в акумуляторі А додати або додати з урахуванням перенесення вмістиме регістра Rn;

Наприклад, (А)= АЕН; (R3) = 75Н; біт перенесення СY=1; неохідно виконати команду АDDС А, R3; після операції отримуємо:

СY = 0000 0001

АЕН = 1010 1110

7 = 0111 0101

= 1 0010 0100 = 24Н та ще біт перенесення CY = 1, значення якого повинно враховуватись в наступній команді.

ADD А,#77Н; та ADDC А,#77Н; – до того, що знаходиться в акумуляторі А додати або додати з урахуванням перенесення для другого випадку, безпосередньо число,наприклад, 77Н; результат залишити в А;

ADD А, @Rn; та ADDC А, @Rn; – до того, що знаходиться в акумуляторі

А додати або додати з урахуванням перенесення вмістиме комірки резидентної памяті, адреса якої знаходиться в регістрі Rn; результат залишити в А;

SUBB А,Rn; – від того, що знаходиться в акумуляторі А відняти з запозиченням та з урахуванням перенесення те, що знаходить в регістрі Rn;

SUBB А, @Rn; – від того, що знаходиться в акумуляторі А відняти з

запозиченням та з урахуванням перенесення те, що знаходить в комірці

резидентної пам’яті, адреса якої знаходиться в регістрі Rn; результат - в А;

SUBB А,#37Н; – від того, що знаходиться в акумуляторі А відняти з запозиченням та з урахуванням перенесення число, н., 37Н; результат - в А;

ANL С, <біт порта> та ORL С,< біт порта >виконати логічні операції ТА та АБО в другому випадку між бітом перенесення та бітом указаного порта;

результат операції присвоїти біту перенесення С; наприклад:ANL С,Р1.1;

ORL С,Р1.0;

ANL С, </біт порта> та ORL С,</біт порта >виконати логічні операції

ТА та АБО в другому випадку між бітом перенесення та інвертованим бітом указаного порта; результат операції присвоїти біту перенесення С; наприклад:ANL С,/АС;

ANL <байт призначення>,<байт джерела> та ORL <байт призначення>,<байт джерела> виконати порозрядно логічні операції ТА та АБО в другому випадку між байтом призначення та байтом джерела; резуль-тат операції присвоїти байту призначення; наприклад: ANL А,Rn; ORL А,Rn;

ANL А,@Rn; та ORL А,@Rn - виконати порозрядно логічні операції ТА та АБО в другому випадку між А та вмітимим комірок резидентної пам’яті, адреса якої знаходиться в регістрі Rn; результат зберегти в А;

ANL А,#7АН; та ORL А,#7АН - виконати порозрядно логічні операції ТА та АБО в другому випадку між А та безпосередньо числом,наприклад, 7АН;

результат залишити в А;

XRL <байт призначення>,<байт джерела> виконати порозрядно функцію нерівнозначності між двома байтами; результат операції присвоїти байту призначення; наприклад, XRL А,Rn;

XRL А,@Rn; теж саме між А та байтом,адреса якого вміщується в регістрі;

XRL Р1,А; теж саме між портом РІ та А; (модифікація порту Р1);

INС <байт>; та DЕC <байт>; - збільшити та зменшити для другого

випадку значення на 1 операнду; наприклад, INС Rn; DЕC Rn; - збільшити та зменшити вмістиме вибраного одного із 8-ми регістрів резидентної пам’яті;

INС @Rn; та DЕC @Rn; - збільшити та зменшити вмістиме комірки резидентної пам’яті , адреса якої знаходиться у вибраному регістрі Rn;

СLR А; та СLR С; – скинути в нуль акумулятор А та біт перенесення С;

СLR Р1.4 – скинути в нуль наприклад, четвертий біт порта Р1;

SETB Р2.0 – установити в одиницю, наприклад, нульовий біт порта Р2;

СРL А; – провести функцію інверсії над вмістимим акумулятора А;

СРL Р1.5; – провести функцію інверсії над п’ятим бітом порта Р1;

СРL С; – провести функцію інверсії над бітом перенесення С;

DА А; - провести десяткову корекцію акумулятора;

В) управління програмою - входять команди розгалуження, які виконують умовні та безумовні виклики підпрограм та повернень із підпрограм. Наприклад:

LCALL <адреса 16 біт>;довгий виклик підпрограми за указаною адресою; в якості адреси може бути мітка, наприклад, LCALL РRN; а РRN – мітка;

LJMP < адреса 16 біт >; довгий безумовний перехід за указаною адресою; в якості адреси може бути мітка, наприклад, LJMP РRN; а РRN – мітка;

SJMP <мітка>; короткий безумовний перехід за указаною адресою; в якості якої використовується мітка, наприклад, SJMP МЕТ; а МЕТ – мітка;

JВ <біт>,<мітка>;– перехід на адресу, що вказана у мітці, за умови логічної 1 в біті, наприклад, JВ Р1.1,LAВ 1; якщо в порту Р1.1 «1», то перехід на LAВ 1;

JNВ <біт>,<мітка>;– перехід на адресу, що вказана у мітці, за умови логічної 0 в біті, наприклад, JNВ Р1.1,LAВ 1; якщо в порту Р1.1 «0», то

перехід на LAВ 1;

JС <мітка>;– перехід на адресу, що вказана у мітці, за умови логічної 1 в біті перненесення, наприклад, JС LAВ 1;

JNС <мітка>;– перехід на адресу, що вказана у мітці, за умови логічної 0 в біті перненесення, наприклад, JNС LAВ 1;

СJNЕ <байт призначення>,<байт джерела>,<мітка>;– порівняння та перехід на <мітку>, якщо вмістиме перших двох байтів не рівні; при цьому , якщо вмістиме байта призначення > вмістимого байт джерела біт перенесення С установлюється в «0», якщо ж навпаки - то в «1»; якщо ж байти рівні, то переходу не має, а біт С = «0».

Операнди дають наступні типи адресації при цій команді, наприклад:

СJNЕ А, Р2, МТ3; (порівнюється вмістиме А та порта);

СJNЕ Rn, #85Н, МТ4; (порівнюється вмістиме довільного регістра резидентної пам’яті даних Rn та будь-якої константи);

СJNЕ @Rn, #А7Н, МТ5; (теж саме, але вмістиме комірки пам’яті, адреса

якої знаходиться у регістрі Rn);

DJNZ <байт>,<мітка>;– декремент і перехід на <мітку>, якщо після віднімання «1» із вказаної комірки результат не дорівнює «0», якщо ж навпаки - то переходу не має. Вживані приклади використовування цієї команди:

LAВ 4: СРL Р1.7 ; інверсія біту Р1.7

DJNZ R2, LAВ 4; якщо в регістр R2 занести число 08Н,то така

; послідовність команд перемикає біт Р1.7 8-м раз

; і на виході Р1.7 зявляються 4-ри імпульси;

Вживання мнемокоду DJNZ добавляє за кожну ітерацію по два машинних цикли. В наступному прикладі інструкції визивають необхідну тривалість низького рівня імпульсу читання WR (читання із пам’яті) на виході МП:

СLR WR ; установка низького рівня на виході читання МП

MOV R1, ,#45Н; занести в регістр R1 число 45Н (0100 0101 В)

DJNZ R1, $; декремент R1; знак $ є спеціальним символом адреси

; плинної інструкції і замінює мітку в рядках програми

; (використовують для $ термін «змикання на себе»)

SETB WR ; установка високого рівня на виході читання МП;

RET; – повернення із підпрограми;

RETІ; – повернення із підпрограми з установленням логіки переривань, що

дозволяє наступне переривання,яке по рівню, відповідає рівню, тільки що виконаного;

Г) вводу-виводу: