Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 18.05.2006, 07:28  
anonymouz
Частый гость
 
Регистрация: 04.05.2006
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
anonymouz на пути к лучшему
По умолчанию PORTA.0

Здраствуйте.

Как можно организовать следующую вещь:

необходимо записывать в ногу порта значение. 0 или 1.

я не могу придумать ничего кроме как:
Код:
if( bit_is_set(byte, bit) ){
    sbi(PORTA, PA1);
}else{
    cbi(PORTA, PA1);
}
нельзя-ли сделать это как то короче.
т.е. заменить sbi && cbi на что то вроде:
some(PORTA‹‹PA1, value)
Реклама:
anonymouz вне форума  
Непрочитано 18.05.2006, 19:18  
---
Частый гость
 
Регистрация: 02.05.2006
Сообщений: 17
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
--- на пути к лучшему
По умолчанию

CodeVision:
PORTA.1 = Byte & (1‹‹Bit);
--- вне форума  
Непрочитано 19.05.2006, 13:57  
anonymouz
Частый гость
 
Регистрация: 04.05.2006
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
anonymouz на пути к лучшему
По умолчанию

про код вижн я в курсе.
а хотелось бы под gcc или на ассемблере (в крайнме случае)
anonymouz вне форума  
Непрочитано 19.05.2006, 14:02  
omas
Прохожий
 
Регистрация: 20.04.2005
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
omas на пути к лучшему
По умолчанию

labas.[priviet]
omas вне форума  
Непрочитано 19.05.2006, 18:38  
dr_allcom
Прохожий
 
Регистрация: 30.04.2006
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
dr_allcom на пути к лучшему
По умолчанию

На asm-е что-то вроде
cbi PORTA,1 ; PORTA.1 = '0'
sbrc r23,bit ; если bit в r23 установлен,
sbi PORTA,1 ; то PORTA.1 = '1'
На gcc первое, что пришло в голову:
if(byte&(1‹‹bit))
PORTA |= 1‹‹PA1;
else
PORTA &= ~(1‹‹PA1);
dr_allcom вне форума  
Непрочитано 19.05.2006, 19:26  
anonymouz
Частый гость
 
Регистрация: 04.05.2006
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
anonymouz на пути к лучшему
По умолчанию

2 dr_allcom

Вы меня неверно поняли...
Я как раз и хотел уйти от проверки (if(bit_is_set(var, bit))). Теперь понял что видимо никак.
а для gcc правильный код я прямо в своем первом сообщение показал
anonymouz вне форума  
Непрочитано 19.05.2006, 20:21  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Тебе как понял я , нужно при каждом проходе этого куска кода , инвертировать бит порта.
Для пиков , в С есть команда toggle то есть триггер
, уверен что и у АВР есть то же самое.
dosikus вне форума  
Непрочитано 19.05.2006, 20:34  
anonymouz
Частый гость
 
Регистрация: 04.05.2006
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
anonymouz на пути к лучшему
По умолчанию

неа...не инвертировать.

мне надо байт последовательно выдать в одну ногу порта.
возможно ли это без if(bit_is_set) пока не понял
anonymouz вне форума  
Непрочитано 19.05.2006, 20:59  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

А понял . Тогда сдвигай байт через флаг переноса
а уж его(перенос) и копируй в ногу порта ..
dosikus вне форума  
Непрочитано 19.05.2006, 21:10  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

CARRY= флаг переноса (не помню как это у АВР)
.
.
.
for(i=0;i‹7;i++)
{
DATA‹‹1;
PORTA.1=CARRY;
}
dosikus вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 14:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot