- •Додаток 1. Приклади ррозв’язання задач мовою avr Assembler
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
Блок-схема
25). Розробити варіант програми Word Generator (з EWB).
.device at90s1200
.include "1200def.inc"
ser r16 ;усі біти регістра R16 встановлюються в одиницю
out ddrb,r16 ;настроювання порту B на вивід
home:
clr r18 ;очищення регістра R18
out portb,r18 ;вивід значення регістра R18 на порт B
rcall delay ;виклик підпрограми затримки Delay
set ;установка в одиницю біта-акумулятора Т
loop:
clr r17 ;очищення регістра R17
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,0 ;завантаження в нульовий біт R17 значення
;біта-акумулятора
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,1 ;завантаження в перший біт R17 значення
;біта-акумулятора
sbic pind,2 ;якщо другий біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,2 ;завантаження в другий біт R17 значення
;біта-акумулятора
sbic pind,3 ;якщо третій біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,3 ;завантаження в третій біт R17 значення
;біта-акумулятора
sbic pind,4 ;якщо четвертий біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,4 ;завантаження в четвертий біт R17 значення
;біта-акумулятора
sbic pind,5 ;якщо п'ятий біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,5 ;завантаження в п'ятий біт R17 значення
;біта-акумулятора
sbic pind,6 ;якщо шостий біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,6 ;завантаження в шостий біт R17 значення
;біта-акумулятора
sbic pind,7 ;якщо сьомий біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,7 ;завантаження в сьомий біт R17 значення
;біта-акумулятора
cpi r17,0 ;порівняння регістра R17 з 0
breq loop ;якщо R17=0, програма переходить на мітку loop
inc r18 ;інкремент регістра R18
out portb,r18 ;вивід значення регістра R18 на порт B
rcall delay ;виклик підпрограми затримки Delay
cp r17,r18 ;порівняння значень регістрів R17 і R18
breq home ;якщо вони рівні, програма переходить на мітку home
rjmp loop ;перехід на мітку loop
delay: ;підпрограма затримки
clr r22 ;очищення регістра R22
mm:
inc r20 ;інкремент регістра R20
cpi r20,0 ;порівняння регістра R20 з 0
brne mm ;якщо R20¹0, то програма переходить на мітку mm
inc r21 ;інкремент регістра R21
cpi r21,0 ;порівняння регістра R21 з 0
brne mm ;якщо R21¹0, то програма переходить на мітку mm
inc r22 ;інкремент регістра R22
cpi r22,5 ;порівняння регістра R22 з 5
brne mm ;якщо R22¹5, то програма переходить на мітку mm
ret ;вихід із підпрограми затримки
Блок-схема
26). Прийняти код довжиною 1 слово (байт) у послідовному форматі, що надходить на біт d1 порту D з частотою, що задають бітом d0 порту D, і перетворити його в паралельний формат, подавши на світлодіоди порту В.
.device at90s1200
.include "1200def.inc"
ser r16 ;усі біти регістра R16 встановлюються в одиницю
out ddrb,r16 ;настроювання порту В на вивід
clr r17 ;очищення регістра R17
set ;установка в одиницю біта-акумулятора Т
m0:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m0 ;перехід на мітку m0
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,0 ;завантаження в нульовий біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
n0:
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
rjmp n0 ;перехід на мітку n0
m1:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m1 ;перехід на мітку m1
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,1 ;завантаження в перший біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
n1:
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
rjmp n1 ;перехід на мітку n1
m2:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m2 ;перехід на мітку m2
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,2 ;завантаження в другий біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
n2:
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
rjmp n2 ;перехід на мітку n2
m3:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m3 ;перехід на мітку m3
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,3 ;завантаження в третій біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
n3:
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
rjmp n3 ;перехід на мітку n3
m4:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m4 ;перехід на мітку m4
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,4 ;завантаження в четвертий біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
n4:
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
rjmp n4 ;перехід на мітку n4
m5:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m5 ;перехід на мітку m5
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,5 ;завантаження в п'ятий біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
n5:
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
rjmp n5 ;перехід на мітку n5
m6:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m6 ;перехід на мітку m6
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,6 ;завантаження в шостий біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
n6:
sbic pind,0 ;якщо нульовий біт порту D дорівнює 0, то програма
;пропускає наступну команду
rjmp n6 ;перехід на мітку n6
m7:
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає ;наступну команду
rjmp m7 ;перехід на мітку m7
sbic pind,1 ;якщо перший біт порту D дорівнює 0, то програма
;пропускає наступну команду
bld r17,7 ;завантаження в сьомий біт R17 значення
;біта-акумулятора
out portb,r17 ;вивід значення регістра R17 на порт В
end:
rjmp end ;перехід на мітку end
