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

Блок-схема

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

15). Розробити програму двійкового лічильника, коефіцієнт перерахування якого задається словом, що подається на порт D.

.device AT90S1200

.include "1200def.inc"

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

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

loop:

in r17,pind ;ввід даних з порту D у регістр R17

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

breq loop ;перехід на мітку loop якщо дорівнює

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

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

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

home:

inc r18 ;інкремент регістра R18

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

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

cp r17,r18 ;порівняння значень регістрів R17 і R18

breq loop ;якщо рівні, то програма переходить на мітку loop

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

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

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

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

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

m1:

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

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

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

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

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

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

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

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

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

ret ;повернення з підпрограми затримки

Блок-схема

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

16). Написати 4 прості програми. Вибір програми, що виконується, задається двома молодшими бітами порту D.

.device at90s1200

.include "1200def.inc"

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

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

home:

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

set ;установка в одиницю біта-акумулятора Т

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

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

bld r18,0 ;завантаження в нульовий біт регістра R18 значення

;біта-акумулятора

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

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

bld r18,1 ;завантаження в перший біт регістра R18 значення

;біта-акумулятора

cpi r18,1 ;порівняння регістра R18 з 1

breq q1 ;якщо R18=1, то програма переходить на мітку q1

cpi r18,2 ;порівняння регістра R18 з 2

breq q2 ;якщо R18=2, то програма переходить на мітку q2

cpi r18,3 ;порівняння регістра R18 з 3

breq q3 ;якщо R18=3, то програма переходить на мітку q3

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

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

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

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

q1:

swap r17 ;тетради регістра R17 міняються місцями

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

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

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

q2:

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

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

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

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

q3:

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

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

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

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

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

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

ret ;повернення з підпрограми затримки

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