- •Додаток 1. Приклади ррозв’язання задач мовою avr Assembler
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
Блок-схема
Підпрограма затримки Delay
12). Розробити програму перетворення двійкового однобайтного слова, прийнятого в паралельному форматі в послідовний формат.
.device AT90S1200
.include "1200def.inc"
ser r18 ;усі біти регістра R18 встановлюються в одиницю
out ddrb,r18 ;настроювання порту B на вивід
in r16,pind ;ввід даних з порту D у регістр R16
qq:
sbis pind,7 ;якщо сьомий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp qq ;перехід на мітку qq
bst r16,0 ;копіювання нульового біта регістра R16 у
;біт-акумулятор
bld r17,0 ;завантаження в нульовий біт регістра R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт B
rcall delay ;виклик підпрограми затримки
bst r16,1 ;копіювання першого біта регістра R16 у
;біт-акумулятор
bld r17,0 ;завантаження в нульовий біт регістра R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт B
rcall delay ;виклик підпрограми затримки
bst r16,2 ;копіювання другого біта регістра R16 у
;біт-акумулятор
bld r17,0 ;завантаження в нульовий біт регістра R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт B
rcall delay ;виклик підпрограми затримки
bst r16,3 ;копіювання третього біта регістра R16 у
;біт-акумулятор
bld r17,0 ;завантаження в нульовий біт регістра R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт B
rcall delay ;виклик підпрограми затримки
bst r16,4 ;копіювання четвертого біта регістра R16 у
;біт-акумулятор
bld r17,0 ;завантаження в нульовий біт регістра R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт B
rcall delay ;виклик підпрограми затримки
bst r16,5 ;копіювання п'ятого біта регістра R16 у
;біт-акумулятор
bld r17,0 ;завантаження в нульовий біт регістра R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт B
rcall delay ;виклик підпрограми затримки
bst r16,6 ;копіювання шостого біта регістра R16 у
;біт-акумулятор
bld r17,0 ;завантаження в нульовий біт регістра R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт B
rcall delay ;виклик підпрограми затримки
end:
rjmp end ;стрибок на мітку end
delay: ;підпрограма затримки
clr r19 ;очищення регістра R19
clr r21 ;очищення регістра R21
clr r20 ;очищення регістра R20
n1:
inc r19 ;інкремент (+1) регістра R19
cpi r19,255 ;порівняння регістра R19 з 255
brne n1 ;якщо R19¹255, то програма переходить на мітку n1
inc r20 ;інкремент (+1) регістра R20
cpi r20,255 ;порівняння регістра R20 з 255
brne n1 ;якщо R20¹255, то програма переходить на мітку n1
inc r21 ;інкремент (+1) регістра R21
cpi r21,16 ;порівняння регістра R21 з 16
brne n1 ;якщо R21¹16, то програма переходить на мітку n1
ret ;вихід із підпрограми затримки