Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Obsluga

.pdf
Скачиваний:
23
Добавлен:
13.02.2015
Размер:
960.46 Кб
Скачать

 

 

 

 

 

 

 

3)

IORWF

REG,1

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

IORWF

INDF,1

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

“лежит” число 0х30)

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

“лежит” число 0х37)

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

MOVF

REG,0

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

W=0xC2

 

 

 

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

MOVF

REG,1

 

 

 

 

MOVF

f,d

 

1)

До выполнения

 

 

 

 

Содержимое регистра f пересылается в

REG=0x43

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

регистр адресата

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

Переслать f

 

 

 

REG=0x43

 

1

Z

 

 

 

 

Если d=0 – значение сохраняется в регистре W

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если d=1 – значение сохраняется в регистре f

2) До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

MOVF

INDF,1

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

“лежит” число 0х00)

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

“лежит” число 0х00)

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOVWF

REG

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

REG=0xFF

 

 

 

 

 

MOVWF

f

 

W=0x4F

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

REG=0x4F

 

 

 

 

 

 

 

 

 

Переслать содержимое W в f

W=0x4F

 

 

 

 

 

Переслать

 

 

 

 

 

1

 

 

 

W в f

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

MOVWF

INDF

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому ад-

 

 

 

 

 

 

 

 

 

ресу “лежит” число 0х00 )

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х17)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

61

NOP

До выполнения

NOP Нет операции PC=адрес X 1

После выполнения

PC=адрес X+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RLF

REG,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=xxxxxxxx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

 

 

 

 

RLF

f, d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=11001100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполняется циклический сдвиг влево

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

 

 

Циклический

 

 

содержимого регистра f через бит C

 

RLF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

регистра STATUS

 

До выполнения

 

 

 

 

сдвиг f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

1

C

 

 

влево через

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если d=0 - результат сохраняется в регистре

W

“лежит” число 0x3A

 

 

 

 

перенос

 

 

 

 

 

 

00111010)

 

 

 

 

 

 

 

 

Если d=1 - результат сохраняется в регистре

f

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“лежит” число 0x75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01110101)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RLF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“лежит” число 0xB9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10111001),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“лежит” число 0x72

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01110010)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRF

REG,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

 

 

 

 

RRF

f, d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=01110011

 

 

 

 

 

Выполняется циклический сдвиг вправо

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

содержимого регистра f черезбит C

 

 

 

 

 

 

 

 

 

 

RRF

INDF,1

 

 

 

 

Циклический

 

 

 

 

 

 

 

 

регистра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

STATUS

 

 

 

 

 

сдвиг f

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вправо через

 

Если d=0 - результат сохраняется в регистре W

“лежит число 0x3A

 

 

 

 

перенос

 

 

 

 

 

 

00111010),

 

 

 

 

 

 

 

 

Если d=1 - результат сохраняется в регистре f

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“лежит” число 0x9D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10011101),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“лежит” число 0x39

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00111001),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“лежит” число 0x1C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00011100),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

62

 

 

 

 

 

 

 

SUBWF

REG,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

REG=0x03

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

C=x, Z=x

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

SUBWF

f, d

 

Вычесть содержимое регистра W

C=1, Z=0 (“+” результат )

 

 

 

 

 

 

 

 

 

SUBWF

REG,1

 

 

 

 

 

 

 

 

 

из содержимого регистра f.

1

 

C,DC,Z

 

 

Вычесть

 

 

 

До выполнения

 

 

 

 

W из f

 

 

Если d=0 - результат сохраняется в регистре W

REG=0x02

 

 

 

 

 

 

 

 

 

 

Если d=1 - результат сохраняется в регистре f.

W=0x02

 

 

 

 

 

 

 

 

 

 

 

C=x, Z=x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

C=1, Z=1 (“0” результат)

 

 

 

 

 

 

 

 

 

 

SUBWF

REG,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

C=x, Z=x

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0xFF

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

C=0, Z=0 (“-“ результат)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SWAPF

REG,0

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

REG=0xA5 1010 0101

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0xA5

 

 

 

 

 

 

SWAPF

f, d

 

 

W=0x5A 0101 1010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поменять местами старший и младший

SWAPF

REG,1

 

 

 

 

 

Поменять

 

 

полубайты регистра f.

До выполнения

 

1

 

 

 

 

местами

 

 

 

 

 

 

 

 

 

 

Если d=0 – результат сохраняется в регистр W

REG=0xA5

 

 

 

 

 

полубайты

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

в f

 

 

 

Если d=1 – результат сохраняется в регистре f

 

 

 

 

 

 

 

 

REG=0x5A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

SWAPF

INDF,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

“лежит” число 0x20

 

 

 

 

 

 

 

 

 

 

0010 0000

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

“лежит” число 0x02

 

 

 

 

 

 

 

 

 

 

0000 0010

 

 

 

 

 

 

 

 

 

 

 

XORWF

REG,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

XORWF

f,d

 

 

REG=0xAF

 

 

 

 

 

 

 

 

 

 

Побитное "Исключающее "ИЛИ"

W=0xB5

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Побитное

 

 

содержимого регистров W и f

REG=0x1A

 

 

 

 

 

 

 

 

(проверка на одинаковость)

W=0xB5

 

1

 

Z

 

 

"исключающее

 

 

 

 

 

 

 

 

 

XORWF

REG,0

 

 

 

 

 

ИЛИ" W и f

 

 

 

 

 

 

 

 

 

 

Если d=0 – результат тохраняется в регистре W

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если d=1 – результат сохраняется в регистре f

REG=0xAF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0xAF

 

 

 

 

 

 

 

 

 

 

 

W=0x1A

 

 

 

 

63

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

XORWF

INDF,1

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение

 

 

 

 

 

 

 

 

регистра с адресом в

 

 

 

 

 

 

 

 

FSR=0xAF)

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение

 

 

 

 

 

 

 

 

регистра с адресом в

 

 

 

 

 

 

 

 

FSR=0x1A)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Бит - ориентированные команды

(b-от 0 до 7)

 

 

 

 

 

 

 

 

BCF

REG,7

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

REG=0xC7 11000111

 

 

 

 

BCF

f, b

 

После выполнения

 

 

 

 

 

REG=0x47 01000111

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

 

 

Установить

 

Установить в 0 бит b регистра f

BCF

INDF,3

1

 

 

 

в 0 бит b

 

До выполнения

 

 

 

регистра f

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

“лежит” число 0x2F

 

 

 

 

 

 

 

 

0010 1111)

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

“лежит” число 0x27

 

 

 

 

 

 

 

 

0010 0111)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BSF

REG,7

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

REG=0x0A 00001010

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

BSF

f, b

 

REG=0x8A 10001010

 

 

 

 

 

 

 

Установить в 1 бит b регистра f

Косвенная адресация

1

 

 

 

 

 

 

 

 

 

Установить

 

 

BSF

INDF,3

 

 

 

 

в 1 бит b

 

 

До выполнения

 

 

 

 

регистра f

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

“лежит” число 0x20

 

 

 

 

 

 

 

 

00100000)

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

“лежит” число 0x28

 

 

 

 

 

 

 

 

00101000)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BTFSC

REG,4

 

 

 

 

BTFSC

f, b

 

GOTO

LOOP

 

 

 

 

 

 

 

Если бит b в регистре f =1, то

TRUE

.……

 

 

 

 

 

 

 

1) До выполнения

 

 

 

 

Проверить бит

 

исполняется следующая инструкция

 

 

 

 

b в регистре f,

 

Если бит b в регистре f =0,

REG=xxx0xxxx

1(2)

 

 

 

если b=0, то

 

то следующая инструкция

После выполнения

 

 

 

пропустить

 

не исполняется (пропускается, вместо нее

Т.к. REG<4>=0,

 

 

 

 

следующую

 

исполняется виртуальный” NOP),

исполняется TRUE

 

 

 

 

инструкцию

 

а команда исполняется за 2 м.ц.

2) До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=xxx1xxxx

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

Т.к. REG<4>=1,

 

 

 

 

 

 

 

 

исполняется GOTO LOOP

 

 

 

 

 

 

 

 

 

 

 

 

64

 

 

 

 

 

 

 

BTFSS

REG,4

 

 

 

 

 

BTFSS

f, b

 

 

 

GOTO LOOP

 

 

 

 

 

 

 

 

 

Если бит b в регистре f=0,

TRUE

.……

 

 

 

 

 

 

 

 

 

1) До выполнения

 

 

 

 

 

Проверить бит

 

 

исполняется следующая инструкция

REG=xxx0xxxx

 

 

 

 

 

 

b в регистре f,

 

 

Если бит b в регистре f=1,

После выполнения

 

 

 

 

 

если b=1, то

 

 

то следующая инструкция

Т.к. REG<4>=0,

 

1(2)

 

 

 

 

пропустить

 

 

не исполняется (пропускается, вместо нее

исполняется GOTO LOOP

 

 

 

 

 

следующую

 

 

исполняется виртуальный” NOP),

2) До выполнения

 

 

 

 

 

инструкцию

 

 

а команда исполняется за 2 м.ц.

REG=xxx1xxxx

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

Т.к. REG<4>=1,

 

 

 

 

 

 

 

 

 

 

 

исполняется TRUE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды операций с константами

( k – от 0 до 255 )

 

 

 

 

 

 

 

 

 

 

ADDLW

0x15

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x25

 

 

 

 

 

 

ADDLW

k

 

 

 

ADDLW

REG

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

Содержимое регистра W складывается

W=0x10

 

 

 

 

 

 

Сложить

 

 

с 8- разрядной константой k

REG=0x37 (адрес регистра,

1

C,DC,Z

 

 

константу с W

 

 

Результат сохраняется в регистре W

а не его содержимое)

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x47

 

 

 

 

 

 

 

 

 

 

 

ADDLW

CONST

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

“Прописка в шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

CONST EQU 0x37

 

 

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x47

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x01

 

 

 

 

 

 

 

 

 

 

 

C=? Z=?

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x01

 

 

 

 

 

 

SUBLW

k

 

 

 

C=1, Z=0

 

 

 

 

 

 

 

 

 

(“+” результат)

 

 

 

 

 

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

Вычесть W

 

 

Вычесть содержимое регистра W из

W=0x03

 

 

 

 

 

 

из

 

 

 

8-разрядной константы k

C=? Z=?

 

1

C,DC,Z

 

 

константы

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

Результат сохраняется в регистре W.

W=0xFF

 

 

 

 

 

 

 

 

 

 

 

C=0, Z=0

 

 

 

 

 

 

 

 

 

 

 

(“-“ результат)

 

 

 

 

 

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

C=? Z=?

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

C=1, Z=1

 

 

 

 

 

 

 

 

 

 

 

( “0” результат)

 

 

 

 

 

 

 

 

 

 

SUBLW

REG

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

 

 

 

REG=0x37 (адрес регистра,

 

 

 

 

 

 

 

 

 

 

а не его содержимое)

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x27

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

65

 

 

 

 

 

 

 

MOVLW

 

0x5A

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x5A

 

 

 

 

 

 

 

 

MOVLW

k

 

 

MOVLW

 

REG

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

Переслать

 

 

Переслать константу k в регистр W

REG=0x37 (адрес регистра,

 

 

 

 

 

константу

 

 

а не его содержимое)

1

 

 

 

 

в W

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x37

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

MOVLW

CONST

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

“Прописка в шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST

EQU

0x37

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x37

 

 

 

 

 

 

 

 

 

 

 

 

 

ANDLW

0x5F 01011111

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0xA3 10100011

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x03 00000011

 

 

 

 

 

ANDLW

k

 

 

ANDLW

 

REG

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

Выполняется побитное Исодержимого

W=0xA3

 

 

 

 

 

 

 

 

Побитное “И”

 

 

регистра W и 8-разрядной константы k

REG=0x37 (адрес регистра,

1

 

Z

 

 

константы и W

 

 

Результат сохраняется в регистре W

а не его содержимое)

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x23

 

 

 

 

 

 

 

 

 

 

 

 

 

ANDLW

CONST

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

“Прописка в шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST

EQU

0x37

 

 

 

 

 

 

 

 

 

 

W=0xA3

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x23

 

 

 

 

 

 

 

 

 

 

 

 

 

IORLW

0x35 00110101

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x9A 10011010

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0xBF 10111111

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

IORLW

 

REG

 

 

 

 

 

IORLW

k

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0x9A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполняется побитное ИЛИ

REG=0x37 (адрес регистра,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Побитное

 

 

а не его содержимое)

 

 

 

 

 

 

 

содержимого регистра W и 8-разрядной

 

 

Z

 

 

 

 

После выполнения

1

 

 

 

“ИЛИ”

 

 

 

 

 

 

 

 

 

константы k

 

 

 

 

 

 

W=0xBF

 

 

 

 

 

 

 

 

константы и W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

Результат сохраняется в регистре W.

 

 

 

 

 

 

 

 

 

 

 

 

IORLW

CONST

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x9A

 

 

 

 

 

 

 

 

 

 

 

 

 

“Прописка в шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST

EQU

0x37

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x9F

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

IORLW

 

0x00

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

66

 

 

 

 

XORLW

0xAF 10101111

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0xB5 10110101

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0x1A 00011010

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

XORLW k

 

 

XORLW

REG

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

Выполняется побитное

W=0xAF

 

 

 

 

 

 

Побитное

 

Исключающее ИЛИсодержимого

REG=0x37 (адрес регистра,

 

Z

 

“Исключающее

 

регистра W и 8-разрядной константы k

а не его содержимое)

 

1

 

ИЛИ”

 

(проверка на “одинаковость”)

После выполнения

 

 

 

 

константы и W

 

 

W=0x98

 

 

 

 

 

 

 

 

Результат сохраняется в регистре W.

Z=0

 

 

 

 

 

 

 

 

 

XORLW

CONST

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0xAF

 

 

 

 

 

 

 

 

 

“Прописка в шапке”

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

CONST

EQU

0x37

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0x18

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды управления

 

 

CALL

 

 

 

Выполнить условный переход

HERE

CALL

ABC

 

 

 

 

 

 

 

 

Адрес следующей инструкции (PC+1)

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Условный

 

 

загружается в вершину стека.

PC=адрес HERE

 

2

 

 

 

переход

 

 

11 бит адреса загружаются, в счетчик команд,

После выполнения

 

 

 

 

 

(переход по

 

 

из кода команды.

PC=адрес ABC

 

 

 

 

 

 

стеку)

 

 

 

2 старших бита загружаются, в счетчик команд,

В вершине стека, адрес

 

 

 

 

 

 

 

 

из регистра PCLATH.

HERE+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GOTO

k

 

Выполнить безусловный переход

GOTO

ABC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11 бит адреса загружаются, в счетчик команд,

 

 

 

 

 

 

 

 

Безусловный

 

 

из кода команды.

После выполнения

 

2

 

 

 

переход

 

 

2 старших бита загружаются, в счетчик команд,

PC= адрес ABC

 

 

 

 

 

(стек не

 

 

 

из регистра PCLATH.

 

 

 

 

 

 

 

 

задействован)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RETURN

 

Возврат из подпрограммы

 

RETURN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

2

 

 

 

Возврат

 

 

 

Содержимое вершины стека "выгружается" в

PC= адресу, который

 

 

 

 

по стеку

 

 

выгружениз

 

 

 

 

 

 

 

счетчик команд PC.

 

 

 

 

 

 

 

 

 

вершины стека.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CALL

TABLE

 

 

 

 

 

 

 

 

 

 

.......

 

 

 

 

 

RETLW

k

 

 

 

.......

 

 

 

 

 

 

 

 

 

Возврат из подпрограммы с

TABLE

ADDWF

PCL,1

 

 

 

 

 

 

 

 

установленной константой

 

RETLW

k1

 

 

 

 

Возврат

 

 

 

 

 

RETLW

k2

2

 

 

 

по стеку

 

 

 

 

……

 

 

 

 

 

 

с загрузкой

 

 

В регистр W загружается 8-разрядная константа

 

……

 

 

 

 

 

 

константы

 

 

Содержимое вершины стека "выгружается" в

 

RETLW

kn

 

 

 

 

в W

 

 

 

счетчик команд PC.

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

PC= адресу, который

 

 

 

 

 

 

 

 

 

выгружениз

 

 

 

 

 

 

 

 

 

 

вершины стека.

 

 

 

 

 

 

 

 

 

 

W = k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

67

 

 

RETFIE

 

 

 

 

RETFIE

 

 

 

 

 

 

 

 

 

Возврат из подпрограммы обработки

 

 

 

 

 

 

 

 

 

 

прерываний

 

 

 

 

 

 

 

 

 

Возврат по

 

 

 

 

После выполнения

2

 

 

 

 

 

стеку из ПП

 

 

Содержимое вершины стека "выгружается" в

 

PC= адресу, который

 

 

 

 

 

 

обработки

 

 

счетчик команд PC.

 

выгружениз

 

 

 

 

 

 

прерываний

 

 

Осуществляется глобальное разрешение

 

вершины стека.

 

 

 

 

 

 

 

 

 

прерываний (бит GIE устанавливается в 1).

 

GIE=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CLRWDT

 

 

 

 

CLRWDT

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

Сброс WDT и предделителя

 

WDT и предделитель не

 

 

 

 

 

 

 

 

 

 

сброшены

 

 

 

-TO

 

 

Сброс WDT

 

 

(если он подключен к WDT).

 

После выполнения

1

 

 

 

 

(сторожевого

 

 

Биты -TO и -PD устанавливаются в 1.

 

WDT и предделитель

 

 

 

-PD

 

 

таймера)

 

 

 

сброшены

 

 

 

 

 

 

 

 

 

 

 

-TO=1

 

 

 

 

 

 

 

 

 

 

 

-PD=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SLEEP

 

 

Переход в режим пониженного

 

 

 

 

 

 

 

 

 

 

 

 

энергопотребления (в спящий режим”)

 

 

 

 

 

 

 

 

 

Переход

 

 

Сброс флага включения питания (-PD) в 0.

 

SLEEP

1

 

 

-TO

 

 

в режим

 

 

Установка флага переполнения WDT (-TO) в 1.

 

 

 

 

 

 

-PD

 

 

SLEEP

 

 

Сброс WDT и предделителя.

 

 

 

 

 

 

 

 

 

 

 

 

Выключение тактового генератора и перевод

 

 

 

 

 

 

 

 

 

 

 

 

м/контроллера в режим SLEEP.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переслать содержимое регистра W

 

 

 

 

 

 

 

 

 

 

 

 

в регистр OPTION.

 

 

 

 

 

 

 

 

 

 

 

 

Инструкция поддерживается для совместимости

 

 

 

 

 

 

 

 

 

OPTION

 

 

программы с семейством PIC16C5x.

 

OPTION

 

 

 

 

 

 

 

 

 

Запись-чтение регистра OPTION можно

 

 

 

 

 

 

 

 

 

 

 

выполнить прямой или косвенной адресацией.

 

 

 

 

 

 

 

 

 

 

 

 

Не рекомендуется использовать при работе с

 

 

 

 

 

 

 

 

 

 

 

 

другими (отличными от PIC16C5x) типами

 

 

 

 

 

 

 

 

 

 

 

 

ПИКов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переслать содержимое регистра W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TRIS

 

 

в регистр TRIS.

 

TRIS

 

 

 

 

 

 

 

 

 

Не рекомендуется использовать при работе с

 

 

 

 

 

 

 

 

 

 

 

другими (отличными от PIC16C5x) типами

 

 

 

 

 

 

 

 

 

 

 

 

ПИКов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"Самоучитель по программированию PIC контроллеров для начинающих" http://ikarab.narod.ru E-mail: karabea@lipetsk.ru

68

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