- •Додаток 1. Приклади ррозв’язання задач мовою avr Assembler
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
Блок-схема
8). Розробити програму, що приймає з d0d3 порта D слово і забезпечує парність одиниць у вихідному слові b0b4 порта В.
.device at90s1200
.include "1200def.inc"
ser r16 ;усі біти регістра R16 встановлюються в одиницю
out ddrb,r16 ;настроювання порту В на вивід
loop:
in r17,pind ;ввід даних з порту D у регістр R17
cpi r17,3 ;порівняння регістра R17 з 3
breq m1 ;якщо R17=3, то програма переходить на мітку m1
cpi r17,5 ;порівняння регістра R17 з 5
breq m1 ;якщо R17=5, то програма переходить на мітку m1
cpi r17,6 ;порівняння регістра R17 з 6
breq m1 ;якщо R17=6, то програма переходить на мітку m1
cpi r17,9 ;порівняння регістра R17 з 9
breq m1 ;якщо R17=9, то програма переходить на мітку m1
cpi r17,10 ;порівняння регістра R17 з 10
breq m1 ;якщо R17=10, то програма переходить на мітку m1
cpi r17,12 ;порівняння регістра R17 з 12
breq m1 ;якщо R17=12, то програма переходить на мітку m1
cpi r17,15 ;порівняння регістра R17 з 15
breq m1 ;якщо R17=15, то програма переходить на мітку m1
cpi r17,1 ;порівняння регістра R17 з 1
breq m2 ;якщо R17=1, то програма переходить на мітку m2
cpi r17,2 ;порівняння регістра R17 з 2
breq m2 ;якщо R17=2, то програма переходить на мітку m2
cpi r17,4 ;порівняння регістра R17 з 4
breq m2 ;якщо R17=4, то програма переходить на мітку m2
cpi r17,7 ;порівняння регістра R17 з 7
breq m2 ;якщо R17=7, то програма переходить на мітку m2
cpi r17,8 ;порівняння регістра R17 з 8
breq m2 ;якщо R17=8, то програма переходить на мітку m2
cpi r17,11 ;порівняння регістра R17 з 11
breq m2 ;якщо R17=11, то програма переходить на мітку m2
cpi r17,13 ;порівняння регістра R17 з 13
breq m2 ;якщо R17=13, то програма переходить на мітку m2
cpi r17,14 ;порівняння регістра R17 з 14
breq m2 ;якщо R17=14, то програма переходить на мітку m2
rjmp loop ;перехід на мітку loop (початок програми)
m1:
out portb,r17 ;вивід значення регістра R17 на порт В
rjmp loop ;перехід на мітку loop (початок програми)
m2: ;
sbr r17,4 ;установка четвертого біта регістра R17
out portb,r17 ;вивід значення регістра R17 на порт В
rjmp loop ;перехід на мітку loop (початок програми)
Б лок-схема
9). Розробити програму затримки на 3 секунди одиничного імпульсу, що подається на біт d0 порту D.
.device at90s1200
.include "1200def.inc"
ser r16 ;усі біти регістра R16 встановлюються в одиницю
out ddrb,r16 ;настроювання порту В на вивід
loop:
clr r18 ;очищення регістра R18
out portb,r18 ;вивід значення регістра R18 на порт В
sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp loop ;перехід на початок програми (мітку loop)
ldi r18,1 ;присвоїти регістру R18 константу 1
out portb,r18 ;вивід значення регістра R18 на порт B
rcall Delay ;виклик підпрограми затримки
rjmp loop ;перехід на початок програми (мітку loop)
Delay: ;підпрограма затримки на 3 секунди
clr r19 ;очищення регістра R19
clr r21 ;очищення регістра R20
clr r20 ;очищення регістра R21
n1:
inc r19 ;інкремент (+1) регістра R19
cpi r19,255 ;порівняння регістра R19 з 255
brne n1 ;якщо R19255, то програма переходить на мітку n1
inc r20 ;інкремент (+1) регістра R20
cpi r20,255 ;порівняння регістра R20 з 255
brne n1 ;якщо R20255, то програма переходить на мітку n1
inc r21 ;інкремент (+1) регістра R21
cpi r21,48 ;порівняння регістра R21 з 48
brne n1 ;якщо R2148, то програма переходить на мітку n1
ret ;вихід із підпрограми затримки