реклама на сайте
подробности

 
 
> Простейший вопрос по портам мк
ps1x
сообщение Mar 15 2006, 22:44
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



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

Прошу прощения и извиняюсь, тему закрыть и удалить. blush.gif
Просто надо почитать исходники и подсмотреть.
Итак правильный ответ:
PORTB.0=1;
т.е. на выходе 0 порта B будет лог 1
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
beer_warrior
сообщение Mar 15 2006, 23:14
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Стандартный способ:
PORTn |= (1<<PBx) - для 1
PORTn &= ~(1<<PBx) - для 0
PBx - (возможны варианты написания) номер бита в порту.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Эрик
сообщение Mar 16 2006, 05:58
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 15-12-05
Из: Санкт-Петербург
Пользователь №: 12 239



В 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)) //инверсия бита


--------------------
Uz
Go to the top of the page
 
+Quote Post
vet
сообщение Mar 16 2006, 06:21
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Конкретно в CV можно использовать конструкцию вида PORTx.n:

PORTC.4 = 0;
if (DDRB.5) {
...
}
UCR.RXCIE = 1;
...


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
alekseykoj
сообщение Mar 17 2006, 14:27
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 8-11-05
Пользователь №: 10 602



Используй
PORTA |= (1<<PB0)
PORTA &= ~(1<<PB0)
Go to the top of the page
 
+Quote Post
Laptop
сообщение Mar 19 2006, 16:45
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103



#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, инвертировать.
Само собой все имена битов и адреса подключаются из файла определений к контроллеру и могут быть переопределены с новыми функциональными именами позднее.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01676 секунд с 7
ELECTRONIX ©2004-2016