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

Блок-схема

27). Розробити програму електронного секундоміра. При натисканні на пін d0 секундомір включається і веде перерахунок до 60-ти, що відображається на світлодіодах у двійковому коді. При натисканні на пін d1 секундомір скидається.

.device at90s1200

.include "1200def.inc"

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

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

start:

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

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

rcall delay ;виклик підпрограми затримки Delay

main:

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

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

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

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

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

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

inc r17 ;інкремент регістра R17

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

rcall delay ;виклик підпрограми затримки Delay

cpi r17,59 ;порівняння регістра R17 з 59

breq start ;якщо R17=59, то програма переходить на мітку start

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

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

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

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

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

n1:

inc r19 ;інкремент (+1) регістра R19

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

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

inc r20 ;інкремент (+1) регістра R20

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

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

inc r21 ;інкремент (+1) регістра R21

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

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

ret ;вихід із підпрограми затримки

Блок-схема

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

28). На один із входів d0d7 щомиті подається одиничний сигнал. На світлодіодах порту B (b0b3) у двійковому коді відображати номер входу.

.device at90s1200

.include "1200def.inc"

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

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

loop:

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

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

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

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

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

ldi r17,1 ;присвоїти регістру R17 число 1

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

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

m1:

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

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

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

ldi r17,2 ;присвоїти регістру R17 число 2

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

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

m2:

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

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

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

ldi r17,3 ;присвоїти регістру R17 число 3

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

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

m3:

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

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

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

ldi r17,4 ;присвоїти регістру R17 число 4

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

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

m4:

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

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

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

ldi r17,5 ;присвоїти регістру R17 число 5

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

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

m5:

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

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

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

ldi r17,6 ;присвоїти регістру R17 число 6

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

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

m6:

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

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

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

ldi r17,7 ;присвоїти регістру R17 число 7

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

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

m7:

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

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

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

ldi r17,8 ;присвоїти регістру R17 число 8

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

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

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