Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

 Страницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


                                                                                                              Варианты работы с портами

   УСТАНОВКА БИТА

PORTX = PORTX | 0b00000001;

 

   СБРОС БИТА

PORTX = PINX & 0b11111110;

               

   ПРОВЕРКА БИТА     

if ((PINX & 0b00000001) == 0);                                        // Истина при 0bxxxxxxx0

if ((PINX & 0b00000001) != 1);                                         // Истина при 0bxxxxxxx0.

if ((PINX | 0b11111110) != 0xFF);                                     // Истина при 0bxxxxxxx0

if ((PINX | 0b11111110) == 0b11111110);                        // Истина при 0bxxxxxxx0

 

if ((PINX & 0b00000001) == 1);                                        // Истина при 0bxxxxxxx1

if ((PINX & 0b00000001) != 0);                                         // Истина при 0bxxxxxxx1                                 

if ((PINX | 0b11111110) == 0xFF);                                    // Истина при 0bxxxxxxx1

if ((PINX | 0b11111110) != 0b11111110);                         // Истина при 0bxxxxxxx1

 

   ПРОВЕРКА ДВУХ БИТ

if ((PINX & 0b00000011) == 0);                                        // Истина при 0bxxxxxx00 (оба нули).

if ((PINX | 0b11111100) == 0b11111100);                        // Истина при 0bxxxxxx00 (оба нули).

if ((PINX & 0b00000011) != 0b11);                                   // Истина при 0bxxxxxx00, 0b00000010, 0bxxxxxx01.(хотя бы один ноль).

if ((PINX | 0b11111100) != 0xFF);                                     // Истина при 0bxxxxxx00, 0bxxxxxx10, 0bxxxxxx01 (хотя бы один ноль).

 

if ((PINX & 0b00000011) == 0b11);                                  // Истина при 0bxxxxxx11 (обе единицы).

if ((PINX | 0b11111100) == 0xFF);                                    // Истина при 0bxxxxxx11 (обе единицы).

if ((PINX & 0b00000011) != 0);                                         // Истина при 0bxxxxxx11, 0bxxxxxx10, 0bxxxxxx01 (хотябы одна единица).

if ((PINX | 0b11111100) != 0b11111100);                         // Истина при 0bxxxxxx11, 0bxxxxxx10, 0bxxxxxx01 (хотябы одна единица).

 

Другим вариантом работы с портами является конвертирование номера разряда в байтовое число, содержащее 1 в том разряде, который нужно установить или сбросить.

  

УСТАНОВКА БИТА

// Устанавливаем в 1 разряд 2 порта B (накладывается маска 0b00000100)

PORTB |=  (1 << 2);

PORTB |= (1 << (PB2));      // PB2 дефайнится, как число 2. Подк. #include <avr/io.h>

PORTB |= _BV(PB2);          // _BV()  дефайнится  как 1 << 2

// Устанавливаем флаг разрешения прерываний от Т/С1 (накладывается маска 0b00000100)

TIMSK |= _BV(TOIE1);                                    

PORTB = PORTB | (1 << (TOIE1));

 

СБРОС БИТА

PORTB  &= ~(_BV(PB7));                 // Сбрасываем в «0» разряд 7 порта B (накладывается маска 0b01111111)

 

   ПРОВЕРКА БИТА     

if ((PINX & _BV(PX0)) == 0);                                           // Истина при 0bxxxxxxx0

if ((PINX & _BV(PX0)) != 1);                                            // Истина при 0bxxxxxxx0.

if ((PINX | _BV(PX0)) != 0xFF);                                        // Истина при 0bxxxxxxx0

if ((PINX | _BV(PX0)) == 0b11111110);                           // Истина при 0bxxxxxxx0

 

if ((PINX & _BV(PX0)) == 1);                                           // Истина при 0bxxxxxxx1

if ((PINX & _BV(PX0)) != 0);                                            // Истина при 0bxxxxxxx1                                 

if ((PINX | _BV(PX0)) == 0xFF);                                       // Истина при 0bxxxxxxx1

if ((PINX | _BV(PX0)) != 0b11111110);                            // Истина при 0bxxxxxxx1

 

 

 

Hosted by uCoz