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

398 Микроконтроллеры AVR от азов программирования... Тактовый сигнал | | не : OxFF • Команды outPORTx,r16 г no ₽ J in r17, PINx Триггер Һ синхронизации | PINxn : ................... ............ j r17 I oxoo : X OxFF Рис. 6.21. Синхронизация при чтении программно записанного значения разряда порта В следующем примере (см. листинги 6.3 и 6.4) показано, как устано ­ вить в разрядах 0 и 1 порта В высокий логический уровень, а в разрядах 2 и 3 — низкий, настроить разряды с 4 по 7 на ввод информации, а для входов 6 и 7 включить внутреннее сопротивление нагрузки. Установленные значения сразу же читаются программой, но перед операцией чтения включена команда пор для того, чтобы правильно про ­ читать только что записанное значение некоторых разрядов. Листинг 63. Пример на языке Ассемблер ; Включение нагр резисторов и установка выходных уровней , Определение направления передачи сигналов для разрядов ldi г16, (1«РВ7) | (1«РВ6) | (1«РВ1) | (1«РВО) ldi г17, (1 «DDB3 ) | (1 «DDB2 ) | (1 «DDB1 ) | (1 «DDBO ) out PORTB , г16 out DDRB, г17 ; Добавлен пор для синхронизации пор , Чтение разрядов порта in r16,PINB Листинг 6.4. Пример на языке СИ (Code Vision) /* Включение нагр. резисторов и установка выходных уровней */ /* Определение направления передачи сигналов для разрядов */ PORTB = (1«7) | (1«6) | (1«1) | (1«0), DDRB = (1«3) | ( 1«2) | ( 1«1 ) | ( 1«0) ; /* Добавлен пор для синхронизации */ #asm("nop"); /* Чтение разрядов порта */ 1 = PINB;

RkJQdWJsaXNoZXIy MTExODQxMg==