Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для GaFBich
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 331

Передача функции число в hex формате (работа с LPT)

22.03.2013, 22:47. Показов 2808. Ответов 5
Метки нет (Все метки)

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

К примеру SendByte(0xFF); один байт
а мне необходимо передать 3FF как это сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2013, 22:47
Ответы с готовыми решениями:

Как разбить одно число HEX число на два числа HEX ?
Задача в том, что бы одно число в виде HEX (к примеру 0xD681) разбить на 2 числа HEX (из 0xD681 - > 0xD6 и 0x81) именно что бы вот так...

Вывод в формате HEX
Как бы вывести, например, 'char' в поток в шестнадцатеричном виде?(Как при использовании %x в Си...)

Дата в hex-формате
Ищу скрипт или процедуру по переводу текущей даты в hex формат (от 01.01.1601 г) Механизм перевода: Сегодня 10.07.2016 г. или 151766...

5
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.03.2013, 23:24
C++
1
SendWord(0x3FF);
... а как еще ответить? Какой вопрос - такой ответ
0
 Аватар для GaFBich
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 331
23.03.2013, 00:10  [ТС]
Извините не корректный вопрос, мне устройству необходимо передавать адреса с смещением FF, далее функция обрабатывает поступившее число.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Отправить число
void SendByte(unsigned long dta){
cout<<"-- Sending byte "<<(int)dta<<endl<<endl;
 
//Цикл побитового вывода байта
for (int i=0;i<24;i++){
 
//Возможная задержка
Delay(1);
 
//Установка бита SPI_DI в соответствии с перебираемым битом
port=(((1<<(24-i))&dta)>0)?SPI_DI:0x00;
UpdatePort();
 
//Возможная задержка
Delay(1);
//Инвертирование бита SPI_SCLK (формирование фронта)
port^=SPI_SCLK;
UpdatePort();
 
cout<<"."<<endl;
}
//Возможная задержка
Delay(1);
}
Добавлено через 35 минут
Помогите мне изменить данную функцию, чтобы не только байт(представленного шестнадцатеричным числом) могла обрабатывать но и число(переведенное также в hex вид)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
23.03.2013, 00:56
ничего понять нельзя; или я бестолковый такой...
У Вас функция получает параметром "целое" -unsigned long - int - четыре байта, другими словами. И затем, начиная со старшего бита третьего по счету байта (24-й бит), отсылает эти биты по линии SPI_DI, стробируя передачу по линии SPI_SCLK. При чем тут "число"?
0
 Аватар для GaFBich
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 331
23.03.2013, 11:59  [ТС]
Извините, если написал непонятно, просто у меня для функции, одна которая принимает байт и и отсылает биты, а другая нужна для адресации (адрес представлен в виде 6 значного шестнадцатеричного числа к примеру 3FF)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
23.03.2013, 15:09
Да в общих чертах как бы понятно; только написание программы "в общих чертах" ни к чему не приведет. В программировании как нигде важна конкретика: чего, сколько, куда... . И русский язык Вам в помощь.
Вот пишется "6 значного", т.е. шесть знаков (символов), а у 3FF символов только три, а байтов и подавно два. С учетом Вашей функции, которая хоть и называется SendByte, но оперирует с четырьмя байтами (unsigned long dta) - как можно разобраться? Я вообще симпатизирую обращениям на детском уровне, когда понятным языком пишут о своей проблеме (из анекдота: "... ты, чукча, не умничай, - ты рукой покажи".).

Добавлено через 1 час 12 минут
P.S. Если хотите, я "обрисую", что выполняет вышеопубликованная функция, - может это поможет ее переделать под необходимые действия.
Получив управление, эта функция выдает на консоль вывода -- Sending byte ХХХХ, где ХХХХ - это параметр (int), полученный в аргументах вызова (dta). Затем начинается цикл, на мой взгляд с ошибками, - если требуется передать побитно три байта этого целого, начиная со старшего 3-го и заканчивая младшим битом, то строка должна быть такой__
C++
1
port=(((1<<(23-i))&dta)>0)?SPI_DI:0x00;
То-есть "единица" сдвигается на 23 (в начальном цикле) разряда влево и производится логическое умножение на число - параметр. Очевидно, что ненулевой результат будет лишь в случае, когда в данной позиции числа единица. В этом случае линия порта SPI_DI установится в "1", иначе в "0". Затем это все фиксируется на физическом порте ввода-вывода (UpdatePort()) и делается небольшая пауза 1 мс (Delay(1)). Далее нужно записать изменение в приемном устройстве; это делается по фронту (изменению уровня) сигнала на линии SPI_SCLK коиандой инвертирования: port^=SPI_SCLK, что опять-таки неправильно по моему мнению, так как известные мне устройства реагируют либо только на положительный фронт, либо на отрицательный, но не на "любой". Хотя в принципе такое возможно. После передачи последовательности из 24 битов на консоль вывода выводится "точка" с признаком конца строки и осуществляется выход из функции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2013, 15:09
Помогаю со студенческими работами здесь

Запись в hex формате
Нужно составить число в формате hex Например: uint8_t val = 0x32; Но известы предварительно только числа

Просмотр текста в hex формате
Всем привет. Нужно написать консольный вариант просмотра текста в hex формате: файл считывается и в оутпуте выводится подобное: ...

Представление команды в HEX формате
Как команду вместе с операндами перевести в HEX формат, и обратно?

Запись файла в hex-формате
Как записать файл в hex формате. Например я хочу сохранить bmp картинку в C++; Как при помощи средств STL записать 16-ричный формат кода...

Вывести все числа в строке в HEX формате
Надо написать программу которая будет просить ввести строку символов , после этого он печатает её на экране 2) все числа в строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru