Вверх ↑
Этот топик читают: Гость
Ответов: 5
Рейтинг: 0
#1: 2020-03-29 10:42:34 ЛС | профиль | цитата
Добрый день!

Я только начал разбираться с Hiasm.
Cсчитываю из микроконтроллера значение температуры в HEX формате,как преобразовать это значение в формат Float?

Пример того что должно получиться:

Считываю- 3F C0 00 00 конвертируем в 1.5 (Float - Big Endian ABCD)
https://www.scadacore.com/tools/programming-calculators/online-hex-converter/

Заранее спасибо.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#2: 2020-03-29 14:17:02 ЛС | профиль | цитата

Add(MainForm,2953706,315,105)
{
}
Add(Edit,3538703,112,105)
{
Left=49
Top=21
Width=155
Text="3FC00000"
ClearAfterEnter=1
link(onChange,10986562:doConvert,[])
}
Add(StreamConvertor,10986562,175,105)
{
Mode=1
link(onResult,16035970:doGet,[])
}
Add(DataToFileEx,16035970,245,105)
{
Type=1
DataSize=4
BigEndian=0
Point(onRdError)
link(onGet,13052480:doWork2,[])
link(onRdError,13052480:doWork3,[(298,118)])
}
Add(HubEx,13052480,294,105)
{
link(onEvent,2953706:doCaption,[])
}
карма: 9

0
Ответов: 5
Рейтинг: 0
#3: 2020-03-29 16:38:36 ЛС | профиль | цитата
Большое спасибо!
Как я уже писал я только начинаю осваивать Hiasm, подскажите пожалуйста как вставить этот код в программе.
карма: 0

0
Ответов: 207
Рейтинг: 14
#4: 2020-03-29 17:17:58 ЛС | профиль | цитата
rs485 писал(а):
подскажите пожалуйста как вставить этот код в программе.

Может так будет понятней.

Add(MainForm,7627038,49,56)
{
Width=322
Height=113
}
Add(Edit,3538703,133,105)
{
Left=94
Top=21
Width=95
Text="3FC00000"
ClearAfterEnter=1
}
Add(StreamConvertor,10986562,133,154)
{
Mode=1
Point(Data)
link(onResult,16035970:doGet,[])
link(Data,3538703:Text,[])
}
Add(DataToFileEx,16035970,196,154)
{
Type=1
DataSize=4
BigEndian=0
Point(onRdError)
link(onGet,13052480:doWork2,[])
link(onRdError,13052480:doWork3,[(249,167)])
}
Add(HubEx,13052480,245,154)
{
link(onEvent,1982615:doText,[])
}
Add(Edit,1982615,273,154)
{
Left=210
Top=20
Width=75
Text=""
}
Add(Button,10208308,77,154)
{
Left=20
Top=20
link(onClick,10986562:doConvert,[])
}
карма: 2

0
Ответов: 8907
Рейтинг: 823
#5: 2020-03-29 21:30:48 ЛС | профиль | цитата
rs485 писал(а):
как вставить этот код в программе

Создаёте новый проект (щёлкнуть по серой полосе HiAsm). На форуме в левом верхнем углу кода щёлкните левой кнопкой, код копируется. В поле нового проекта щёлкните ПРАВОЙ кнопкой и в меню выберете "Вставить".
(Чем меряете температуру, если типа DS18B20, то их можно подключать к COM порту компьютера без посредников.)
карма: 19

0
Ответов: 5
Рейтинг: 0
#6: 2020-03-30 04:41:06 ЛС | профиль | цитата
Леонид писал(а):
rs485 писал(а):
как вставить этот код в программе

Создаёте новый проект (щёлкнуть по серой полосе HiAsm). На форуме в левом верхнем углу кода щёлкните левой кнопкой, код копируется. В поле нового проекта щёлкните ПРАВОЙ кнопкой и в меню выберете "Вставить".
(Чем меряете температуру, если типа DS18B20, то их можно подключать к COM порту компьютера без посредников.)


Спасибо разобрался!!!
Atmega328p опрашивает датчик DHT22 (и не только), я по протоколу Modbus RTU с помощью Hiasm опрашиваю Atmega328p.

--- Добавлено в 2020-03-30 04:47:41

А как это можно сделать в обратном порядке, если я захочу выложить код на форум.
И на каком языке программирования листинг?

Редактировалось 1 раз(а), последний 2020-03-30 04:47:41
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#7: 2020-03-30 08:31:42 ЛС | профиль | цитата
На поле HiAsm.Редактор схем нажать
F1 -> Основы работы с сайтом -> Обмен файлами
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5
Рейтинг: 0
#8: 2020-03-30 16:07:55 ЛС | профиль | цитата
Подскажите, пожалуйста как изменить направление обработки.
Нужно:
Float - Mid-Little Endian (CDAB)
00 00 3F C0 = 1.5 (Float)
карма: 0

0
Ответов: 493
Рейтинг: 163
#9: 2020-03-31 00:31:18 ЛС | профиль | цитата
rs485 писал(а):
00 00 3F C0 = 1.5 (Float)

rs485 , возможный вариант...


Add(MainForm,7627038,98,210)
{
Width=329
Height=139
}
Add(Edit,3538703,245,77)
{
Left=94
Top=21
Width=95
Text="3FC00000"
ClearAfterEnter=1
}
Add(DataToFileEx,16035970,322,126)
{
Type=1
DataSize=4
BigEndian=0
Point(onRdError)
link(onGet,1982615:doText,[])
}
Add(Edit,1982615,399,126)
{
Left=210
Top=20
Width=75
Text=""
}
Add(Button,10208308,98,126)
{
Left=20
Top=20
link(onClick,7245261:doEvent1,[])
}
Add(Edit,3926723,245,196)
{
Left=95
Top=50
Width=95
Text="00 00 3F C0"
}
Add(Hub,7245261,168,126)
{
link(onEvent1,10986562:doConvert,[])
link(onEvent2,1749948:doEnum,[(194,139)(194,251)])
}
Add(Edit,5624086,483,294)
{
Left=210
Top=50
Width=75
Text=""
}
Add(FormatStr,10431772,315,294)
{
DataCount=4
Mask="%2%1%4%3 "
link(onFString,7934642:doConvert,[])
link(Str1,10052497:Value1,[])
link(Str2,10052497:Value2,[])
link(Str3,10052497:Value3,[])
link(Str4,10052497:Value4,[])
}
Add(Str_Enum,1749948,245,245)
{
Delimiter=" "
link(onEnum,10052497:doValue,[])
link(onEndEnum,10431772:doString,[(289,258)(289,300)])
link(String,3926723:Text,[])
}
Add(MemFIFO,10052497,315,245)
{
Count=4
}
Add(DataToFileEx,10876944,427,294)
{
Type=1
DataSize=4
BigEndian=0
Point(onRdError)
link(onGet,5624086:doText,[])
}
Add(StreamConvertor,10986562,245,126)
{
Mode=1
Point(Data)
link(onResult,16035970:doGet,[])
link(Data,3538703:Text,[])
}
Add(StreamConvertor,7934642,371,294)
{
Mode=1
Point(Data)
link(onResult,10876944:doGet,[])
}

карма: 4

0
Ответов: 207
Рейтинг: 14
#10: 2020-03-31 01:41:52 ЛС | профиль | цитата
Еще один вариант
Add(MainForm,7627038,133,224)
{
Width=329
Height=139
}
Add(Edit,3538703,280,91)
{
Left=94
Top=21
Width=95
Text="3FC00000"
ClearAfterEnter=1
}
Add(DataToFileEx,16035970,357,140)
{
Type=1
DataSize=4
BigEndian=0
Point(onRdError)
link(onGet,1982615:doText,[])
}
Add(Edit,1982615,434,140)
{
Left=210
Top=20
Width=75
Text=""
}
Add(Button,10208308,133,140)
{
Left=20
Top=20
link(onClick,7245261:doEvent1,[])
}
Add(Edit,3926723,280,203)
{
Left=95
Top=50
Width=95
Text="00 00 3F C0"
}
Add(Hub,7245261,203,140)
{
link(onEvent1,10986562:doConvert,[])
link(onEvent2,2141931:doReplace,[(229,153)(229,265)])
}
Add(DataToFileEx,10876944,392,259)
{
Type=1
DataSize=4
BigEndian=0
Point(onRdError)
link(onGet,384925:doText,[])
}
Add(StreamConvertor,10986562,280,140)
{
Mode=1
Point(Data)
link(onResult,16035970:doGet,[])
link(Data,3538703:Text,[])
}
Add(StreamConvertor,7934642,336,259)
{
Mode=1
Point(Data)
link(onResult,10876944:doGet,[])
}
Add(RE_Replace,2141931,280,259)
{
Expression="(\S\S)\s(\S\S)\s(\S\S)\s(\S\S)"
ReplaceStr="$3$4$1$2"
link(onReplace,7934642:doConvert,[])
link(SourceStr,3926723:Text,[])
}
Add(Edit,384925,448,259)
{
Left=210
Top=50
Width=75
Text=""
}


Редактировалось 2 раз(а), последний 2020-03-31 01:42:31
карма: 2

1
Голосовали:tig-rrr
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)