- •Додаток 1. Приклади ррозв’язання задач мовою avr Assembler
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
- •Блок-схема
Блок-схема
4). Розробити програму, що реалізує роботу мультиплексора 4:1. Дані d0d3 зчитуються з розрядів d0d3 порту D, а адресні сигнали з d4d5 порту D. Вхід, що дозволяє, d6.
.device at90s1200 ;
.include "1200def.inc" ;
ser r20 ; усі біти регістра R20 встановлюються в одиницю
out ddrb, r20 ;настроювання порту В на вивід
main: ;
clr r21 ;очищення регістра R21
in r17,pind ;записуємо в регістр R17 значення порту D
sbis pind, 6 ;якщо шостий біт порту D дорівнює 1, то програма
;пропускає наступну команду
rjmp m1 ;перехід на мітку m1
out portb, r21 ;вивід значення регістра R21 на порт В
rjmp main ;перехід на мітку main (початок програми)
m1: ;
clr r22 ;очищення регістра R22
clr r23 ;очищення регістра R23
bst r21, 4 ;копіювання четвертого біта регістра R21 у
;біт-акумулятор
bld r22, 0 ;завантаження в нульовий біт регістра R22 значення
;біта-акумулятора
bst r21, 5 ;копіювання п'ятого біта регістра R21 у
;біт-акумулятор
bld r22, 1 ;завантаження в перший біт регістра R22 значення
;біта-акумулятора
cpi r22, 0 ;порівняння значення регістра R22 з нулем
breq n1 ;якщо R22=0, то програма переходить на мітку n1
cpi r22, 1 ;порівняння значення регістра R22 з одиницею
breq n2 ;якщо R22=1, то програма переходить на мітку n2
cpi r22, 2 ;порівняння значення регістра R22 із двійкою
breq n3 ;якщо R22=2, то програма переходить на мітку n3
bst r21, 3 ;копіювання третього біта регістра R21 у
;біт-акумулятор
rcall pp ;виклик підпрограми pp
n1: ;
bst r21, 0 ;копіювання нульового біта регістра R21 у
;біт-акумулятор
rcall pp ;виклик підпрограми pp
n2: ;
bst r21, 1 ;копіювання першого біта регістра R21 у
;біт-акумулятор
rcall pp ;виклик підпрограми pp
n3: ;
bst r21, 2 ;копіювання другого біта регістра R21 у
;біт-акумулятор
rcall pp ;виклик підпрограми pp
rjmp main ;перехід на початок програми
pp: ;
bld r23, 0 ;завантаження в нульовий біт регістра R23 значення
;біта-акумулятора
cpi r23, 0 ;порівняння значення регістра R23 з нулем
breq end ;якщо R23=0,то програма переходить на мітку end
sbi portb, 7 ;установка сьомого біта порту В в одиницю
end: ;
ret ;вихід із підпрограми
Блок-схема
5). Зчитати з порту B (біти b0b3) одне двійкове слово, а з порту B (біти b4b7) інше. Виконати операцію «І» над ними й інверсію над результатом. Отриманий результат вивести на біти d3d6 порта D.
.device at90s1200 ;
.include "1200def.inc" ;
ser r16 ;усі біти регістра R16 встановлюються в одиницю
out ddrd,r16 ;настроювання порту D на вивід
loop:
in r17,pinb ;ввід даних з порту B у регістр R17
mov r18,r17 ;копіювання значення регістра R17 у регістр R18
andi r17,0x0F ;логічна операція “І” регістра R17 з числом $0F, в
;результаті якої виділяється молодша тетрада регістра
andi r18,0xF0 ;логічна операція “І” регістра R18 з числом $F0, в
;результаті якої виділяється старша тетрада регістра
and r18,r17 ;побітова операція логічного «І» над регістрами R18 і
;R17 (результат операції записується в регістр R18)
com r18 ;інвертування регістра R18
lsl r18 ;логічний зсув вліво регістра R18
lsl r18 ;логічний зсув вліво регістра R18
lsl r18 ;логічний зсув вліво регістра R18
out portd,r18 ;вивід значення регістра R18 на порт D
rjmp loop ;перехід на мітку loop (початок програми)
