русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

BTFSS f,b


Дата добавления: 2015-08-31; просмотров: 1440; Нарушение авторских прав


Все, что сказано выше, относится и к команде BTFSS. Единственное различие в том, что следующая за ней команда пропускается, если указанный бит установлен.

Ниже приведено несколько примеров работы:

Пример 1. Управление режимом работы светодиода, подключенного к PORTB<4>. Если светодиод погашен, то он зажигается, а если горит, то гаснет:

START

BTFSS PORTB,4 ; ЕСЛИ светодиод погашен

GOTO ON ; ТО перейти к ON

GOTO OFF ; ИНАЧЕ к метке OFF

ON

BSF PORTB,4 ; включить

GOTO START ;

OFF

BCF PORT,4 ; выключить

GOTO START ; к началу

Пример 2. Преобразование двоичного числа в BCD формат. Микроконтроллеры PIС среднего уровня не имеют команд умножения и деления. Для реализации этих задач можно использовать сложение и вычитание.

При делении числа на 10 формируется частное от 0 до 9 и остаток. Частное представляет собой число десятков, а остаток – число единиц.

В регистре будет подсчитываться количество операций вычитания, выполненных до генерации заёма, -исходное число десятков на единицу меньше подсчитанного значения. Прибавив к оставшемуся значению число 10, получим остаток от деления, т.е. число единиц.

Рис. 8.5. Преобразование десятичного числа (0…99) в BCD число

;******************************************************

;BIN_BCD - Преобразование двоичного числа в BCD формат

;******************************************************

BINARY EQU H'10' ;исходное числа

TENS EQU H'20' ;частное (десятки)

UNITS EQU H'21' ;остаток (единицы)

;сначала делим на 10--------------------------------

CLRF TENS ;обнуляем счетчик десятков

MOVLW D'10' ;

;вычитаем 10 и считаем кол-во вычитаний до займа

LOOP

INCF TENS,f ;запомнили очередную операцию

SUBWF BINARY,f ;вычли 10

BTFSC STATUS,C ;ЕСЛИ займа нет (С=1)

GOTO LOOP ;ТО вычитаем еще раз



;корректируем лишнее вычитание и определяем число единиц

DECF TENS,f ;последняя операция вычитания - лишняя

MOVLW D'10' ;прибавляем 10

ADDWF BINARY,w ;к оставшемуся значению

MOVWF UNITS ;остаток от деления (число единиц)

;-------------------------------------------------------------

END

Пример 3.Формирование световых эффектов

Для реализации задачи используются команды циклического сдвига RLF и условного перехода BTFSS. Алгоритм программы «Бегущий огонь» представлен на Рис. 7.11.

Инициализация порта В выполняется командой сброса CLRF TRISB. Далее происходит установка флага C (BSF STATUS,С). Командой циклического сдвига влево (RLF) он вдвигается в 0-й бит регистра PORTB, а 7-й бит помещается на место флага С.

Команда BTFSS PORTB,7 проверяет наличие единицы на выходе RB7 (горит ли крайний левый светодиод) и если она отсутствует (светодиод не горит), то исполнение программы переходит на команду с меткой AGAIN и сдвиги продолжаются до тех пор, пока высокий уровень не появится выходе RB7 (загорелся крайний левый светодиод).

В этом случае при выполнении команды BTFSS PORTB,7 следующая за ней команда GOTO LOOP пропускается, светодиод гаснет BCF PORTB,7 и управление передается команде, помеченной меткой START.

 

Шапка программы


Start

Настройка порта В на вывод
Установка флага C

 


Again

Погасить светодиод
Циклический сдвиг влево

 

 


Rb7=1?
нет

 


да

 

Рис. 8.6. Алгоритм программы «Бегущий огонь»

;*********************************************

; AVTOMAT - Программа автомат Бегущий огонь

;*********************************************

; PORTB - подключение светодиодов

; Определение рабочих регистров ------------

COUNT EQU 10H ; Счетчик времени

; Установка направления работы порта В - на выход.

START

BSF STATUS,RP0 ; Перейти в 1-й банк

CLRF TRISB ; настроить порт В на выход .

BSF STATUS,RP0.. ; Перейти в 0-й банк

; Формирование бегущ

RLF PORTB,f ; зажечь следующий светодиод

CALL DELAY ; задержка

BTFSS PORTB,7 ; ЕСЛИ крайний левый погашен

GOTO LOOP ; ТО продолжить сдвиг

BCF PORTB,7 ; ИНАЧЕ погасить

GOTO START ; переход на новый полный цикл программы

; Директива конца программы ---------------

END

его огня----------------

BSF STATUS,C ; Установить флаг С

LOOP



<== предыдущая лекция | следующая лекция ==>
Команды условного перехода | Конструкция цикл


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.304 сек.