Битовые операции в MCS -51
Пример 31. Операция Исключающее ИЛИ используется очень часто для сравнения бит, или их сброса. В кодах битового процессора такой операции нет, но легко осуществляется наложение логической операции Исключающее ИЛИ на флажок переноса: JNB bit, LZ ; исключительное ИЛИ для флажка переноса CPL С ; инверсия флажка LZ: ; продолжение программы Пример 32. Преобразовать байт в последовательный код и передать его через Р1.0, не воздействуя при этом на остальные разряды порта. Передачу вести, начиная с младшего бита: MOV R7,#8D ; инициализация счетчика циклов LOOP: RRC А ; присвоение переноса значение бита А.0 MOV Р1.0, С ; передача бита DJNZ R7, LOOP ; цикл, если не все биты переданы Время выполнения программы 41 мкс, время передачи – 5 мкс (скорость передачи – 200 кбит/с). Пример 33. Вычислить булеву функцию 3-х переменных Y=(X× )+W (X+V). Переменные X, V, W поступают на линии 2, 1, 0 порта 1; результат Y необходимо вывести на линию 3 порта 1. Для сохранения промежуточных значений использовать бит F0H. Y BIT P1.3 ; спецификация бит порта 1 Х BIT P1.2 V BIT Р1.1 W BIT Р1.0 MOV С, X ; ввод Х ANL С,/V ; X× MOV F0, С ; запоминание результата в F0 MOV С, Х ; ввод Х ORL С, V ; X+V ANL С, W ; W (X+V) ORL С, F0 ; (W (X+V))+(X× ) MOV Y, С ; вывод результата Время выполнения программы 14 мкс. Пример 34. Организовать последовательную передачу данных из аккумулятора на 0 вывод порта 2. Пересылку вести манчестерским кодом (каждый бит кодируется двумя интервалами: первый интервал имеет инверсию бита, второй – его прямое значение): MOV R0,#8D ; инициализация счетчика бит LOOP: RRC А ; (С)(сдвиг мл. бита из акк-ра в перенос) CPL С ; инверсия бита MOV Р2.0, С ; передача инверсии бита CPL С ; восстановление бита NOP; NOP ; выравнивание длины интервалов NOP; MOV P2.0, С ; передача прямого значения бита DJNZ R0, LOOP ; цикл, если счетчик не нулевой Передача начинается с младших битов. Продолжительность одного интервала 6 машинных циклов (6 мкс), время передачи одного бита – 12 мкс, время передачи байта – 96 мкс (скорость передачи 83 кбит/с, или 10,4 кбайт/с). Пример 35. Пошаговый режим работы. Для его реализации необходимо: - запрограммировать одно из внешних прерываний (к примеру INT0) на активизацию по уровню; - в подпрограмме обработки прерывания ожидать последовательность «1» – «0» на входе INT0 (вывод P3.2), задаваемую, например, с помощью кнопки. В основной программе необходимо дописать следующее: SETB ІЕ.0 ; разрешение прерывания уровня 0 CLR TCON.0 ; прерывания разрешены по нулевому уровню …; продолжение основной программы Подпрограмма обработки прерывания должна закончиться следующими командами: …; подпрограмма обработки L1: JNB P3.2, L1 ; ожидание уровня 1 L2: JB P3.2, L2 ; ожидание уровня 0 RETI ; возвращение и выполнение одной; команды основной программы; после чего снова происходит ; возвращение в подпрограмму. Пример 36. Обращение к медленным микросхемам внешней памяти. Программным путем можно задать необходимую длительность импульсов WR и RD. Например, если сигнал должен длиться 50 мкс, то это осуществляется так: CLR P3.7 ; =0 MOV R3,#24D ; инициализация счетчика (2 мкс) L0: DJNZ R3, L0 ; цикл (24*2 мкс) SETB P3.7 ; =1
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (174)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |