- •Додаток 1. Приклади ррозв’язання задач мовою avr Assembler
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
Блок-схема
Підпрограма затримки Delay1
Підпрограми затримки Delay2, 3 і 4 реалізовуються аналогічно підпрограмі Delay1, тільки замість умови «якщо r21=32» підставляється r21=64, r21=96 і r21=128 відповідно.
23). Реалізувати програму перетворення вхідного двійкового коду в код семисегментних індикаторів.
.device at90s1200
.include "1200def.inc"
ser r16 ;усі біти регістра R16 встановлюються в одиницю
out ddrb,r16 ;настроювання порту B на вивід
loop:
clr r17 ;очищення регістра R17
set ;установка в одиницю біта-акумулятора Т
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 значення
;біта-акумулятора
cpi r17,0 ;порівняння регістра R17 з 0
breq m1 ;якщо R17=0, програма переходить на мітку m1
cpi r17,1 ;порівняння регістра R17 з 1
breq m2 ;якщо R17=1, програма переходить на мітку m2
cpi r17,2 ;порівняння регістра R17 з 2
breq m3 ;якщо R17=2, програма переходить на мітку m3
cpi r17,3 ;порівняння регістра R17 з 3
breq m4 ;якщо R17=3, програма переходить на мітку m4
cpi r17,4 ;порівняння регістра R17 з 4
breq m5 ;якщо R17=4, програма переходить на мітку m5
cpi r17,5 ;порівняння регістра R17 з 5
breq m6 ;якщо R17=5, програма переходить на мітку m6
cpi r17,6 ;порівняння регістра R17 з 6
breq m7 ;якщо R17=6, програма переходить на мітку m7
cpi r17,7 ;порівняння регістра R17 з 7
breq m8 ;якщо R17=7, програма переходить на мітку m8
cpi r17,8 ;порівняння регістра R17 з 8
breq m9 ;якщо R17=8, програма переходить на мітку m9
cpi r17,9 ;порівняння регістра R17 з 9
breq m10 ;якщо R17=9, програма переходить на мітку m10
rjmp loop ;перехід на мітку loop (початок програми)
m1:
ldi r18,0b01111110 ;присвоїти регістру R18 число 011111102
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m2:
ldi r18,0b00110000 ;присвоїти регістру R18 число 001100002
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m3:
ldi r18,0b01101101 ;присвоїти регістру R18 число 011011012
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m4:
ldi r18,0b01111001 ;присвоїти регістру R18 число 011110012
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m5:
ldi r18,0b00110011 ;присвоїти регістру R18 число 001100112
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m6:
ldi r18,0b01011011 ;присвоїти регістру R18 число 010110112
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m7:
ldi r18,0b01011111 ;присвоїти регістру R18 число 010111112
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m8:
ldi r18,0b01110000 ;присвоїти регістру R18 число 011100002
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m9:
ldi r18,0b01111111 ;присвоїти регістру R18 число 011111112
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)
m10:
ldi r18,0b01111011 ;присвоїти регістру R18 число 011110112
out portb,r18 ;вивід значення регістра R18 на порт B
rjmp loop ;перехід на мітку loop (початок програми)