Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Простейший вопрос по портам мк
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ps1x
Недавно начал изучение МК АВР и неожидано возник (я думаю простейший) вопрос: как в cvAVR обращаться не к целому порту, а к какой нибудт определенной ножке, например:
не
PORTB=0x7F;
а чтонибудь вроде:
PORTB.PIN0=0 или 1
это возможно?
заранее спасибо.

Прошу прощения и извиняюсь, тему закрыть и удалить. blush.gif
Просто надо почитать исходники и подсмотреть.
Итак правильный ответ:
PORTB.0=1;
т.е. на выходе 0 порта B будет лог 1
beer_warrior
Стандартный способ:
PORTn |= (1<<PBx) - для 1
PORTn &= ~(1<<PBx) - для 0
PBx - (возможны варианты написания) номер бита в порту.
Эрик
В IAR AVR можно использовать

// Управление битами любых регистров
#define SBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT)) //устан. в 1
#define CBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT)) //сброс в 0
#define CHBIT(ADDRESS,BIT) (ADDRESS ^=(1<<BIT)) //инверсия бита
vet
Конкретно в CV можно использовать конструкцию вида PORTx.n:

PORTC.4 = 0;
if (DDRB.5) {
...
}
UCR.RXCIE = 1;
...
alekseykoj
Используй
PORTA |= (1<<PB0)
PORTA &= ~(1<<PB0)
Laptop
#define SETB(port,bit) port|=(1<<(bit))
#define CLRB(port,bit) port&=~(1<<(bit))
#define BIT(addr,bit) (addr & (1<<(bit)))
#define CPLB(addr,bit) (addr=addr^(1<<(bit)))

Соответственно установить, очистить, проверить в if, инвертировать.
Само собой все имена битов и адреса подключаются из файла определений к контроллеру и могут быть переопределены с новыми функциональными именами позднее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.