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

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

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

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

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

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

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

 
Опции темы

Как 4 байта, принятых по USART превратить в число формата long int

Непрочитано 06.06.2012, 19:24  
Black Jack
Прохожий
 
Регистрация: 06.06.2012
Сообщений: 1
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
Black Jack на пути к лучшему
По умолчанию Как 4 байта, принятых по USART превратить в число формата long int

Приветствую уважаемых форумчан. Решил я тут написать програмку десятичной коррекции 32-х разрядного(Long int) двоичного числа для тини 2313 на Си.

long BIN_Data;

flash long int Const[10]={0x3B9ACA00, 0x5F5E100, 0x989680, 0xF4240,
0x186A0, 0x2710, 0x3E8, 0x64, 0xA, 0x1 };

char DEC_Data[10];

char i=0; // Указатель строки

char bait=1 ;

long int temp;

long *adress;

void BIN_to_DEC(void) {
i=0;
bait=0;
while(i‹10){
temp=Const[i];

while(BIN_Data›=0){
BIN_Data=BIN_Data-temp;
bait++;};
BIN_Data=BIN_Data+temp;
bait=bait-1;
bait+=0x30;
DEC_Data[i]=bait;
bait=0;
if (BIN_Data==1){
break;}
++i;
};
}
Да вот незадача, как 4 байта, принятых по USART превратить в исходное число формата long int для корректировки (BIN_Data)

Вот так не получилось; программа коррекции видит только младший байт, остальные читает нулями:

char USART_In (void)
{ adress=&BIN_Data;
i=0;
while (i‹4) {
# asm ("sei");};
};

interrupt[USART_RXC] void USART_Control(void){
*adress=UDR;
// bait=UDR;
adress++;
i++;
};

И со сдвигом влево ничего не вышло(BIN_Data‹‹=; , там на выходе совсем фигня

Кстати если в BIN_Data просто поставить двоичное число, всё работает как надо: программа корректирует его и отсылает по USART обратно.
Подскажите, кто знает, а я поделюсь готовым исходником.
Реклама:
Black Jack вне форума  
Сказали "Спасибо" Black Jack
warel (29.06.2019)
Непрочитано 06.06.2012, 21:06  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: как 4 байта, принятых по USART превратить в число формата long int

У Вас adress указывает на long, поэтому операция adress++; увеличивает указатель сразу на 4 байта
Yurkin2007 вне форума  
Эти 2 пользователя(ей) сказали Спасибо Yurkin2007 за это сообщение:
Black Jack (09.06.2012), warel (29.06.2019)
Непрочитано 06.06.2012, 21:32  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: как 4 байта, принятых по USART превратить в число формата long int

Black Jack, Оформите код как положено ...
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (29.06.2019)
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг с long ( для Тень) dosikus Proteus 6 25.03.2012 10:30
Инкремент байта в хексе с помощью bat файла k000858 Делимся опытом 13 16.09.2011 14:56
Считывание байта по INT0 neox-neox Микроконтроллеры, АЦП, память и т.д 28 11.03.2011 21:10
Как в CVAVR вывести 3х-значное число на порты? code-by Микроконтроллеры, АЦП, память и т.д 26 23.03.2010 23:23
unsigned long int. Глюк в Proteus-е odn2003 Микроконтроллеры, АЦП, память и т.д 2 11.05.2008 12:14


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.