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

Команда cbi - Очистити біт в регістрі вводу-виводу

Описання: Очистка визначеного біта в регістрі вводу-виводу. Команда працює з молодшими 32 регістрами вводу-виводу - адреса з 0 по 31.

Операція:

(i)

I/O (P, b)  0

Синтаксис

Операнди:

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

(i)

CBI P,b

0 < P < 31, 0 < b < 7

PC < PC + 1

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

I

T

H

S

V

N

Z

C

-

-

-

-

-

-

-

-

Приклад:

.device AT90S1200

.include "1200def.inc"

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

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

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

cbi portb,4 ;очистити 5-ий біт порту В

Команда lsl - Логічний зсув вліво

Описання: Виконання зсуву всіх бітів Rd на одне місце вліво. Біт 0 стирається. Біт 7 загружається у прапорець переносу (С) регістра статусу (SREG). Ця команда ефективно множить на два значення величини без знаку.

Операція:

(i)

Rd (n+1)  Rd (n), Rd (0)  0

Синтаксис

Операнди:

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

(i)

LSL Rd

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: clr r17 ;очистити всі біти регістру R17

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

ldi r17,0 ;встановити перший біт регістра R17

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

mm: lsl r17 ; логічний зсув вліво всіх бітів регістра R17

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

sbrs r17,7 ;якщо R17(7)=1, пропустити наступну команду

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

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

Команда lsr - Логічний зсув вправо

Описання: Зсув всіх бітів Rd на одне місце вправо. Біт 7очищається. Біт 0 загружається в прапорець переносу (С) регістра статусу (SREG). Ця команда ефективно ділить на два величину без знаку на два. Прапорець переносу може бути використаний для округлення результату.

Операція:

(i)

Rd (n)  Rd (n+1), Rd (7)  0

Синтаксис

Операнди:

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

(i)

LSR Rd

0 < Rd < 31

PC < PC + 1

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

I

T

H

S

V

N

Z

C

-

-

-

0

Приклад:

.device AT90S1200

.include "1200def.inc"

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

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

loop: clr r17 ;очистити всі біти регістру R17

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

ldi r17,0b10000000 ;встановити восьмий біт регістра R17

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

mm: lsr r17 ; логічний зсув вправо всіх бітів регістра R17

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

sbrs r17,0 ;якщо R17(0)=1, пропустити наступну команду

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

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

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