реклама на сайте
подробности

 
 
> Передача по USART длинных чисел
MarYuriy
сообщение May 26 2012, 16:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 20-11-10
Пользователь №: 61 036



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

Как можно отправить по USART переменную unsigned long равную, допустим, 4294967294 (0xFFFF FFFE) таким образом, чтобы получить на ПК эти значения в HEX. То есть поразрядно поочереди получить FF, FF, FF, FE?

Пока ничего лучше я не придумал, чем это
CODE
unsigned long TIM5secs=4294967294;

long del = 1000000000;
int sP=0;
char secsMass[10];
int i = 0;

while (del!=1)
{
sP=TIM5secs/del;
secsMass[i]=sP;
TIM5secs=TIM5secs-sP*del;


while (!(USART1->SR & USART_SR_TXE)) {}
USART1->DR=secsMass[i];
i++;
del=del/10;
}


Получаю:
04 02 09 04 00 06 07 00 02 04 02 09 04

Но это не совсем то, что хотелось бы.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Gorby
сообщение May 26 2012, 16:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002



Код
unsigned long Mylong = 4294967294;
char buffer[9]; // 8+null terminator

sprintf (buffer, "%Xl", Mylong);
while(*buffer) TransmittChar(*buffer++);






union {
unsigned long Mylong;
char buf[4];
}MyUnion;

MyUnion.Mylong = 4294967294;

TransmittChar(MyUnion.buf[3]);
TransmittChar(MyUnion.buf[2]);
TransmittChar(MyUnion.buf[1]);
TransmittChar(MyUnion.buf[0]);



Действительно, не совсем понятно, что вам нужно. Привел два примера. В первом получите искомую текстовую строку. Во втором - настоящие хексы. Надеюсь, оно вам надо.


--------------------
Умею молчать на 37 языках...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 06:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016