Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dodatok_1.doc
Скачиваний:
1
Добавлен:
04.09.2019
Размер:
706.05 Кб
Скачать

Блок-схема

Підпрограма затримки Delay

22). Реалізувати програму відповідно до попереднього задачі, тільки ширина імпульсу задається 4-ма молодшими розрядами порту D.

.device at90s1200

.include "1200def.inc"

ser r16 ;усі біти регістра R16 встановлюються в одиницю

out ddrb,r16 ;настроювання порту В на вивід

loop:

clr r17 ;очищення регістра R18

out portb,r17 ;вивід значення регістра R17 на порт В

sbis pind,0 ;якщо нульовий біт порту D дорівнює 1, то програма

;пропускає наступну команду

rjmp m1 ;перехід на мітку m1

ldi r17,1 ;присвоїти регістру R17 константу 1

out portb,r17 ;вивід значення регістра R17 на порт В

rcall Delay1 ;виклик підпрограми затримки на 2 секунди (Delay1)

rjmp loop ;перехід на початок програми (мітку loop)

m1:

sbis pind,1 ;якщо перший біт порту D дорівнює 1, то програма

;пропускає наступну команду

rjmp m2 ;перехід на мітку m2

ldi r17,1 ;присвоїти регістру R17 константу 1

out portb,r17 ;вивід значення регістра R17 на порт В

rcall Delay2 ;виклик підпрограми затримки на 4 секунди (Delay2)

rjmp loop ;перехід на початок програми (мітку loop)

m2:

sbis pind,2 ;якщо другий біт порту D дорівнює 1, то програма

;пропускає наступну команду

rjmp m3 ;перехід на мітку m3

ldi r17,1 ;присвоїти регістру R17 константу 1

out portb,r17 ;вивід значення регістра R17 на порт В

rcall Delay3 ;виклик підпрограми затримки на 6 секунди (Delay3)

rjmp loop ;перехід на початок програми (мітку loop)

m3:

sbis pind,3 ;якщо третій біт порту D дорівнює 1, то програма

;пропускає наступну команду

rjmp loop ;перехід на початок програми (мітку loop)

ldi r17,1 ;присвоїти регістру R17 константу 1

out portb,r17 ;вивід значення регістра R17 на порт У

rcall delay4 ;виклик підпрограми затримки на 8 секунди (Delay4)

rjmp loop ;перехід на початок програми (мітку loop)

Delay1: ;підпрограма затримки на 2 секунди

clr r19 ;очищення регістра R19

clr r21 ;очищення регістра R21

clr r20 ;очищення регістра R20

n1:

inc r19 ;інкремент регістра R19

cpi r19,255 ;порівняння регістра R19 з 255

brne n1 ;якщо R19¹255, то програма переходить на мітку n1

inc r20 ;інкремент регістра R20

cpi r20,255 ;порівняння регістра R20 з 255

brne n1 ;якщо R20¹255, то програма переходить на мітку n1

inc r21 ;інкремент регістра R21

cpi r21,32 ;порівняння регістра R21 з 32

brne n1 ;якщо R21¹32, то програма переходить на мітку n1

ret ;вихід із підпрограми затримки на 2 секунди

Delay2: ;підпрограма затримки на 4 секунди

clr r19 ;очищення регістра R19

clr r20 ;очищення регістра R20

clr r21 ;очищення регістра R21

p1:

inc r19 ;інкремент регістра R19

cpi r19,255 ;порівняння регістра R19 з 255

brne p1 ;якщо R19¹255, то програма переходить на мітку p1

inc r20 ;інкремент регістра R20

cpi r20,255 ;порівняння регістра R20 з 255

brne p1 ;якщо R20¹255, то програма переходить на мітку p1

inc r21 ;інкремент регістра R21

cpi r21,64 ;порівняння регістра R21 з 64

brne p1 ;якщо R21¹64, то програма переходить на мітку p1

ret ;вихід із підпрограми затримки на 4 секунди

Delay3: ;підпрограма затримки на 6 секунди

clr r19 ;очищення регістра R19

clr r21 ;очищення регістра R21

clr r20 ;очищення регістра R20

t1:

inc r19 ;інкремент регістра R19

cpi r19,255 ;порівняння регістра R19 з 255

brne t1 ;якщо R19¹255, то програма переходить на мітку t1

inc r20 ;інкремент регістра R20

cpi r20,255 ;порівняння регістра R20 з 255

brne t1 ;якщо R20¹255, то програма переходить на мітку t1

inc r21 ;інкремент регістра R21

cpi r21,96 ;порівняння регістра R21 з 96

brne t1 ;якщо R21¹96, то програма переходить на мітку t1

ret ;вихід із підпрограми затримки на 6 секунди

Delay4: ;підпрограма затримки на 8 секунд

clr r19 ;очищення регістра R19

clr r21 ;очищення регістра R21

clr r20 ;очищення регістра R20

w1:

inc r19 ;інкремент регістра R19

cpi r19,255 ;порівняння регістра R19 з 255

brne w1 ;якщо R19¹255, то програма переходить на мітку w1

inc r20 ;інкремент регістра R20

cpi r20,255 ;порівняння регістра R20 з 255

brne w1 ;якщо R20¹255, то програма переходить на мітку w1

inc r21 ;інкремент регістра R21

cpi r21,128 ;порівняння регістра R21 з 128

brne w1 ;якщо R21¹128, то програма переходить на мітку w1

ret ;вихід із підпрограми затримки на 8 секунд

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]