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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 26.04.2016, 11:54  
psa07
Прописка
 
Аватар для psa07
 
Регистрация: 23.11.2009
Адрес: РФ, Воронеж
Сообщений: 175
Сказал спасибо: 537
Сказали Спасибо 95 раз(а) в 59 сообщении(ях)
psa07 на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Сообщение от begun Посмотреть сообщение
I=I+(M[n]+0x30)*a;
Из кода символа надо ВЫЧИТАТЬ 30, чтобы получить цифру числа
Реклама:
psa07 вне форума  
Непрочитано 26.04.2016, 12:18  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Сообщение от begun Посмотреть сообщение
вот строка фиксированной длины M[3]=('9','9','9')
Если по шагам и на пальцах

uint16_t data = 0;

data = (M[0] - 0x30) * 100;
data += (M[1] - 0x30) * 10;
data += (M[2] - 0x30);

Последний раз редактировалось STM32F0; 26.04.2016 в 12:25.
STM32F0 вне форума  
Сказали "Спасибо" STM32F0
begun (26.04.2016)
Непрочитано 26.04.2016, 17:24  
Paul74s
Частый гость
 
Регистрация: 19.05.2014
Сообщений: 48
Сказал спасибо: 5
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
Paul74s на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Вот так из текста М появится значение в переменной I
Код:
char M[10]={'1','2','3','4','5','6','7','8','9','9'};
char n;
int I=0;
for(n=0;n‹10;n++)
{
  I=I*10;
  I=I+(M[n]-0x30);
}

Последний раз редактировалось Paul74s; 26.04.2016 в 17:28.
Paul74s вне форума  
Сказали "Спасибо" Paul74s
begun (26.04.2016)
Непрочитано 26.04.2016, 17:47  
Paul74s
Частый гость
 
Регистрация: 19.05.2014
Сообщений: 48
Сказал спасибо: 5
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
Paul74s на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

А так преобразовываем I=1234567899 к тексту в виде HEX
Код:
char I, J;
char H[8], a, n;
J=I; // это на случай сохранения значения в переменной I
for (n=0; n‹8; n++) {
  a=J&0x0F;
  if (a‹10) H[7-n]=a+'0'; else H[7-n]=a+'7';
  J››=4;
}
Результат должен быть "499602DB"
Paul74s вне форума  
Сказали "Спасибо" Paul74s
begun (26.04.2016)
Непрочитано 26.04.2016, 21:52  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 874
Сказал спасибо: 234
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

доргие друзья,родные,

прежде всего, еще раз огромное спасибо за ваше терпение.
дело было в протеусе.
он не показывал правильно значения переменных и сам cvavr действительно не работает выше 32 бит что меня и путало.

в общем, вроде все выиснил для себя.
еще раз огромное спасибо всем за все.
begun вне форума  
Непрочитано 26.04.2016, 22:07  
begun
Гражданин KAZUS.RU
 
Регистрация: 18.07.2006
Сообщений: 874
Сказал спасибо: 234
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
begun на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Разрешите особую благодарность высказать Paul74s
begun вне форума  
Непрочитано 27.04.2016, 09:55  
Insector
Частый гость
 
Регистрация: 24.11.2006
Сообщений: 27
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Insector на пути к лучшему
По умолчанию Re: нужна программа перевода DEC. в HEX в CVAVR

Код:
#ifndef BCD_H
#define BCD_H

#include "bcd.h"

#include "main_def_func.h"

//==================================================  ======================
extern char num_str_buf [];
extern char tmp_num_str_buf [];
//==================================================  ======================

//==================================================  ======================
void char_to_str (u08 value);
void int_to_str (u16 value);
void long_to_str (u32 value);

u16 str_to_int (void);
u32 str_to_long (void);
//==================================================  ======================

//==================================================  ======================
void clr_tmp_num_str_buf (void);
void clr_num_str_buf (void);
//==================================================  ======================

#endif //BCD_H
Код:
//==================================================  ======================
#include "bcd.h"
//==================================================  ======================

//==================================================  ======================
char num_str_buf [11];
char tmp_num_str_buf [11];
//==================================================  ======================

//==================================================  ======================
void clr_tmp_num_str_buf (void)
{
   char *ptr = tmp_num_str_buf;
   u08 cnt = 10;

   while (cnt)
   {
      *ptr++ = ' ';
      cnt--;
   }
   *ptr = 0;
}
//==================================================  ======================

//==================================================  ======================
void clr_num_str_buf (void)
{
   char *ptr = num_str_buf;
   u08 cnt = 10;

   while (cnt)
   {
      *ptr++ = ' ';
      cnt--;
   }
   *ptr = 0;
}
//==================================================  ======================

//==================================================  ======================
u08 __flash tab_10_08 [] =
{
   100U,
   10U,
};
//------------------------------------------------------------------------
void char_to_str (u08 value)
{
   clr_num_str_buf ();

   char *ptr = num_str_buf + 7;

   u08 a;

   u08 cnt_1;
   u08 cnt_2;

   u08 __flash *ptr_f = tab_10_08;

   cnt_1 = 2;

   while (cnt_1)
   {
      a = *ptr_f;
      cnt_2 = 0;

      while (value ›= a)
      {
         value -= a;
         cnt_2++;
      }

      *ptr++ = (cnt_2 | 0x30);

      ptr_f++;
      cnt_1--;
   }
   *ptr++ = (value | 0x30);
   *ptr = 0 | 0x30;
}
//==================================================  ======================

//==================================================  ======================
u16 __flash tab_10_16 [] =
{
   10000U,
   1000U,
   100U,
   10U,
};
//------------------------------------------------------------------------
void int_to_str (u16 value)
{
   clr_num_str_buf ();

   char *ptr = num_str_buf + 5;

   u16 a;

   u08 flags = 0;
   u08 cnt_1;
   u08 cnt_2;

   u16 __flash *ptr_f = tab_10_16;

   cnt_1 = 4;

   while (cnt_1)
   {
      a = *ptr_f;
      cnt_2 = 0;

      while (value ›= a)
      {
         value -= a;
         cnt_2++;
      }

      if (!(flags & (1‹‹0)))
      {
         if (cnt_2 == 0)
         {
            *ptr++ = ' '; // Гашение незначащих нулей.
         }
         else
         {
            *ptr++ = (cnt_2 | 0x30);
            set_bit (flags, 0);
         }
      }
      else
      {
         *ptr++ = (cnt_2 | 0x30);
      }

      ptr_f++;
      cnt_1--;
   }
   *ptr++ = (value | 0x30);
   *ptr = 0;
}
//==================================================  ======================

//==================================================  ======================
u16 str_to_int (void)
{
   char *ptr_num = tmp_num_str_buf + 5;
   u16 __flash *ptr_tab_10 = tab_10_16;
   u16 a;
   u08 cnt = 0;
   u16 tmp_value = 0;

   while (cnt ‹ 4)
   {
      if ((*ptr_num › 0x30) && (*ptr_num ‹ 0x3A))
      {
         a = (*ptr_num - 0x30);

         while (a)
         {
            tmp_value += *ptr_tab_10;
            a--;
         }
      }
      *ptr_num++;
      ptr_tab_10++;
      cnt++;
   }
      return tmp_value += (*ptr_num - 0x30);
}
//==================================================  ======================

//==================================================  ======================
u32 __flash tab_10_32 [] =
{
   1000000000U,
   100000000U,
   10000000U,
   1000000U,
   100000U,
   10000U,
   1000U,
   100U,
   10U,
};
//------------------------------------------------------------------------
void long_to_str (u32 value)
{
   clr_num_str_buf ();

   char *ptr = num_str_buf;

   u32 a;

   u08 flags = 0;
   u08 cnt_1;
   u08 cnt_2;

   u32 __flash *ptr_f = tab_10_32;

   cnt_1 = 9;

   while (cnt_1)
   {
      a = *ptr_f;
      cnt_2 = 0;

      while (value ›=a)
      {
         value -= a;
         cnt_2++;
      }

      if (!(flags & (1‹‹0)))
      {
         if (cnt_2 == 0)
         {
            *ptr++ = ' '; // Гашение незначащих нулей.
         }
         else
         {
            *ptr++ = (cnt_2 | 0x30);
            set_bit (flags, 0);
         }
      }
      else
      {
         *ptr++ = (cnt_2 | 0x30);
      }

      ptr_f++;
      cnt_1--;
   }
   *ptr++ = (value | 0x30);
   *ptr = 0;
}
//==================================================  ======================

//==================================================  ======================
u32 str_to_long (void)
{
   char *ptr_num = tmp_num_str_buf;
   u32 __flash *ptr_tab_10 = tab_10_32;
   u32 a;
   u08 cnt = 0;
   u32 tmp_value = 0;

   while (cnt ‹ 9)
   {
      if ((*ptr_num › 0x30) && (*ptr_num ‹ 0x3A))
      {
         a = (*ptr_num - 0x30);

         while (a)
         {
            tmp_value += *ptr_tab_10;
            a--;
         }
      }
      *ptr_num++;
      ptr_tab_10++;
      cnt++;
   }
      return tmp_value += (*ptr_num - 0x30);
}
//==================================================  ======================

Последний раз редактировалось Insector; 27.04.2016 в 09:58.
Insector вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна программа для анализа протокола russo_turisto Микроконтроллеры, АЦП, память и т.д 10 21.03.2009 06:50
Программа перевода чисел. FOLKSDOICH Микроконтроллеры, АЦП, память и т.д 5 17.08.2008 14:12
Нужна программа Энергетик-2 или подобная ndreich Информация по радиокомпонентам 0 12.10.2007 00:49
нужна программа WAVRASM golinskiy Делимся опытом 1 30.05.2006 10:02


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


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