- •Глава 1. Теория, понятия, определения
- •Глава 2. Команды ассемблера
- •Глава 3. Составление текста программы на ассемблере в mplab
- •Глава 4. Макетная плата. Программатор
- •Глава 5. Элементарные базовые проекты
- •Глава 6. Инструменты mplab
- •Глава 7. Сопряжение микроконтроллера с внешними устройствами
- •Глава 1. Теория, понятия, определения
- •Регистры специального назначения
- •Регистры общего назначения
- •Как работает микроконтроллер?
- •Банки памяти
- •Глава 2. Команды ассемблера
- •Вычисляемый переход
- •Проверить бит на равенство нулю btfsc f,b
- •Проверить бит на равенство единице btfss f,b
- •; Проверка на факт переноса
- •; Проверка на факт займа
- •; Проверка на равенство нулю
- •; Проверка на равенство одного регистра другому регистру
- •; Проверка на равенство константы какому-либо регистру
- •Сдвиг вправо битов в регистре rrf f, d сдвиг влево битов в регистре rlf f, d
- •Глава 3. Составление текста программы на ассемблере в mplab
- •Структура программы
- •Описание конфигурационных битов.
- •Описание комбинаций битов выбора генератора.
- •Направления работы ножек мк и выполняемые функции задаются в регистрах специального назначения.
- •Глава 5. Элементарные базовые проекты
- •1 (Input) – работа на вход
- •0 (Output) – работа на выход
- •Глава 6. Инструменты mplab
- •Глава 7. Сопряжение микроконтроллера с внешними устройствами
- •Передача данных в сторону компьютера
- •Приём данных от пк на стороне мк
- •Это не конец
Проверить бит на равенство нулю btfsc f,b
если бит B=1, то выполняется следующая инструкция
если бит B=0, то следующая инструкция пропускается
Проверить бит на равенство единице btfss f,b
если бит B=0, то выполняется следующая инструкция
если бит B=1, то следующая инструкция пропускается
Разберем
фрагмент этого кода. По́мните, биты в
регистре нумеруются справа налево и
от нуля до семи, следовательно, первый
бит в примере у нас равен нулю. Сделав
первую проверку по команде BTFSC PORTB,1
обнаруживается совпадение и пропускается
следующая команда – GOTO Metka1.
Во второй проверке по команде
BTFSS PORTB,1 обнаруживается
несовпадение и выполняется следующая
команда – GOTO Metka2.
Важный вывод. Комбинация команд "переходов по результатам проверки" и команд простых переходов позволяют разветвлять ход программы по нескольким сценариям, тем сам выполнять те или иные задачи.
Флаги как индикаторы событий
Под флагами понимаются значения некоторых битов в регистрах специального назначения. Такие биты в регистрах специального назначения после выполнения определенных команд могут устанавливаться в единицу (иначе говорят – флаг установлен или поднят), а могут опускаться в ноль (иначе – флаг опущен или сброшен).
В регистре STATUS с адресом H03 мы рассмотрим два флага:
– флаг Z (второй бит) – флаг нулевого результата
если Z=1, то был нулевой результат выполнения команды
если Z=0, то ненулевой результат выполнения команды
– флаг C (нулевой бит) – флаг переноса-займа
если C=1, то было переполнение регистра (происходил перенос)
если C=0, то не было переполнения регистра (либо был заём)
Как работать с флагами?
Если в ходе программы предполагается переполнение регистра (или ожидается заём) и нам необходимо отслеживать эти события, то выполняем следующую последовательность:
STATUS EQU H0003 ; определяем регистр
C EQU H0000 ; определяем номер бита для флага C
Z EQU H0002 ; определяем номер бита для флага Z
; ============================================================
; Проверка на факт переноса
...
BCF STATUS,C ; опускаем флаг C в ноль
;... операции увеличения каких либо регистров
BTFSS STATUS,C ; делаем бит-проверку C-флага
; если бит C=0, то выполняется следующая инструкция
; если бит C=1, то следующая инструкция пропускается
; ============================================================
Установка флага из нуля в единицу подтверждает факт переноса.
; Проверка на факт займа
...
BSF STATUS,C ; поднимаем флаг C в единицу
;... операции уменьшения каких либо регистров
BTFSC STATUS,C ; делаем бит-проверку C-флага
; если бит C=1, то выполняется следующая инструкция
; если бит C=0, то следующая инструкция пропускается
; ============================================================
Установка флага из единицы в ноль подтверждает факт займа.
Ранее было обещано рассмотрение команды "MOVF KLOP,F" , в которой результат копирования помещается назад в регистр KLOP. Если регистр KLOP равен нулю, то после команды "MOVF KLOP,F" флаг Z из нуля поднимется в единицу; иначе из единицы опустится в ноль.
; ============================================================
