Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

326-2014 ДГЦУиМП

.pdf
Скачиваний:
14
Добавлен:
26.03.2016
Размер:
1.36 Mб
Скачать

При составлении программы надо иметь в виду, что предварительно необходимо записать в регистр Z адрес ячейки памяти в которую будет производится запись-чтение данных.

Например, программа здписи в ячейку памяти с адресом $0061 содержимого регистра г16 будет иметь вид

.include "tn2313def.inc"

 

.list

 

ldi rl 6,17;

запись числа 17 в рабочий регистр

г16

 

clr гЗ 1;

очистить старший байт индексного

регистра Z

 

ldi г30,$61;

загрузить младший байт адреса

регистра Z

 

st Z,rl6;

переслать г16 по адресу $61

Программа загрузки из ячейки памяти с адресом $0061 в регистр г5 будет иметь вид

include "tn2313def.inc"

 

.list

 

ldi rl6,17;

запись числа 17 в рабочий регистр

г16

 

clr гЗ1 ;

очистить старший байт индексного

регистра Z

 

ldi г30,$61;

загрузить младший байт адреса

регистра Z

 

st Z,г16;

переслать г16 по адресу $61

Id r5, Z;

переслать содержимое ячейки памяти

садрсом $61 вг5

3.8.Составить программу загрузки из памяти данн регистров г5-г8 соответственно числами 11,22,33,44, предварительно записав их в ОЗУ данных микроконтроллера, начиная с адреса 000061, используя команды косвенная запись

19

БТ Ъ+, Иг в память данных с постинкриментом и косвенное чтение ЫЭ памяти данных.

Например, программа записи в ячейки памяти с адресами $0061 и $0062 содержимого регистров г16 и г17 будет иметь вид

include "tn2313def.incM

.list

запись числа 17 в рабочий регистр

ldi rl 6,17;

rl6

 

ldi r l7,18;'

запись числа 18 в рабочий регистр

rl7

 

clr r31

очистить старший байт индексного

регистра Z

 

ldi r30,$61

загрузить младший байт адреса

регистра Z

 

st Z+,rl6

переслать содержимое ячейки

памяти с адресом

$61 в rl6

st Z+,rl7

переслать содержимое ячейки

памяти с адресом

$62вг17

4. Лабораторные задания и методические указания по их выполнению

4.1.Создайте проект для исследования программы загрузки регистров общего назначения г0 ,г1 , г2, гЗ, г4 ,г5 ,г6 ,г7 ,г8 соответственно числами 1,2,3,4,5,6,7.8 ,9 микроконтроллера АШпу2313. В режиме отладки, открыв соответствующие окна и проанализировав состояния регистров ми1фоконтроллера , убедитесь в правильности ее работы (см. пункты 2.2-2.4).

4.2.Создайте проект для исследования программы загрузки регистров общего назначения г0, г1 , г2, гЗ, г4 ,г5 АШпу 2313 соответственно числами 1,2,3,4,5,6, используя

директиву Ле1>назначить регистру символьное имя. В режиме отладки, открыв соответствующие окна и проанализировать

20

состояния регистров микроконтроллера , убедитесь в

правильности ее работы (см.пункты 2.2-2Л).

 

4.3.

 

Создайте

проект

для исследования программ

загрузки пар регистров общего назначения

 

г0-г1 , г2гЗ, г4-г5 ,г6-г7 А йту 2313 соответственно

числами

1-1, 2-2,3-3,4-4,.используя

команду шоу\у- пересылка между

парами регистров. В режиме отладки, открыв соответствующие

окна

и

проанализировав

состояния

регистров

микроконтроллера, убедитесь в правильности ее работы (см.пункты 2.2-2.4)

4.4Создайте проект для исследования программы перехода числа ВВ из регистра г16 Айшу2313 последовательно

врегистры гО, г1,Лг2, гЗ, г4, г5.В режиме отладки, открыв соответствующие окна и проанализировать состояния регистров микроконтроллера , убедитесь в правильности ее работы (см.пункты 2.2-2.4).

4.5.Создайте проект для исследования программы загрузки из памяти данных регистров г0-г8 соответственно числами 1,2,3,4,5,6.7,8,9,предварительно записав их в ОЗУ данных микроконтроллера Айту2313, начиная с адреса 000060. В режиме отладки, открыв соответствующие окна и проанализировать состояния регистров и памяти микроконтроллера , убедитесь в правильности ее работы (см.пункты 2.2-2.4).

4.6.Создайте проект для исследования программы

загрузки из памяти

данных регистров г5-г8

соответственно

числами 11,22,33,44,

предварительно записав их в ОЗУ данных

микроконтроллера

Айту2313,

начиная

с

адреса

000061, используя команды косвенная запись БТ Ъ, Кг в память данных и косвенное чтение 1Л) Лс1,2 памяти данных. В режиме отладки, открыв соответствующие окна и проанализировать состояния регистров и памяти микроконтроллера, убедитесь в правильности ее работы (ем. пункты 2.2-2.4).

4.7. Создайте проект для исследования программы загрузки из памяти данных регистров г5-г8 соответственно числами 11,22,33,44, предварительно записав их в ОЗУ данных

21

микроконтроллера А кту 2313, начиная с адреса 000061,используя команды косвенная запись вТ 2+Дг в память данных с постинкриментом и косвенное чтение Ы) Яс1,2+ памяти данных.

5. Оформление отчета Отчет должен содержать:

1.Тексты программ в соответствии с пунктами 4.1,4.2,4.3,4.4,4.5,4.6,4.7 лабораторного задания.

2.Пояснения к исправлению ошибок в тексте программ, выявленных в процессе их отладки.

3.Состояние регистров и памяти подтверждающие правильность работы программ.

4.Выводы

Вопросы для самопроверки

1.Перечислите регистры, доступные для программирования в микроконтроллере АНлпу2313.

2.Какие команды используются для загрузки регистров общего назначения микроконтроллера Айшу2313?

3.Какие команды используются при непосредственной записи в память микроконтроллера А«ту2313?

4.Какие команды используются при обращение к памяти с косвенной адресацией микроконтроллера АНшу2313?

5.Какие регистры используются при обращение к памяти с косвенной адресацией микроконтроллера Айту2313?

[1,С,61-89], [2.С.17-66], [З.С. 172-186]

22

ПРИЛОЖЕНИЕ

MOVRd, Hr

Пересылка между РОН

Операция Код операции Операнды

Описание

Регистр БИБО

Число тактов

Пример

Rd - Rr

 

0010 11rd dddd птт

1 слово (2 байта)

0 s d s 3 l , 0 ä r ä 3 I

Копирует содержимое регистра R r в регистр Rd. Регистр-источник (Rr) не изме­ няется

I

T

H

 

S

V

N

Z

С

-

-

-

 

-

-

-

-

-

 

 

 

 

 

1

 

 

 

mov

r l 6 . r 0

;

П ереслать

содержимое г0

в г1б

 

c a l l

c h ec k

;

Вызвать подпрограмму

 

 

ch eck :

 

 

 

 

 

 

 

 

c p i

r l 6 ,

S r l l

;

Сравнить

r l 6 с

$11

 

 

r e t

; В ернуться и з подпрограммы

SER Rd

Установка РОН

Операция Код операции Операнды

Описание

РегистрSREG

Числотактов

Пример

Rd=JFF

 

1110 1111 dddd

1слово(2байта)

I6sd<31

Устанавливаетвсебиты регистраобщегоназначенияв 1.Командаприменима толькокрегистрам изстаршейполовины регистровогофайла

I

Т

Н

S

 

 

V

N

Z

С

-

-

-

-

-

 

-

 

 

 

 

 

 

 

 

 

1

 

 

 

c l r

г16

;

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

г16

 

 

··' s e r

г17

?

Установить

регистр г17

 

 

o u t $18.г1б

;

Записать

 

в

порт

В нули

 

 

пор

 

;

 

 

 

 

 

 

 

out

$18,г17

Записать

в

порт В единицы

 

 

23

NOP

Пустая команда

 

Операция

Нетоперации

1

Кодоперации

0000000000000000

1слово (2байта)

Операнды

Нетоперандов

 

Описание

Пропускаетодинтакт

 

РегистрЗЯЕв

I

Т

 

Н

S

V

N

г

С

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Числотактов

 

 

 

 

 

1

 

 

 

 

c lr

г16

;

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

г1б

 

 

Пример

ser

г17

;

Установить регистр г17

 

 

out

$18,г1б

;

Записать нули в порт В

 

 

 

пор

$18,г17

;

Ждать один такт

 

 

 

 

out

;

Записать единицы в порт В

 

 

MOVWRd+1:Rd,

:Rr

 

 

 

 

 

 

 

Пересылка между парами РОН

 

 

 

 

 

Операция

Лс1+1:Лс1 = Лг+1:Лг

 

 

 

 

 

 

 

Код операции

0000 00010606 гпт

 

 

 

 

 

 

1слово (

Операнды

0 е (0 ,2 ....30), т е

(0.....,2 30)

 

 

 

 

 

Описание

Колирует содержимое регистровой лары Я г+ 1;Лг в регистровую пару Л < Н :М

Регистры-источники (Яг+1 и Лг) не изменяются

 

 

 

 

 

 

 

Регистр БКЕС

1

Т

 

Н

 

б

V

г

N С

_

_

_

_

_

_

_

 

_

 

 

Ч исло тактов

 

 

 

 

1

 

 

 

 

Пример

шоуи

г 1 7 : г 1 б , П

: г 0

;

П е р е с л а т ь

г 1 : г 0

в

г ! 7 : г 1 б

24

LDI Rd, K

Загрузка константы в РОН

 

 

 

 

 

 

Операция

Rd= K

 

 

 

 

 

 

 

Кодоперации

И10 KKKKddddКККК

 

 

 

1слово(2байта)

Операнды

16sds3l,0Sk£2J5

 

 

 

 

 

 

Описание

Загружает8-битноечисловрегистробщегоназначения Rd.Даннаякоманда

примениматолькохстаршейполовинеРОН (адреса 16...31)

 

 

 

 

 

РегистрЯКЕв

I

T

H

S

V

N

Z

С

 

 

-

-

-

 

 

 

 

 

 

 

 

 

Числотактов

Пример

 

 

 

1

clr

г31

; Очистить старший байт индексного регистра Z

ldi

r30,$F0 ; Загрузить адрес в регистр Z

lpm

;

Загрузить константу из памяти программ

 

 

;

по адресу $00F0

IN Rd, A

Пересылка значения из РВВ в РОН

 

 

 

 

Операция

Rd= I/0(A)

 

 

 

 

 

 

Кодоперации

1011 OAAdddddАААА

 

 

 

 

1слово(2 байта)

Операнды

0ids31,0<AS63

 

 

 

 

 

 

Описание

Пересылаетсодержимоерегистраввода/выводаА врегистробщего

 

назначенияRd

 

 

 

 

 

 

 

 

 

 

 

 

 

РегистрSREG

1

Т

Н

S

V

N

Z

С

 

 

 

 

 

 

 

 

Числотактов

 

 

 

 

1

 

 

 

 

in

г25,$1б

; Прочитать содержимое порта В

 

 

cpi

г25,4

; Сравнить содержимое с константой

 

Пример

breq exit

;

Перейти,

если г25 =

4

 

 

 

 

 

 

 

 

 

 

exits

25

CLRRd

Очистка РОН

Операция

R d = R d 0 R d

 

 

 

 

 

 

Код операции

OOlOOldddddddddd

 

 

 

1 слово (2

Операнды

0 < d < 3 1

 

 

 

 

 

 

Описание

Сбрасывает все биты регистра общего назначения путем выполнения операции

«Исключающее ИЛИ» регистра с самим' собой

 

 

 

 

 

 

 

Регистр БЯЕС

I

 

T

H

S

V

N

Z

 

 

 

0

0

0

 

1

 

 

 

 

 

Число тактов

 

 

 

!

 

 

 

 

 

; Организация цикла с заданным числом повторений:

 

 

 

clr

г18

 

; Очистить регистр г18

 

 

 

 

lo o p :

 

 

 

 

 

 

 

Пример

inc rl8

 

: rl8=rl8+l

 

 

 

 

 

c p i

r 8l ,$ 5 0

 

; Завершить цикл?

 

 

 

 

 

brne lo o p

 

 

 

 

 

 

OUTA, Rr

Пересылка значения из РОН в РВВ

Оп ераци я

Код операции

Операнды

Описание

Регистр ЯЛЕС

Ч исло тактов

П рим ер

I/0 (A ) = Rr

1011 lA A rrrrrA A A A

1 слово (2 байта)

O S r < 3 i,D S A S 6 3

П ересы лает содержимое регистра общ его назначения Rr в регистр ввода/вы вода А

1

Т

Н

 

S

V

N

Z

С

-

-

-

-

-

-

 

 

 

 

 

 

 

 

1

 

 

 

c l r г 1 6

 

?

О ч и с т и т ь р е г и с т р г 1 б

 

 

 

s e r г 1 7

 

; У с т а н о в и т ь р е г и с т р г ! 7

 

 

o u t $ 1 8 ,г 1 б

;

З а п и с а т ь н у л и в п о р т В

 

 

п о р

 

;

Ж дать

о д и н

т а к т

 

 

 

o u t $ 1 8 ,г 1 7

/ З а п и с а т ь ед и н и ц ы в п о р т В

 

 

26

SWAPRd

Перестановка полубайтов РОН

 

 

 

 

 

Операция

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

 

 

 

 

 

Кодоперации

1001 OtOddddd0010

 

 

 

 

1слово(2 байта)

Операнды

0£d<31

 

 

 

 

 

 

 

 

Описание

Командапроизводитперестановкустаршегои младшегополубайтасодержимого

регистраRd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистр$КЕС

I

T

 

H

S

V

N

Z

C

-

-

 

_

-

_

-

. -

 

 

 

 

Числотактов

 

 

 

 

 

1

 

 

 

 

inc

rl

;

Инкрементировать rl

 

 

 

Пример

swap rl

;

Переставить полубайты

 

 

 

inc

rl

; Инкрементировать старший полубайт rl

 

 

•swap rl

; Переставить полубайты обратно

 

 

LDS Rd, k

Непосредственная загрузка из памяти данных

Операция Rd=(k]

Код операции

1001 OOOddddd 0000 kkkk kkkk kkkk kkkk

2 слова(4байта)

Операнды 0sds31,0slt£65535

Загружаетодинбайтизадресного пространствапамятиданныхврегистр об­ Описание щего назначенияRd.Адрес ячейки памяти,ккоторой производитсяобраще­

ние,задаетсяконстантой К

Регистр БДЕй

I

Т

 

Н

 

S

V

N

г

С

_

_

_

 

_

_

_

_

 

_

 

 

 

Числотактов

 

 

 

 

 

2

 

 

 

 

Пример

Ids

r2,$FF00

 

·,

r2 = [$FF001

 

 

 

 

add r2,rl

 

r2 = r2 + rl

 

 

 

 

 

sts

$FF000,r2

 

i

Записать результат по тому ае адресу

27

STSk.Rd

Непосредственная запись в память данных

Операция

Кодоперации

Операнды

Описание

РегистрБИЕв

II 2

 

 

1001 OOld dddd0000kkkkkickk

kkkk

2слова(4байта)

0Sd<31,0Ski65535

 

 

Сохраняетсодержимоерегистраобщегоназначения Rdв памятиданных.Адрес ячейкипамяти, ккоторойпроизводитсяобращение, задается константойк

1

Т

Н

S

V

N

Z

С

 

-

-

-

 

-

-

-

-

-

Числотактов

 

 

 

 

 

2

 

 

 

Пример

Id s

r2,$ F F 0 0

 

г2 = ($FF00)

 

 

add

r 2 , r l

 

;

r2 « r2

+

r l

 

 

 

sts

$FF 000,r2

 

;

З апи сать

р е зу л ь т а т по

тому

* е адресу

LORd.Z

Косвенное чтение памятиданных

Операция

Rd = |ZJ

 

Код операции

1000 QOOddddd 0000

1 слово (2 байт

Операнды

0 £ d S 3 1

 

 

Загружаетодин байт и задресного пространства памятиданных в регистр обще­

Описание

го назначения Rd Адрес ячейки памяти, к которой производится обращение,

 

содержится в индексном регистре Z

 

Регистр SREG

I

T

 

H

 

S

V

 

N

Z

 

 

-

 

 

-

_

_

-

' -

 

 

 

 

 

Число т а л о е

 

 

 

 

 

2

 

 

 

 

 

clr

г3 1

 

Очистить;

старший байт индексного регистра

Пример

ldi

г 3 0 ,$ 6 0

,

Загрузить;

младший байт адреса

 

 

 

 

ld

rl,Z

ri = [0 0 6 0 ]

 

 

 

 

28

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