326-2014 ДГЦУиМП
.pdfПри составлении программы надо иметь в виду, что предварительно необходимо записать в регистр 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