Команда выполняет циклический сдвиг влево с переносом
Рис.7.4. Циклический сдвиг содержимого регистра данных влево
В качестве примера использования команды вспомним. Что сдвиг влево можно использовать для умножения числа на степень два.
Пример 4:
Пример 5:изменения строчных букв на ПРОПИСНЫЕ
Существуют различные причины для преобразований между строчными и ПРОПИСНЫМИ буквами. ПРОПИСНЫЕ буквы от A до Z имеют коды от 41Н до 5AН, а строчные буквы от a до z имеют коды от 61Н до 7AН.
Единственная разница в том, что пятый бит равен 0 для ПРОПИСНЫХ букв и 1 для строчных:
Биты: 76543210 Биты: 76543210
Буква A: 01000001 Буква a: 01100001
Буква Z: 01011010 Буква z: 01111010
ПрограммаCASE преобразует находящийся в ОЗУ массив ASCII кодов строчных букв в ПРОПИСНЫЕ.
В первой части программы в память данных заносятся ASCII коды сообщения ‘Hello, friends!’. ASCII коды букв начинаются с адреса 10Н.
Вторая часть устанавливает параметры массива – его начальный адрес и кол-во элементов. Размер массива устанавливается в регистре COUNT, начальный адрес - в индексном регистре SFR.
Третья часть, помеченная меткой START, проверяет код символа на предмет попадания в диапазон строчных букв. Этот выполняется командами сравнения SUB и условного перехода BTFSS.
Четвертая часть: перекодировка. Её выполняет команда AND сбрасывая 5й бит, превращая буквы из строчных в ПРОПИСНЫЕ:
ANDLW b’11011111’. Преобразованные символы копируются обратно в ОЗУ.
Пятая часть оставляет без изменения остаются символы, ASCII коды которых не попали в диапазон строчных букв.
Адрес в регистре SFR увеличивается для обработки очередного символа и затем осуществляется переход на следующий цикл.
;проверка на попадание в диапазон 61Н - 7АН------------
MOVFW INDF ; код символа в W
SUBLW 61H ; 61H - W
BTFSC STATUS,C ; ЕСЛИ код меньше нижней границы
GOTO B20 ; ТО к B20
MOVFW INDF ; ИНАЧЕ код символа в W
SUBLW 7AH ; 7AH - W
BTFSS STATUS,C ;ЕСЛИ код больше верхней границы
GOTO B20 ; ТО к B20
; Перекодировка - код символа в диапазоне 61Н - 7АН----
MOVFW INDF ; код символа в W
ANDLW B'11011111' ; сбросить 5-й бит
MOVWF INDF ; вернуть назад
;оставить без изменения-----------------------------------
B20
INCF FSR,f ; Следующий адрес
DECF COUNT,f ; декремент счетчика
BTFSS STATUS,Z ; ЕСЛИ содержимое счетчика не=0 (Z=0)
GOTO START ; ТО продолжить
END ; ИНАЧЕ завершить
ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ
· В командах PIC микроконтроллера в качестве одного их операндов всегдаиспользуется рабочий регистр W.
· Символ d после запятой в команде означает адрес, куда будет помещен результат выполнения команды. Если d=w, то результат помещается в рабочий регистр W, а если d=f, то результат записывается в используемый в команде регистр f.
· Команды BCF F,b и BSF F,b используются для установки и сброса бита b в регистре F. Вторая буква в этих командах указывает на вид операции с битом:
C (CLEAR) – сбросить бит;
S (SET)- установить бит;
b (BIT) – номер/имя бита.
· Команда AND используется для сброса любого бита, а IOR для его установки
· С помощью команды XOR можно инвертировать значение любого бита
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1. PегистрW содержит 11100011 и регистр BOONO содержит маску 01111001. Определите: