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

Блок-схема

Підпрограма затримки Delay подібна підпрограмі затримки в 15-му прикладі.

20). Написати програму реалізації кільцевого лічильника з перехресним зв'язком.

.device at90s1200

.include "1200def.inc"

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

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

loop:

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

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

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

main:

asr r17 ;арифметичний зсув всіх бітів регістра R17 вправо

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

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

sbrs r17,0 ;якщо нульовий біт регістра R17 дорівнює 1,то

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

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

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

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

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

home:

asr r17 ;арифметичний зсув всіх бітів регістра R17 вправо

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

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

sbrc r17,0 ;якщо нульовий біт регістра R17 дорівнює 0,то

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

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

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

delay: ;підпрограма затримки

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,5 ;порівняння регістра R21 з 5

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

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

Блок-схема

Підпрограма затримки Delay подібна підпрограмі затримки в 19-му прикладі.

21). Реалізувати програму видачі імпульсу на виході b0 порту B частотою 1 кГц зі скважністю 0.5, тобто тривалість імпульсу дорівнює 0.002 секунди.

.device at90s1200

.include "1200def.inc"

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

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

loop:

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

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

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

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

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

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

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

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

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

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

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

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

n1:

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

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

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

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

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

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

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

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