Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 5. Переходим непосредственно к разработке устройств и программ 301 sbic _________________________________________________________ Оператор типа «проверить — пропустить». Общая форма записи команды: sbic А,п, где А — номер регистра ввода-вывода; п — номер разряда. Вместо номера регистра и номера разряда может использоваться имя регистра и имя разряда. Обычно используются стандартные имена от фирмы Atmel. Команда проверяет содержимое разряда номер п регистра А. Если разряд сброшен, то очередная команда программы не выполняется. Пример использования данной команды — строка 159 нашей программы (см. листинг 5.19). В этой строке команда sbic проверяет бит eewe регистра EECR. Если этот бит сброшен, то команда в строке 160 не выполняется, а управление передается к строке 161. Если бит установлен, то выполняется команда в строке 160. Команда sbic имеет одно ограничение. Она рабо ­ тает с регистрами ввода-вывода с адресами в диапазоне от 0 до 31. cbr _________________________________________________________ Сброс разрядов РОН. Данный оператор предназначен для одновре ­ менного сброса нескольких разрядов. Оператор имеет два параметра. Первый параметр — это имя регистра общего назначения, разряды которого должны быть сброшены. Второй параметр — это маска сброса разрядов. В данном случае маска — это двоичное число, у которого в единицу установлены те разряды, которые должны быть сброшены. Например, в строке 129 программы (листинг 5.19) сбрасываются раз ­ ряды регистра ХН. Значение маски равно 0xF8. В двоичном виде число 0хҒ8 выглядит так: Obi 1111000. Поэтому в результате действия команды cbr в строке 129 пять старших разрядов числа, находящегося в регистре ХН, будут сброшены в ноль, а три младшие останутся без изменений. Это альтернативный способ наложения маски. Описание программы (листинг 5.19) Строки 1, 2 программы, я думаю, вопросов не вызывают. В строках 3 — 11 происходит описание всех используемых в программе переменных. Назначение каждой из этих переменных мы рассмотрим в ходе описания принципов работы программы. Далее, в строках 12 — 14 происходит опи ­ сание констант. Каждая из трех констант определяет один из параметров нашего устройства. Остановимся на этом подробнее. Константа bsize (строка 12) определяет размер буфера для хра ­ нения кодовой комбинации. Этот размер выбран равным 60 ячейкам. Учитывая, что в буфер будут записываться коды состояния клавиатуры,

RkJQdWJsaXNoZXIy MTExODQxMg==