Свежие обсуждения
Микроконтроллеры

Отзеркалировать байт

Мне надо отзеркалировать байты (поменять местами биты: первый с последним, второй с предпоследним и т. д.) Это надо проделать для массива длиной 1024 байта ( char array [1024] ), ну и для всяких других символов.
Как это сделать в программе для МК я знаю. Использовал такую функцию

char bit_reverse (char bits)
{
bits = ((bits & 0x0F) << 4) | ((bits & 0xF0) >> 4);
bits = ((bits & 0x33) << 2) | ((bits & 0xcc) >> 2);
bits = ((bits & 0x55) << 1) | ((bits & 0xaa) >> 1);
return bits;
}

Но!!!
Мне не надо включать функцию зеркалирования в программу МК. Сделать это надо одноразово и вставить уже преобразованный массив во флеш МК. Это картинка (bitmap), которая будет грузиться в индикатор.
Трудность в том, что я абсолютно не знаком с написанием программ для ПК на Си. Так уж сложилось, что Си изучал только применительно к МК.
Кто бы помог?!

 

Если для ПК вообще не писали, то будет не слишком легко. Выложите массив, или отправьте мне на почту - думаю, это будет проще всего.

 

мне в свое время тоже что-то подобное понадобилось, попросил товарища-программера написать рыбу для консольной программы для ПК, чем успешно и воспользовался, компилятор использовал lcc-win (http://www.cs.virginia.edu/~lcc-win32/), можно любой какой есть писюковый
берет подготовленный (я обрезал в hex-редакторе все, кроме битмапа)входной файл, преобразует и выдает.
эту рыбу цепляю для наглядности, функционала 0, но штук 50 картинок такой "программой" обработал и с пакетной обработкой и переименованием не заморачивался

190809.zip

 

Zandy: Мне надо отзеркалировать байты (поменять местами биты: первый с последним, второй с предпоследним и т. д.) Это надо проделать для массива длиной 1024 байта ( char array [1024] ), ну и для всяких других символов.
Как это сделать в программе для МК я знаю. Использовал такую функцию

На идикатор выводишь побитно?
Если да то ни каких конверторов не надо и суперфункции твоей, которая только место и время занимает.

 

Спасибо всем. Усё сделал простым зеркалированием банков в Painte.

dosikus: ни каких конверторов не надо и суперфункции твоей, которая только место и время занимает.
А это как? Я использую программы - рисовалки, заточенные под индикатор на KS0108. Там в банках младший бит вверху, старший - внизу. А у меня индикатор TIC157 с драйвером PCF8535. У него наоборот. Может есть рисовалки под него?
По поводу суперфункции, дык я и писал, что не хочу ее.

 

Если использовать софтовый SPI и выводить данные картинки на идикатор начиная с младшего бита .
Аппаратный всегда выводит со старшего.
Софтовый будет побыстрей аппаратного .
Вывожу на дисплей от сименса s65.
Правда если невмоготу есть прожка конвертор позволяющая очень многое в том числе и направление сканирования .

 

dosikus: Если использовать софтовый SPI
Я использую софтовый I2C, функции которого уже заложены в компиляторе. Я понимаю, что можно написать свои функции, где сдвиг делать в другую сторону. Как вариант тоже годится. Спасибо.

 

Как здесь файл прицепить ?
Хотел прогу тебе скинуть.

----------------------------------

Все вроде прицепилась , в ней все что тебе надо.
В регистрации введешь что угодно.
Да чуть не забыл, она сохраняет прямо в Сишный исходник , навыбор h , c ...

190848.7z

 

Спасибо большое. Программка то что надо. Уже попробовал.
А что пишет в заголовочных данных (head data)?

 

Хз. Надо разбираться с заморочками виндовс API.