Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_MikroKontrolery_КПЗ_AVR128_укр.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
8 Мб
Скачать
☆

6.5 Контрольні питання й завдання

  1. Поясніть принцип роботи вбудованого в мікроконтролер 10-розрядного АЦП.

  2. Назвіть основні керуючі регістри АЦП, вбудованого в мікроконтролер, і поясніть їх функції.

  3. Поясніть принцип виміру температури за допомогою термодатчика.

  4. Для чого застосовується вирівнювання результату по лівій або правій границі слова ?

  5. Поясніть можливості передачі даних про температуру в ПЕОМ.

  6. Поясніть можливість відображення даних про температуру на екрані цифрового індикатора Holtek НТ1613, розглянутого в лабораторній роботі № 3.

Рекомендована література

  1. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL. – М.: Изд. дом Додэка-ХХI, 2004. – 560 с.

  2. Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному.- М.: СОЛОН-Пресс, 2004. – 304 с.

  3. Баранов В.Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы.- М.: Издательский дом “Додэка-XXI”, 2004. – 288 с.

  4. http://www.atmel.ru/ – описание микроконтроллеров фирмы ATMEL на русском языке.

Додаток 1 розташування виводів мікроконтроллера

AVR АТMEGA 128

Додаток 2 інструкції процесорів avr

Таблиця П. 2.1 – Арифметичні й логічні команди.

Мнемоніка

Операнди

Опис

Операція

Прапори

Цикли

ADD 

Rd,Rr 

Підсумовування без переносу

Rd = Rd + Rr 

Z,C,N,V,H,S 

1

ADC

Rd,Rr

Підсумовування з переносом

Rd = Rd + Rr + C

Z,C,N,V,H,S

1

SUB

Rd,Rr

Вирахування без переносу

Rd = Rd - Rr

Z,C,N,V,H,S

1

SUBI

Rd,K8

Вирахування константи

Rd = Rd - K8

Z,C,N,V,H,S

1

SBC

Rd,Rr

Вирахування з переносом

Rd = Rd - Rr - C

Z,C,N,V,H,S

1

SBCI

Rd,K8

Вирахування константи з переносом

Rd = Rd - K8 - C

Z,C,N,V,H,S

1

AND

Rd,Rr

Логічне І

Rd = Rd · Rr

Z,N,V,S 

1

ANDI

Rd,K8

Логічне І с константою

Rd = Rd · K8

Z,N,V,S

1

OR

Rd,Rr

Логічне АБО

Rd = Rd V Rr

Z,N,V,S

1

ORI

Rd,K8

Логічне АБО з константою

Rd = Rd V K8

Z,N,V,S

1

EOR

Rd,Rr

Логічне виключаюче АБО

Rd = Rd EOR Rr

Z,N,V,S

1

COM

Rd

Побітна Інверсія

Rd = $FF - Rd

Z,C,N,V,S

1

NEG

Rd

Зміна знака (Доп. код)

Rd = $00 - Rd

Z,C,N,V,H,S

1

SBR

Rd,K8

Установити біт (біти) у регістрі

Rd = Rd V K8

Z,C,N,V,S

1

CBR

Rd,K8

Скинути біт (біти) у регістрі

Rd = Rd · ($FF - K8)

Z,C,N,V,S

1

INC

Rd

Інкрементувати значення регістру

Rd = Rd + 1

Z,N,V,S

1

DEC

Rd

Декрементувати значення регістру

Rd = Rd -1

Z,N,V,S

1

TST

Rd

Перевірка на нуль або заперечність

Rd = Rd · Rd

Z,C,N,V,S

1

CLR

Rd

Очистити регістр

Rd = 0

Z,C,N,V,S

1

SER

Rd

Установити регістр

Rd = $FF

None

1

ADIW

Rdl,K6

Скласти константу й слово

Rdh:Rdl = Rdh:Rdl + K6 

Z,C,N,V,S

2

SBIW

Rdl,K6

Відняти константу зі слова

Rdh:Rdl = Rdh:Rdl - K6

Z,C,N,V,S

2

MUL

Rd,Rr

Множення чисел без знака

R1:R0 = Rd * Rr

Z,C

2

MULS

Rd,Rr

Множення чисел зі знаком

R1:R0 = Rd * Rr

Z,C

2

MULSU

Rd,Rr

Множення числа зі знаком із числом без знака

R1:R0 = Rd * Rr

Z,C

2

FMUL

Rd,Rr

Множення дробових чисел без знака

R1:R0 = (Rd * Rr) << 1

Z,C

2

FMULS

Rd,Rr

Множення дробових чисел зі знаком

R1:R0 = (Rd *Rr) << 1

Z,C

2

FMULSU

Rd,Rr

Множення дробового числа зі знаком із числом без знака

R1:R0 = (Rd * Rr) << 1

Z,C

2

Таблиця П. 2.2.  – Команди розгалуження

Мнемоніка

Операнди

Опис

Операція

Прапори

Цикли

RJMP

k

Відносний перехід

PC = PC + k +1

None

2

IJMP

Немає

Непрямий перехід на (Z)

PC = Z

None

2

EIJMP

Немає

Розширений непрямий перехід на (Z)

STACK = PC+1, PC(15:0) = Z, PC(21:16) = EIND

None

2

JMP

k

Перехід

PC = k

None

3

RCALL

k

Відносний виклик підпрограми

STACK = PC+1, PC = PC+k+1

None

3/4*

ICALL

Немає

Непрямий виклик (Z)

STACK = PC+1, PC = Z 

None

3/4*

EICALL

Немає

Розширений непрямий виклик (Z)

STACK = PC+1, PC(15:0) = Z, PC(21:16) =EIND

None

4*

CALL

k

Виклик підпрограми

STACK = PC+2, PC = k

None

4/5*

RET

Немає

Повернення з підпрограми

PC = STACK

None

4/5*

RETI

Немає

Повернення з переривання

PC = STACK

I

4/5*

CPSE

Rd,Rr

Зрівняти, пропустити якщо рівні 

if (Rd ==Rr) PC = PC 2 or 3

None

1/2/3

CP

Rd,Rr

Зрівняти

Rd -Rr

Z,C,N,V,H,S

1

CPC

Rd,Rr

Зрівняти з переносом

Rd - Rr - C

Z,C,N,V,H,S

1

CPI

Rd,K8

Зрівняти з константою

Rd - K

Z,C,N,V,H,S

1

SBRC

Rr,b

Пропустити якщо біт у регістрі очищений

if(Rr(b)==0) PC = PC+2 or 3

None

1/2/3

SBRS

Rr,b

Пропустити якщо біт у регістрі встановлений

if(Rr(b)==1) PC = PC+2 or 3

None

1/2/3

SBIC

P,b

Пропустити якщо біт у порту очищений

if(I/O(P,b)==0) PC = PC+ or 3

None

1/2/3

SBIS

P,b

Пропустити якщо біт у порту встановлений

if(I/O(P,b)==1) PC = PC+2 or 3

None

1/2/3

BRBC

s,k

Перейти якщо прапор в SREG очищений

if(SREG(s)==0) PC = PC+k+1

None

1/2

BRBS

s,k

Перейти якщо прапор в SREG установлений

if(SREG(s)==1) PC = PC+k+1

None

1/2

BREQ

k

Перейти якщо дорівнює

if(Z==1) PC = PC + k + 1

None

1/2

BRNE

k

Перейти якщо не дорівнює

if(Z==0) PC = PC + k + 1

None

1/2

BRCS

k

Перейти якщо перенос установлений

if(C==1) PC = PC + k + 1

None

1/2

BRCC

k

Перейти якщо перенос очищений

if(C==0) PC = PC + k + 1

None

1/2

BRSH

k

Перейти якщо дорівнює або більше

if(C==0) PC = PC + k + 1

None

1/2

BRLO

k

Перейти якщо менше

if(C==1) PC = PC + k + 1

None

1/2

BRMI

k

Перейти якщо мінус

if(N==1) PC = PC + k + 1

None

1/2

BRPL

k

Перейти якщо плюс

if(N==0) PC = PC + k + 1

None

1/2

BRGE

k

Перейти якщо більше або дорівнює (зі знаком)

if(S==0) PC = PC + k + 1

None

1/2

BRLT

k

Перейти якщо менше (зі знаком)

if(S==1) PC = PC + k + 1

None

1/2

BRHS

k

Перейти якщо прапор внутрішнього переносу встановлений

if(H==1) PC = PC + k + 1

None

1/2

BRHC

k

Перейти якщо прапор внутрішнього переносу очищений

if(H==0) PC = PC + k + 1

None

1/2

BRTS

k

Перейти якщо прапор T установлений

if(T==1) PC = PC + k + 1

None

1/2

BRTC

k

Перейти якщо прапор T очищений

if(T==0) PC = PC + k + 1

None

1/2

BRVS

k

Перейти якщо прапор переповнення встановлений

if(V==1) PC = PC + k + 1

None

1/2

BRVC

k

Перейти якщо прапор переповнення очищений

if(V==0) PC = PC + k + 1

None

1/2

BRIE

k

Перейти якщо переривання дозволені

if(I==1) PC = PC + k + 1

None

1/2

BRID

k

Перейти якщо переривання заборонені

if(I==0) PC = PC + k + 1

None

1/2

* Для операцій доступу до даних кількість циклів зазначена за умови доступу до внутрішньої пам'яті даних, і не коректно при роботі із зовнішнім ОЗУ. Для інструкцій CALL, ICALL, EICALL, RCALL, RET і RETI, необхідно додати три цикли плюс по два циклу для кожного очікування в контролерах з PC меншим 16 біт (128KB пам'яті програм). Для пристроїв з пам'яттю програм понад 128KB , додайте п'ять циклів плюс по три циклу на кожне очікування.

Таблиця П. 2.3  – Команди пересилання даних

Мнемоніка

Операнди

Опис

Операція

Прапори

Цикли

MOV

Rd,Rr

Скопіювати регістр

Rd = Rr

–

1

MOVW

Rd,Rr

Скопіювати пари регістрів

Rd+1:Rd = Rr+1:Rr, r,d even

–

1

LDI

Rd,K8

Завантажити константу

Rd = K

–

1

LDS

Rd,k

Пряме завантаження

Rd = (k)

–

2*

LD

Rd,X

Непряме завантаження

Rd = (X)

–

2*

LD

Rd,X+

Непряме завантаження з пост-інкрементом

Rd = (X), X=X+1

–

2*

LD

Rd,-X

Непряме завантаження із пре-декрементом

X=X-1, Rd = (X)

–

2*

LD

Rd,Y

Непряме завантаження

Rd = (Y)

–

2*

LD

Rd,Y+

Непряме завантаження з пост-інкрементом

Rd = (Y), Y=Y+1

–

2*

LD

Rd,-Y

Непряме завантаження із пре-декрементом

Y=Y-1, Rd = (Y)

–

2*

LDD

Rd,Y+q

Непряме завантаження із заміщенням

Rd = (Y+q)

–

2*

LD

Rd,Z

Непряме завантаження

Rd = (Z)

–

2*

LD

Rd,Z+

Непряме завантаження з пост-інкрементом

Rd = (Z), Z=Z+1

–

2*

LD

Rd,-Z

Непряме завантаження із пре-декрементом

Z=Z-1, Rd = (Z)

–

2*

LDD

Rd,Z+q

Непряме завантаження із заміщенням

Rd = (Z+q)

–

2*

STS

k,Rr

Пряме збереження

(k) = Rr

–

2*

ST

X,Rr

Непряме збереження

(X) = Rr

–

2*

ST

X+,Rr

Непряме збереження з пост-інкрементом

(X) = Rr, X=X+1

–

2*

ST

-X,Rr

Непряме збереження із пре-декрементом

X=X-1, (X)=Rr

–

2*

ST

Y,Rr

Непряме збереження

(Y) = Rr

–

2*

ST

Y+,Rr

Непряме збереження з пост-інкрементом

(Y) = Rr, Y=Y+1

–

2

ST

-Y,Rr

Непряме збереження із пре-декрементом

Y=Y-1, (Y) = Rr

–

2

ST

Y+q,Rr

Непряме збереження із заміщенням

(Y+q) = Rr

–

2

ST

Z,Rr

Непряме збереження

(Z) = Rr

–

2

ST

Z+,Rr

Непряме збереження з пост-інкрементом

(Z) = Rr, Z=Z+1

–

2

ST

-Z,Rr

Непряме збереження із пре-декрементом

Z=Z-1, (Z) = Rr

–

2

ST

Z+q,Rr

Непряме збереження із заміщенням

(Z+q) = Rr

–

2

LPM

Немає

Завантаження із програмної пам'яті

R0 = (Z)

–

3

LPM

Rd,Z

Завантаження із програмної пам'яті

Rd = (Z)

–

3

LPM

Rd,Z+

Завантаження із програмної пам'яті з пост-інкрементом

Rd = (Z), Z=Z+1

–

3

ELPM

Немає

Розширене завантаження з пам'яті програм

R0 = (RAMPZ:Z)

–

3

ELPM

Rd,Z

Розширене завантаження з пам'яті програм

Rd = (RAMPZ:Z)

–

3

ELPM

Rd,Z+

Розширене завантаження із програмної пам'яті з пост-інкрементом

Rd = (RAMPZ:Z),

Z = Z+1

–

3

SPM

Немає

Збереження в програмній пам'яті

(Z) = R1:R0

–

-

ESPM

Немає

Розширене збереження в пам'яті програм

(RAMPZ:Z) = R1:R0

–

-

IN

Rd,P

Читання порту

Rd = P

–

1

OUT

P,Rr

Запис у порт

P = Rr

–

1

PUSH

Rr

Занесення регістра в стек

STACK = Rr

–

2

POP

Rd

Витяг регістра зі стека

Rd = STACK

–

2

* Для операцій доступу до даних кількість циклів зазначена за умови доступу до внутрішньої пам'яті даних, і не коректно при роботі із зовнішнім ОЗУ. Для інструкцій LD, ST, LDD, STD, LDS, STS, PUSH і POP, необхідно додати один цикл.

Таблиця П. 2.4 – Команди для роботи з бітами.

Мнемоніка

Операнди

Опис

Операція

Прапори

Цикли

LSL

Rd

Логічний зсув вліво

Rd(n+1)=Rd(n), Rd(0) =0, C=Rd(7)

Z,C,N,V,H,S

1

LSR

Rd

Логічний зсув вправо

Rd(n)=Rd(n+1), Rd(7) =0, C=Rd(0)

Z,C,N,V,S

1

ROL

Rd

Циклічний зсув вліво через C

Rd(0) =C, Rd(n+1)=Rd(n), C=Rd(7)

Z,C,N,V,H,S

1

ROR

Rd

Циклічний зсув вправо через C

Rd(7) =C, Rd(n)=Rd(n+1), C=Rd(0)

Z,C,N,V,S

1

ASR

Rd

Арифметичний зсув вправо

Rd(n)=Rd(n+1), n=0,...,6

Z,C,N,V,S

1

SWAP

Rd

Перестановка тетрад

Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0)

None

1

BSET 

s

Установка прапора

SREG(s) = 1

SREG(s)

1

BCLR

s

Очищення прапора

SREG(s) = 0

SREG(s)

1

SBI

P,b

Установити біт в порту

I/O(P,b) = 1

None

2

CBI

P,b

Очистити біт в порту

I/O(P,b) = 0

None

2

BST

Rr,b

Зберегти біт з регістра в T

T = Rr(b)

T

1

BLD

Rd,b

Завантажити біт з T у регістр

Rd(b) = T

None

1

SEC

Немає

Установити прапор переносу

C =1

C

1

CLC

Немає

Очистити прапор переносу

C = 0

C

1

SEN

Немає

Установити прапор негативного числа

N = 1

N

1

CLN

Немає

Очистити прапор негативного числа

N = 0

N

1

SEZ

Немає

Установити прапор нуля

Z = 1

Z

1

CLZ

Немає

Очистити прапор нуля

Z = 0

Z

1

SEI

Немає

Установити прапор переривань

I = 1

I

1

CLI

Немає

Очистити прапор переривань

I = 0

I

1

SES

Немає

Установити прапор числа зі знаком

S = 1

S

1

CLN

Немає

Очистити прапор числа зі знаком

S = 0

S

1

SEV

Немає

Установити прапор переповнення

V = 1

V

1

CLV

Немає

Очистити прапор переповнення

V = 0

V

1

SET

Немає

Установити прапор T

T = 1

T

1

CLT

Немає

Очистити прапор T

T = 0

T

1

SEH

Немає

Установити прапор внутрішнього переносу

H = 1

H

1

CLH

Немає

Очистити прапор внутрішнього переносу

H = 0

H

1

NOP

Немає

Немає операції

Немає

None

1

SLEEP

Немає

Спати (зменшити енергоспоживання)

Дивіться опис інструкції

None

1

WDR

Немає

Скидання сторожового таймера

Дивіться опис інструкції

None

1

У мові Assembler немає розходження в регістрі символів.

Операнды можуть бути наступних видів:

  • Rd: Результуючий (і вихідний) регістр у регістровому файлі;

  • Rr: Вихідний регістр у регістровому файлі;

  • b: Константа (3 біти), або константне вираження;

  • s: Константа (3 біти), або константне вираження;

  • P: Константа (5-6 біт), або константне вираження;

  • K6; Константа (6 біт), або константне вираження;

  • K8: Константа (8 біт), або константне вираження;

  • k: Константа (розмір залежить від інструкції), або константне вираження;

  • q: Константа (6 біт), або константне вираження;

  • Rdl:  R24, R26, R28, R30. Для інструкцій ADIW і SBIW ;

X,Y,Z: Регістри непрямої адресації

  • (X=R27:R26, Y=R29:R28, Z=R31:R30).

Навчальне видання

МЕТОДИЧНІ ВКАЗІВКИ

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]