Белов, А.В. Микроконтроллеры 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;
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==