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

Команда brvc – Перейти, якщо переповнення очищене

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

Операція:

(i)

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

Синтаксис

Операнди:

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

(i)

BRVC 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"

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

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

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

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

brvc m1 ;якщо переповнення очищено, перехід на мітку m1

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

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

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

Операція:

(i)

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

Синтаксис

Операнди:

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

(i)

BRIE 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 – цей біт встановлюється при ;переповненні таймера-лічильника

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

rjmp 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 ;вихід із підпрограми переривання

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