- •Міністерство транспорту та зв’язку україни львівський коледж державного університету інформаційно-комунікаційних технологій
- •Інструкція
- •До практичної роботи № 9
- •Вивчення системи команд
- •Однокристального мікроконтролера
- •2.Література:
- •3.Завдання:
- •4. Методичні вказівки.
- •5.Контрольні питання:
- •6.2. Завдання.
Міністерство транспорту та зв’язку україни львівський коледж державного університету інформаційно-комунікаційних технологій
Навчальна дисципліна: Обчислювальна техніка та мікропроцесори
Лабораторія: обчислювальної техніки, мікропроцесорних систем і мереж
Спеціальність 5.05090308 Монтаж, обслуговування
та експлуатація апаратних засобів інформатизації
РОЗГЛЯНУТО на засіданні циклової комісії фундаментальних дисциплін Протокол № від ”___”______2009 р. Голова комісії_________О.Лабаз |
|
ЗАТВЕРДЖУЮ Заступник директора з НВР ____________Я.Плешівський „___”________2009 р. |
Інструкція
До практичної роботи № 9
Вивчення системи команд
Однокристального мікроконтролера
Склали викладачі: Гамаль М.І. Горбатюк В.Ю. Погоджено: к.т.н. Бохонко Б.А.
|
Львів – 2010
1.МЕТА РОБОТИ: вивчити систему команд мікроконтролера, набути практичних навичок запису заданих команд.
2.Література:
2.1. Ю.І. Якименко, Т.О.Терещенко, Є.І. Сокол та ін. Мікропроцесорна техніка: Підручник. – Київ. – ІВЦ «Видавництво «Політехніка». – 2004. – 439 с.
2.2. В.І. Бойко, А.М. Гурій, В.Я. Жуйков та ін. Схемотехніка електронних систем: У 3 кн. Кн.2. Цифрова схемотехніка: Підручник. – Київ. – «Вища школа». 2004. – 423 с.
2.3. Інструкція до даної практичної роботи.
3.Завдання:
3.1.Вивчити способи адресації в командах ОМК 1816ВЕ51.
3.2.Вивчити класифікацію команд ОМК 1816ВЕ51.
3.3.Вивчити різновидності команд пересилки.
3.4.Вивчити команди інкрименту/дикрименту.
3.5.Вивчити команди арифметичних операцій.
3.6.Вивчити команди логічних операцій.
3.7.Вивчити команди циклічного зсуву.
3.8.Вивчити команди переходів.
3.9.Вивчити команди звертання до підпрограми.
3.10.Використовуючи систему команд МК записати мнемоніки наступних операції:
1 варіант |
2 варіант |
Занести в акумулятор число використовуючи безпосередню адресацію |
Занести в акумулятор число використовуючи непряму адресацію |
Занести в регістр R0 число , використовуючи пряму адресацію |
Занести в регістр R1 число , використовуючи безпосередню адресацію |
Виконати операцію додавання А та R0 |
Здійснити операцію віднімання AтаR1 з використанням запозичення |
Виконати операцію логічного І для R0 та А |
Виконати операцію логічного АБО А та R1 |
Очистити восьмий біт порту P1 |
Встановити перший біт акумулятора в 1 |
4. Методичні вказівки.
Система команд ОМК надає великі можливості для обробки даних, забезпечує реалізацію логічних, арифметичних операцій, а також керування в режимі реального часу. У МК реалізована побітова, потетрадная (4 біти), побайтна (8 біт) і 16-розрядна обробка даних.
Мікроконтролер сімейства 1816 - це 8-розрядна однокристальна мікро-ЕОМ. Тому ПЗП, ОЗП, регістри спеціального призначення, АЛП й зовнішні шини мають байтну організацію. Двобайтні дані використовуються тільки покажчиком (DPTR) і лічильником команд (PC). Слід зазначити, що регістр - покажчик даних може бути використаний як двобайтний регістр DPTR або як два однобайних регістри спеціального призначення DPH й DPL. Лічильник команд завжди використовується як двобайтний регістр.
Синтаксис команд ОМК складається із мнемонічного позначення функції, слідом за яким йдуть операнди, що вказують методи адресації й типи даних. Різні типи даних або режими адресації визначаються встановленими операндами. Наприклад, абревіатура "MOV" використовується вісімнадцятьма різними командами для обробки трьох типів даних (бітів, байтів, адрес) у різних адресних просторах.
Система команд ОМК 1816ВЕ51 містить 111 команд, які можна поділити на п’ять груп:
команди пересилання;
команди арифметичних операцій;
команди логічних операцій;
команди операцій з бітами;
команди переходів.
Більшість команд (94) мають формат 1 – 2 байти і виконуються за 1 – 2 машинні цикли.
В ОМК використовуються такі типи адресації:
пряма;
безпосередня;
непряма.
При запису команд ОМК К1816ВЕ51 використовуються такі позначення:
R – один з регістрів R0 – R7 (до якого блоку регістрового файлу належить вказаний регістр залежить від бітів RS0 і RS1 у слові стану, записанному у регістрі слова стану процессора PSW );
r – регістри R0, R1;
ad – байт з резидентної пам’яті даних (РПД) з прямою адресацією (у команді вказується або адреса байта – 00 – FF, або позначення одного з регістрів спеціальних функцій SFR, наприклад, TH0, P1, TCON, SBUF );
#data – безпосередні 8-розрядні дані (перед числовим значенням ставлять знак #);
d16 – безпосередні 16-розрядні дані;
add – байт-приймач з прямою адресацією;
ads – байт-джерело з прямою адресацією;
ad16 – 16-розрядна адреса;
ad11 – 11-розрядна адреса;
ad8 – 8-розрядна адреса-зміщення;
@ r – непряма адресація, де r – регістр-джерело адреси, ним може також бути регістр-вказівник даних (DPTR);
Мі(...) – комірка пам’яті (у дужках вказано адресу; індекс вказує тип пам’яті: РПД – резидентна пам’ять даних, ЗПД – зовнішня пам’ять даних, ПП – пам’ять програм);
bit – біт з прямою адресацією (у команді вказується або адреса біта – 00-7F, або розташування його в регістрі спеціальних функцій, наприклад, АСС.0 – нульовий біт акумулятора; Р1.2 – другий біт порту 1, або позначення біта в регістрі спеціальних функцій, наприклад, ЕА – біт загального дозволу переривань).
Мнемоніка |
Зміст команди |
Спосіб адресації |
Коментар |
MOV A,#5СH |
А← 5СН |
безпосер. |
Пересилка числа 5С16 в акумулятор |
SUBB A,@R0 |
А←А – МРПД(R0) - C |
непряма |
Віднімання від вмісту акумулятора байта з комірки РПД, адреса якої вказана в регістрі R0, і прапорця С |
MOV A, 63H |
А← ad |
пряма |
Пересилка в акумулятор байта з комірки за адресою 63Н |
SETB ACC.2 |
ACC.2←1 |
пряма |
Встановлення другого біта акумулятора |
ORL C,P2.0 |
C ←CVP.2.0 |
пряма |
Логічна операція АБО нульового біта порту Р2.0 і прапорця С |
Організація пам'яті програм і даних
МК1816 має гарвардську архітектуру - розділений адресний простір пам'яті програм і даних. Розподіл адресного простору РПП і РПД показаний на рис.1 і рис.2 відповідно.
Пам'ять програм EPROM (постійний запам'ятовувальний пристрій – ПЗП) розташовується з адреси 0000h, має ємність 4 Кбайти й призначена для зберігання команд, констант, слів ініціалізації, таблиць перекодування вхідних і вихідних змінних і т.п.. Пам'ять програм, розміщена на кристалі мікроконтролера, називається резидентною пам'яттю програм (РПП). Резидентна пам'ять програм має 16-бітну шину адреси, через яку забезпечується доступ до пам'яті з лічильника команд - PC або з регістра-покажчика даних - DPTR . Резидентна пам'ять програм доступна тільки для читання.
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
20H |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
21H |
0F |
0E |
0D |
0C |
0B |
0A |
09 |
08 |
22H |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
23H |
1F |
1E |
1D |
1C |
1B |
1A |
19 |
18 |
24H |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
25H |
2F |
2E |
2D |
2C |
2B |
2A |
29 |
28 |
26H |
37 |
36 |
35 |
34 |
33 |
32 |
31 |
30 |
27H |
3F |
3E |
3D |
3C |
3B |
3A |
39 |
38 |
28H |
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
29H |
4F |
4E |
4D |
4C |
4B |
4A |
49 |
48 |
2AH |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
2BH |
5F |
5E |
5D |
5C |
5B |
5A |
59 |
58 |
2CH |
67 |
66 |
65 |
64 |
63 |
62 |
61 |
60 |
2DH |
6F |
6E |
6D |
6C |
6B |
6A |
69 |
68 |
2EH |
77 |
76 |
76 |
74 |
73 |
72 |
71 |
70 |
2FH |
7F |
7E |
7D |
7C |
7B |
7A |
79 |
78 |
Пам'ять даних RAM (оперативний запам'ятовувальний пристрій) призначена для зберігання інформації в процесі виконання прикладної програми, адресується одним байтом і має ємність 128 байт. Пам'ять даних, розміщена на кристалі мікроконтролера, називається резидентною пам'яттю даних (РПД). Перші 32 байти згруповані в 4 банки по 8 регістрів R0 - R7. Команди мікроконтролера можуть звертатися до них як до регістрів загального призначення R0 - R7 й як до осередків ОЗП із прямою адресацією від 00h до 1Fh.
Молодші адреси РПП (рис.1) відводяться під початок роботи ОМК після скидання і обробку переривань (за цими адресами розміщені відповідні підпрограми).
Серед регістрів спеціальних функцій в РПД (рис.2) є регістри портів вводу-виводу Р0 – Р3, які призначені для забезпечення побайтового обміну інформацією ОМК із зовнішніми пристроями по 32 лініях вводу-виводу. Будь-яку лінію портів можна використовувати для вводу або виводу інформації незалежно від інших ліній. Фізичні адреси портів:
Р0 - 80Н, при бітовій адресації – 80Н-87Н;
Р1 – 90Н, при бітовій адресації – 90Н-97Н;
Р2 - А0Н, при бітовій адресації – А0Н-А7Н;
Р3 - В0Н, при бітовій адресації – В0Н-В7Н.
Мнемоніка |
Код команд |
К-кість байт |
К-кість циклів |
Опис команд |
|
Команди передачі даних |
|||||
MOV A,R0- R7 |
E8 |
1 |
1 |
A <- R0 |
|
MOV A, direct |
E5 |
2 |
1 |
A <- (direct) |
|
MOV A,@R0 |
E6 |
1 |
1 |
A <- @R0 |
|
MOV A, #data |
74 |
2 |
1 |
A <- data |
|
MOV R0,A |
F8 |
1 |
1 |
R0 <-A |
|
MOV R0, direct |
A8 |
2 |
2 |
R0 <- (direct) |
|
MOV R0,#data |
78 |
2 |
1 |
R0 <- data |
|
MOV direct, A |
F5 |
2 |
1 |
(direct) <- A |
|
MOV direct ,R0 |
88 |
2 |
2 |
(direct) <- R0 |
|
MOV direct ,@RO |
86 |
2 |
2 |
(direct) <- (RO) |
|
MOV direct ,#data |
84 |
2 |
2 |
(direct) <- #data |
|
MOV sdirect, ddirect |
85 |
2 |
2 |
(sdirect) <- (ddirect) |
|
MOV @R0,A |
F6 |
1 |
1 |
(R0) <- A |
|
MOV @R0, direct |
A6 |
2 |
1 |
(R0) <- (direct) |
|
MOV @R0, #data |
76 |
2 |
1 |
(R0) <- #data |
|
@R1, #data |
77 |
2 |
1 |
(R1) <- #data |
|
MOV DPTR,#datal6 |
90 |
3 |
2 |
DPTR <- #datal6 |
|
Команди роботи зі стеком |
|||||
PUSH direct |
CO |
2 |
2 |
SP<-SP+1 (SP)<-(direct) |
|
POP direct |
ВО |
2 |
2 |
(direct)<-(SP) SP<-SP-1 |
|
Команди арифметичних операцій. Додавання |
|||||
ADD A,R0 |
28 |
1 |
1 |
A<- A+R0 |
|
ADDC A,R0 |
38 |
1 |
1 |
A<- A+R0+C |
|
Віднімання |
|||||
SUBB A,R0 |
98 |
1 |
1 |
A<- A-R0-C |
|
Інкремент\ (Декремент DEC -1) |
|||||
INC А |
04 |
1 |
1 |
A <- A+1 |
|
INC R0 |
08 |
1 |
1 |
R0 <- R0+1 |
|
INC direct |
05 |
2 |
1 |
(direct) <- (direct)+1 |
|
INC @RO |
06 |
1 |
1 |
(RO) <- (R0)+1 |
|
Множення |
|||||
MUL AB |
A4 |
1 |
4 |
A <- мол. байт A*/ В <- ст. байт A*B |
|
Ділення |
|||||
DIV AB |
84 |
1 |
4 |
A <- A:B А - частное /В - остаток |
|
Команди логічних операцій/ Операція "І" |
|||||
ANL A,R0 |
58 |
1 |
1 |
A <-A & R0 |
|
ANL direct,A |
52 |
2 |
1 |
(direct) <- (direct) & A |
|
ANL direct ,#data |
53 |
3 |
2 |
(direct) <- (drc) & #data |
|
Операція "АБО" |
|||||
ORL A,R0 |
48 |
1 |
1 |
A <-A or R0 |
|
ORL direct, A |
42 |
2 |
1 |
(direct) <-(direct) or A |
|
ORL direct, #data |
43 |
2 |
2 |
(direct) <-(drc) or #data |
|
Операція " Виключаюче АБО" |
|||||
XRL A,R0 |
68 |
1 |
1 |
A <- A xor R0 |
|
XRL direct, A |
62 |
2 |
1 |
(direct)<-(direct) xor A |
|
direct, #data |
63 |
3 |
2 |
(direct)<-(drc) xor #data |
|
Команди логічних операцій. Команди зсувів |
|||||
RL А |
23 |
1 |
1 |
A[n+1] <- A[n], A[0] <- A[7] |
|
RLC А |
33 |
1 |
1 |
A[n+1] <- A[n], A[0] <-С, С <- A[7] |
|
RR А |
03 |
1 |
1 |
A[n] <- A[n+1],A[7] <- A[0] |
|
RRC А |
13 |
1 |
1 |
A[n] <- A[n+1],A[7] <- С, С <- A[0] |
|
CLR А |
E4 |
1 |
1 |
A <- 0 |
|
Команди операцій з бітами |
|||||
CLR С CLR bit |
C3 C2 |
1 2 |
1 1 |
С <- 0 bit <- 0 |
|
SETB С SETB bit |
B3 B2 |
1 2 |
1 1 |
С <- 1 bit <- 1 |
|
Холоста команда |
|||||
NOP |
00 |
1 |
1 |
PC <-PC+1 |
|
Команди передачі керування. Безумовний перехід |
|||||
LJMP addrl6 |
02 |
3 |
2 |
PC <- addrl6 |
|
SJMP addr |
80 |
2 |
2 |
PC <- PC+addr |
|
JMP @A+DPTR |
73 |
1 |
2 |
PC <- (A+DPTR) |
|
Умовний перехід |
|||||
JZ addr
JNZ addr |
60
70 |
2
2 |
2
2 |
PC <- PC+2; если А=0,то PC <- PC+addr PC <- PC+2; если А<>0,то PC <- PC+addr |
|
JC addr
JNC addr |
40
50 |
2
2 |
2
2 |
PC <- PC+2; если С=1,то PC <- PC+addr PC <- PC+2; если С=0,то PC <- PC+addr |
|
Команди виклику підпрограм |
|||||
LCALL addrl6 |
12 |
3 |
2 |
PC <- PC+3, |
|
|
|
|
|
(SP) <-PC[0...7], |
|
|
|
|
|
(SP+1) <- PC [8... 15], |
|
|
|
|
|
SP <- SP+2, PC <- addrl6, |
А - регістр-акумулятор
addr - пряма 8-бітна адреса передачі керування
addrl6 - пряма 16-бітна адреса передачі керування
В - регістр-розширник акумулятора
bіt - пряма 8-бітна адреса біта
С - ознака переносу/позика
#data - 8- бітний безпосередній операнд (константа)
#datal6 - 16-бітний безпосередній операнд (константа)
dіrect - прямо адресована 8-бітова адреса осередку внутрішньої пам'яті даних
sdіrect - адреса осередку приймача даних
ddіrect - адреса осередку джерела даних
DPTR - покажчик даних
PC - лічильник команд (СК)
Rn - узагальнене ім'я робочого регістра (RO - R7)
SP - регістр/покажчик стека
@Rі - непрямо адресована комірка пам'яті даних (0-256 байт)
@DPTR - непрямо адресована комірка пам'яті даних (0-64 кбайта)
<- - занести
<-і> - поміняти місцями