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

Команда brid – Перейти, якщо глобальне переривання заборонено

Описання: Умовний відносний перехід. Тестується біт прапорця глобального переривання (I) регістра статусу і, якщо біт очищений, виконується перехід відносно стану лічильника програм. Дана команда виконує перехід в любому напрямку відносно стану лічильника програм (PC-64 << Rd < PC+63). Параметр k являється зсувом відносно стану лічильника програм і представлений в формі доповнення до двох. (Команда еквівалентна BRBC 7,k).

Операція:

(i)

If I = 0 then PC < PC + k +1, else PC < PC +1

Синтаксис

Операнди:

Лічильник програм:

(i)

BRID k

-64 < k <+63

PC < PC + k + 1, PC < PC + 1, якщо умови не виконані

Булеві вирази регістра статусу (SREG)

I

T

H

S

V

N

Z

C

-

-

-

-

-

-

-

-

Приклад:

.device AT90S1200

.include "1200def.inc"

.org $002 ;організація переривання по переповненню таймера-лічильника

rjmp tim_ovf ;перехід на мітку tim_ovf при виникненні переривання

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

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

mm: sei ;установка біта глобального переривання

ldi r20,5 ;записати в регістр R20 число 5

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

out timsk,r17 ;установлюємо в регістрі маски переривання від таймера -;лічильника (TIMSK) біт TOIE0 – біт дозволу переривання по ;переповненню таймера-лічильника

out tifr,r17 ;очищуємо в регістрі прапорців переривання від таймера –;лічильника (TIFR) біт TOV0 – цей біт встановлюється при ;переповненні таймера-лічильника

brid mm ; якщо глобальне переривання заборонено, перехід на мітку mm

qq: out tccr0,r20 ;встановлюємо предустановка таймера-лічильника CK/1024

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

tim_ovf: ;підпрограма, що виконується при перериванні по ;переповненню таймера-лічильника

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

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

add r18,r19 ;додаємо регістри R18 і R19

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

reti ;вихід із підпрограми переривання

2.2.3. Команди пересилки Команда ld - Загрузити непрямо з созп в регістр з використанням індексу z

Описання: Загружає непрямо один байт із СОЗП в регістр. Положення байта в СОЗП вказується 16-розрядним регістром-вказівником Z в регістровому файлі. Звернення до пам’яті обмежено поточною сторінкою об’ємом 64 Кбайта. Для звернення до другої сторінки СОЗП необхідно змінити регістр RAMPZ в області вводу-виводу. Регістр-вказівник Z може залишатись незмінним після виконання команди, але може бути інкрементований або декрементований. Ця особливість дуже зручна при використанні регістра-вказівника Z в якості вказівника стека.

Операція:

Синтаксис

Операнди:

Лічильник програм:

(i)

LD Rd, Z

0 < Rd < 31

PC< PC + 1

Булеві вирази регістра статусу (SREG)

I

T

H

S

V

N

Z

C

-

-

-

-

-

-

-

-

Приклад:

.device AT90S1200

.include "1200def.inc"

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

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

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

ldi r30,18 ;в молодший байт Z – регістра записуємо адрес 1810 = 12h (це ;адрес регістра R18)

ld r17,z ;записуємо в регістр R17 значення SRAM по адресу 12h

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

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

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