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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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,328
Сказал спасибо: 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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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, время: 05:05.


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