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

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

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

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

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

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

Цифровые сигнальные процессоры Вопросы, связанные с применением цифровых сигнальных процессоров: программирование, отладочные средства, алгоритмы...

 
Опции темы
Непрочитано 11.11.2008, 22:48  
ELayer
Частый гость
 
Аватар для ELayer
 
Регистрация: 11.11.2008
Адрес: Ekaterinburg
Сообщений: 15
Сказал спасибо: 8
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
ELayer на пути к лучшему
По умолчанию работа с регистром переноса AVR

переписываю программу с ассемблера на Си
столкнулся с такой проблемкой:

реализация некоторой подзадачи на асме выполняется так:
-в регистр загоняем число в двоичном формате и посредством команды rol сдвигаеми побитово и анализируем..
если ноль, выполняем одно если единица, то делаем другое
Код:
ldi	tmp,0b00000011
rol	tmp
brcc ‹подрограмма1›  # переход если не было переноса
....
на Си я реализовал, но функционал несколько не универсален и работает уже по другому принципу.

пока реализовано статично, в массив:
Код:
int DAC[8];
....
  DAC[0] = 0;    
  DAC[1] = 0;
  DAC[2] = 0;
  DAC[3] = 0;
  DAC[4] = 0;
  DAC[5] = 0;
  DAC[6] = 1;
  DAC[7] = 1;
...
 for(i=0;i‹=7;i++){  // анализ DAC[] 0b00000011
       tmp = DAC[i] & 1;  // сравниваем с 1
       if(tmp == 1){     
         trans_dac_loop2(); 
       }else{
         trans_dac_loop1();
       }           
      }
Вопрос: есть ли способ в Си (пакет CodeVisionAVR) работать с регистром переноса нечто функционала команды rol?
потому как потом число инкрементируется и в Си не понимаю как побитово его проанализировать
Реклама:
ELayer вне форума  
Непрочитано 14.11.2008, 23:31  
ELayer
Частый гость
 
Аватар для ELayer
 
Регистрация: 11.11.2008
Адрес: Ekaterinburg
Сообщений: 15
Сказал спасибо: 8
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
ELayer на пути к лучшему
По умолчанию

кажись справился, погонял алгоритм, работает

процедура для преобразования 16-ричного числа в побитный массив
Код:
int DEC[8]; //байт

void Dec2Bin(long num){ 
  int j;                            
  for(j=7;num;num››=1,j--) DEC[j] = (num&1)?('1'):('0');
} 

Dec2Bin(0xCA); //к примеру это число
в зависимости в какой последовательности надо расположить биты цикл меняется на:

Код:
for(j=0;num;num››=1,j++)
на выходе имеем массив введенного числа в двоичном формате
DEC[0]=1
DEC[1]=1
DEC[2]=0
DEC[3]=0
DEC[4]=1
DEC[5]=0
DEC[6]=1
DEC[7]=0
который уже можно побитово анализировать (посылать на выход порта МК)
физический смысл задачи был - код посылаемый с МК на ЦАП для задания режимов его работы
ELayer вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойства Data breakpoint в AVR Studio. Работа с битами analitik33 Микроконтроллеры, АЦП, память и т.д 10 29.08.2014 18:58
Работа с байтами FedorChek Микроконтроллеры, АЦП, память и т.д 2 11.06.2009 13:27
Работа с внешней памятью AVR, в эмуляторе FxMODE Микроконтроллеры, АЦП, память и т.д 3 27.02.2009 01:43


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


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