roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 09:42

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: записать бит номер 3 переменной X в бит номер 4 порта D
СообщениеДобавлено: 04 мар 2008, 11:35 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
К примеру, есть у меня переменная X=0b00010011, мне надо записать бит номер 3 переменной X в бит номер 4 порта D.
Как это сделать в WinAVR?

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: записать бит номер 3 переменной X в бит номер 4 порта D
СообщениеДобавлено: 04 мар 2008, 11:58 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
поразному

можно например сложить с маской чтобы обнулить лишние биты
и используя сдвиг на 3 позиции оставить от переменной тока 1 бит
который и записать в PD.4

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: записать бит номер 3 переменной X в бит номер 4 порта D
СообщениеДобавлено: 04 мар 2008, 12:02 
А как же приёмник? =)
if ((x & 0x04) == 0x04) {PORTD |= (1<<4);} else {PORTВ &= ~(1<<4);}


Вернуться к началу
  
 
 Заголовок сообщения: Re: записать бит номер 3 переменной X в бит номер 4 порта D
СообщениеДобавлено: 04 мар 2008, 12:08 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
$ilent писал(а):
А как же приёмник? =)
if ((x & 0x04) == 0x04) {PORTD |= (1<<4);} else {PORTВ &= ~(1<<4);}


Я так и сделал, просто надеялся, что есть вариант проще.

Добавлено спустя 1 минуту 50 секунд:
А как это будет на ассемблере?
если проще, то можно вставить в код на С кусок кода на ассемблере.

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: записать бит номер 3 переменной X в бит номер 4 порта D
СообщениеДобавлено: 04 мар 2008, 13:17 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Grover писал(а):
К примеру, есть у меня переменная X=0b00010011, мне надо записать бит номер 3 переменной X в бит номер 4 порта D.


Надеюсь пригодится:

Битовые операции - Манипуляции отдельными битами
регистров и переменных.
http://avr123.nm.ru/z1.htm

и "Еще щепотка Си" - проверка битов в регистрах и переменных.
http://avr123.nm.ru/05a.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: записать бит номер 3 переменной X в бит номер 4 порта D
СообщениеДобавлено: 04 мар 2008, 14:21 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
я делаю так:

Код:
#define SBI(p,b) p |= _BV(b)
#define CBI(p,b) p &= ~_BV(b)
#define SetBitState(p, b, s) if (s) SBI(p, b); else CBI(p, b);


при включенной оптимизации макросы CBI/SBI превращаются в одноименные ассемблерные комманды*

Код:
#define XBIT 3
SetBitState(PORTB, PB4, (x & _BV(XBIT) ) )


* только с константами и в области действия cbi/sbi

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO