Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
эиуа экз теория.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
797.57 Кб
Скачать

37. Среда программирования mplab. Команды вычитания sublw, subwf. Описание команд, используемые параметры, размещение результата. Примеры использования.

SUBLW - вычитание W из константы. Синтаксис: SUBLW k. Операнд: 0 < k < 255. Операция: (k) -(W) --> (W). Биты состояния: C, DC, Z. Описание: Содержимое регистра W вычитается из 8-битовой константы k. Результат помещается в регистр W. Биты С и DC устанавливаются в 1 в случае отсутствия заема из старшего разряда.

Пример: SUBLW 0 x 02 Перед выполнением команды: W = 2. После выполнения команды: W = 0 C = 1 ; результат ноль

SUBWF Вычитание W из f. Синтаксис:[label] SUBWF f,d. Операнды:0 <= f <= 127 d Е [0,1] . Операция: (f) - (W) -> dest. Изменяет флаги: C, DC, Z, OV, Описание: Содержимое регистра W вычитается из регистра f. Если d=0, результат сохраняется в регистре W , если d=1, тогда результат сохраняется в регистре f (по умолчанию). Пример : SUBWF REG. Перед выполнением: REG = 3 W = 2 C = ?. После выполнения: REG = 1 W = 2 C = 1 ; результат положительный Z = 0 N = 0

38.Программа сложения и вычитания 3 и более операндов

ADDLW - Сложить константу с W Синтаксис: [label] ADDLW k

Операция: (W) + k  (W) Измененные флаги: С, DC, Z

ADDWF - Сложение W и f Синтаксис: [label] ADDWF f,d

Операция: (W) + (f) -»(dest) Измененные флаги: C, DC, Z

ANDLW - Побитное 'И' константы и W Синтаксис: [labef] ANDLW k

Операция: (W) .AND. k  (W) Измененные флаги: Z

ANDWF - Побитное 'И’ W и f Синтаксис: [label] ANDWF f,d

Операция: (W) .AND. (f)  (dest) Измененные, флаги: Z

SUBLW - Вычесть W из константы Синтаксис: [label] SUBLW k

Операция: k - (W)  (W) Измен, флаги: C, DC, Z

SUBWF - Вычесть W из f Синтаксис; label] SUBWF f,d

Операция: (f) –(W)  (dest) Измен, флаги: C, DC, Z

include <p16F877.inc>

R1 EQU h’20’ ; R1 – символьное имя со значением 20h (адрес регистра).

R2 EQU h’24’ ; R2 – символьное имя со значением 24h (адрес регистра).

org 0x000

nop nop nop

org 05h

START ; Начало исполняемой части программы.

CLRF STATUS ; Очистка регистра, выбор банка 0.

BSF STATUS, RP0 ; Выбор банка 1.

CLRF TRISC ; Конфигурировать все биты порта C как выход.

CLRF STATUS ; Выбор банк 0.

CLRF PORTC ; Записать в порт С нули (потушить световоды).

; Ввод данных R2>R1.MOVLW 0FAh ; Запись константы FAh в W.

MOVWF R2 ; Запись константы FAh в регистр R2.

MOVLW 02h ; Запись константы 02h в W.

MOVWF R1 ; Запись константы 02h в регистр R1.

SUBWF R2,0 ; Вычитание R2 - R1(W). Результат пересылаем в W.

MOVWF PORTC ; Загрузить содержимое W в регистр PORTС.

MOVF R2,0 ; Запись константы FAh в регистр W.

ADDWF R1,0 ; Сложение R1+R2(W). Результат записывается в W.

MOVWF PORTC ; Загрузить содержимое W в регистр PORTС

MOVF R2,0 ; Запись константы FAh в регистр W.

ANDWF R1,0 ; Логическое умножение R1 AND R2, результат в W.

MOVWF PORTC ; Загрузить содержимое W в регистр PORTС

COTO $ ; Зацикливание программы на этой строке.

END

39. Среда программирования mplab. Программа сравнения двух чисел.

Для сравнения двух чисел используются следующие программы:

BTFSC - Проверить бит b в регистре f, пропустить, если 0

Синтаксис: [label] BTFSC f,b Операция: пропустить, если (f<b>) = 0

Описание: Если бит b в регистре f равен '1' , то исполняется следующая инструкция.

Если бит b в регистре f равен 0 , то следующая инструкция не выполняется.

BTFSS - Проверить бит b в регистре f, пропустить если (f<b>) = 1

Синтаксис: [labef] BTFSS f,b Операция: Если бит b в регистре f равен ‘0’,

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

Алгоритм и программа поиска наибольшего числа.

MOVLW B’Число 1’ ; Число 1  W

MOVWF R1 ; W  R1

MOVWF UMENSH ; W UMENSH

MOVLW B’Число 2’ ; Число 2 W

MOVWF R2 ; W  R2

SUBWF UMENSH,1 ; UMENSH= UMENSH – W=

= R1 – R2

BTFSS STATUS,C ; C = 1?

MOVF R1,0 ; R1  W

MOVWF PORTC ; W  PORTC