prottoss 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба PS. Если программа на C небольшая, то бросили бы ее сюда вместе с вопросами, на которые хотите получить ответы - это будет быстрее, чем поиск мифических конверторов с С на Асм. ПрАграмма как раз из разряда "100 строк" - я специально скачал чтоб посмотреть - там в основном работа с портами - пиши хоть на Ассемблере, хоть на Си - код будет практически одинаков - вобщем вся тема - пыль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба вобщем вся тема - пыль. Это понятно из названия темы. :) Конвертер из Си в ASM, то есть программа переводящая программу написанную на Си в другой вид - это по определению транслятор. Одной из разновидностей транслятора - компилятор. Современные распространённые компиляторы Си построены по принципу C/ASM/OBJ/HEX. Таким образом ASM текст присутствует. Программа построения алгоритма из Си программы (или ASM) большинству разработчиков ненужна ввиду того, что цикл разработки обратный, а именно сначала разрабатывается алгоритм (причём как правило укрупнённый), а уж потом пишется си прога. Иными словами программа строящая алгоритм из текста проги нужна в основном тем, кто разбирает чужие программы, причём, в основном, той части которая слабо разбирается в программировании. В связи с этим - потребность в таких программах - практически нулевая. Можно рекомендовать лишь то, что вам уже посоветовали другие. 1) Разобраться надо ли вам вообще программирование. (Дальнейшие пункты будут актуальны только если ответ - да) 2) Разобраться в базовых понятиях 3) Начать изучать язык Си Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба Иными словами программа строящая алгоритм из текста проги нужна в основном тем, кто разбирает чужие программы, причём, в основном, той части которая слабо разбирается в программировании. В связи с этим - потребность в таких программах - практически нулевая. оффтоп, конечно, но по-моему такая программа была бы весьма востребована. Многим приходится разбираться в чужих исходниках и некий инструмент, который получив текст на ЯП выдал бы осмысленное укрупненное описание был бы весьма полезен. Хотя врядли сегодня доступно что-то подобное... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба Алгоритм работы программы: Посылка с IR: 3 байта (старшим битом вперед) 1) 07 - Синхронизация 2) 50 - Отпускание клавиши / 5A - Нажатие 3) xx - Номер клавиши (>=80) В PC отсылаются коды (по порядку): E0 - Если клавиша принадлежит расширенному набору (см. ниже) F0 - Для отпускания клавиши xx - Скан код Таблица скан кодов лежит в файле keys.h (первый столбец - скан код, второй - признак расширенного набора) Если скан код равен 0 - клавиша игнорируется Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs157 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба 1) Народ программы для построения алгоритмов на основе СИ кода не знает.В стародавние времена (лет 20-30 тому назад) алгоритмы было принято публиковать на распространенном в те времена языке АЛГОЛ. И заметьте это официаль считалось публикацией алгоритма. А знает или нет читатель АЛГОЛ - это проблема читателя. Программ, которые из скажем кода на С чего-нибудь вроде БПФ сделает вам описание алгоритма как в учебнике - нет и не предвидется. 2) Как перекинуть код с СИ на асм в готовом к компилированию виде с сохранением исходного текста в качестве комментариев тоже пока никто не знает. (то что в файле *.lst не годится для компиляции на асме в автомате без изменений) С точки зрения повышения быстродействия бессмысленная идея, так АСМ код, получаемый таким транслятором в точности соответствует тому, что сгенерит компилятор. Если вам надо оптимизировать с точки зрения быстродействия или ресурсов что-то написанное на С, то ничего, кроме тупого вникание в сишный код и переложение его на асм руками не придумано. Идея заниматься оптимизацией АСМа из-под С не продуктивна, так как в рамках модели компилятор генерит достаточно оптимальный код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
QuickWitted 0 23 апреля, 2008 Опубликовано 23 апреля, 2008 (изменено) · Жалоба Алгоритм работы программы: Посылка с IR: 3 байта (старшим битом вперед) 1) 07 - Синхронизация 2) 50 - Отпускание клавиши / 5A - Нажатие 3) xx - Номер клавиши (>=80) Может я захватываю не все байты (т.е. устройство переключается на передачу данных в комп) но первая посылка максимум на 7 бит тянет... (больше похоже на 6) (в пределах (длинна посылки)*5 следующей посылка не начинается) результат измерений и вьювер для их просмотра тут http://swordgreenline.narod.ru/Soft.html файл IROscil.zip (он там один) в архиве программа и принятые файлы надо открыть файл Klava.txt далее просмотреть кодировку во вкладке осциллографа в файле сохранено 6 нажатий ентера наблюдается старт посылка посылки при удержании и посылка при отпускании Изменено 23 апреля, 2008 пользователем QuickWitted Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
QuickWitted 0 23 апреля, 2008 Опубликовано 23 апреля, 2008 (изменено) · Жалоба Посылка с IR: 3 байта (старшим битом вперед) В связи с тем что принимаемые посылки устойчивы во времени для заданной кнопки то выкинув повторы собрал разновидности для 3х кнопок вьювер для просмотра тут http://swordgreenline.narod.ru/Soft.html файл IROscil.zip (он там один) 1) 07 - Синхронизация во всех посылках повторяется начало ДЛИННА первых 4х бит 70h; 23h; 27h; 23h (импульс - пауза - импульс - пауза) Хвост разный для разных кнопок... разброс +-2 даже в посылке от одной кнопке Вопрос как из длинны 4х бит получить цифру 07 ? (не обязательно все 4 бита входят в 07 там может быть стартовый и может быть захвачен кусок след цифры) P.S: Все измерения проходили в крякозябриках IgorPlug2 (за 1 ед. принято ~= 42.62 us) Изменено 23 апреля, 2008 пользователем QuickWitted Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 23 апреля, 2008 Опубликовано 23 апреля, 2008 · Жалоба Может я захватываю не все байты (т.е. устройство переключается на передачу данных в комп) но первая посылка максимум на 7 бит тянет... (больше похоже на 6) (в пределах (длинна посылки)*5 следующей посылка не начинается) результат измерений и вьювер для их просмотра тут http://swordgreenline.narod.ru/Soft.html файл IROscil.zip (он там один) Я не смог освоить эту крутую программу :05: Видимо получить от нее длинну посылки невозможно, а одного вида импульсов недостаточно В сорце импульсы принимались просто по длительности. Начало посылки выделялось по паузе (более 32х интервалов) и импульсу длинной 3 интервала (т.е. код 07). Затем заводился таймер, который сэмплировал значение с входа приемника каждый интервал. Все захваченные биты складывались в байты, которые анализировались, как я писал раньше. Длинна интервала - 800 mks Коды повтора похоже игнорировались Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
QuickWitted 0 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Я не смог освоить эту крутую программу :05: Видимо получить от нее длину посылки невозможно, а одного вида импульсов недостаточно Поводи мышкой по виду – сразу над диаргаммой показывается над каким импульсом мыша и длинна импульса эти же цифры в строчках сверху, суммарную длину не считал. В сорце импульсы принимались просто по длительности. Начало посылки выделялось по паузе (более 32х интервалов) и импульсу длинной 3 интервала (т.е. код 07). Т.е. алгоритм примерно такой (в скобках замеренные модулем IgorPlug2 числа в hex - они в 16 раз больше и прыгают +/-2) 1) ждать тишины в большей 32х интервалов (мин тишина 395h между посылками) 2) принять старт бит - код 07 (замерено около 71h) 3) потом что? Затем заводился таймер, который сэмплировал значение с входа приемника каждый интервал. Все захваченные биты складывались в байты, которые анализировались, как я писал раньше. как складываются биты в байты? (как различаются бит0 от бита1) сравнивается замеренное с числом если меньше то ноль если больше единица? или сдвижка импульса относительно центра посылки? (хотя мне кажется тут другая методика) наблюдается куча мелких посылок и иногда крупные причём очень похоже что крупные состоят из нескольких мелких причём при этом вторая часть крупной посылки идёт с инверсией (видно по стартовой части 072 023 026 023) в середине ------------------------------------------------------------------------- пример мелкой на 6 импульсов - при нажатии кнопки первый импульс - 072 023 026 023 04B 023 026 023 025 049 025 049 06E пауза больше 800h ------------------------------------------------------------------------- ------------------------------------------------------------------------- пример крупной на 15 импульсов первый импульс - 071 023 026 023 026 091 026 023 026 048 026 023 04A 000 далее длинный импульс 192 это пауза в середине - 070 023 026 023 049 025 025 024 025 024 06E 026 06D 000 293 - большая пауза ------------------------------------------------------------------------- ------------------------------------------------------------------------- пример крупной на 12 импульсов первый импульс - 071 023 026 023 04B 023 027 022 027 047 027 047 06E 000 далее длинный импулс 393 это пауза в середине - 070 023 026 023 026 091 026 048 026 048 пауза больше 800h ------------------------------------------------------------------------- все полученные коды методом тыка на клавиши... до 100 - по 1 клавиши от 101 до 180 жали на несколько разом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
QuickWitted 0 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Я не смог освоить эту крутую программу :05: 1) все импульсы имеют постоянное знакоместо их начала... т.е. на одном и том же расстоянии от начала возможны варианта 1)импульс есть 2)импульс есть, но он слился с несколькими последующим или отел часть паузы 3)импульса нет. Стандартная длинна импульса 26h или 49h 2) начало всегда одинаковое - после длинного молчания 1)импульс71h - пауза23h - 2)импульс26h - пауза23h (071 023 026 023) 3) на 3 знакоместе может быть 2 варианта длинны импульса стандартный 26h и удлинённый за счёт паузы 49 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Поводи мышкой по виду – сразу над диаргаммой показывается над каким импульсом мыша и длинна импульса эти же цифры в строчках сверху, суммарную длину не считал. Меня смутило то, что на импульсы визуально разной длинны (для разных клавиш) он показывал одно и тоже значение Т.е. алгоритм примерно такой (в скобках замеренные модулем IgorPlug2 числа в hex - они в 16 раз больше и прыгают +/-2) 1) ждать тишины в большей 32х интервалов (мин тишина 395h между посылками) 2) принять старт бит - код 07 (замерено около 71h) 3) потом что? Алгоритм такой: Ждать тишины > 32х интервалов Ждать начала посылки Отсчитать пол-интервала, с этого места начать непрерывно считывать сигнал с IR датчика с заданным интервалом (около 23h по IgorPlug2) Считанные биты обрабатываются следующим образом: Первые 3 бита должны быть 1 (есть сигнал с IR входа) - Стартовый маркер Далее биты складываются в байты (по 8 битов) начиная со старшего бита в байте, т.е. бит 7, бит 6, бит 5 ... бит 0, всего 2 байта 1й байт из этих 2х - кон нажатия/отпускания клавиши 2й байт - номер клавиши + 128 (старший бит установлен) Если протокол не соблюдается (стартовые биты не все 1 или код нажатия/отпускания не правильный или старший бит в номере клавиши не установлен), посылка игнорируется и все начинается сначала наблюдается куча мелких посылок и иногда крупные причём очень похоже что крупные состоят из нескольких мелких причём при этом вторая часть крупной посылки идёт с инверсией (видно по стартовой части 072 023 026 023) в середине Оригинальная программа все это игнорирует ------------------------------------------------------------------------- пример мелкой на 6 импульсов - при нажатии кнопки первый импульс - 072 023 026 023 04B 023 026 023 025 049 025 049 06E пауза больше 800h ------------------------------------------------------------------------- 072 - Стартовый импульс 023 026 023 04B 023 026 023 - 01011010 - 5A - Нажатие 025 049 025 049 06E - 10010011 (1) - Клавиша с номером 19 - ESC ------------------------------------------------------------------------- пример крупной на 15 импульсов первый импульс - 071 023 026 023 026 091 026 023 026 048 026 023 04A 000 071 - Старт 023 026 023 026 091 - 01010000 - 50 - Оттускание 026 023 026 048 026 023 04A - 10100101 (1) - Клавиша с номером 37 - PrtScr Остаток посылки будет проигнорирован Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
QuickWitted 0 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Меня смутило то, что на импульсы визуально разной длинны (для разных клавиш) он показывал одно и тоже значение Это из за авто зума покрути вкладку сетингс... а для большей визуальности я переделал алгоритм отображения импульса под мышкой добавил расчёт позиции, цену одного деления и т.д. т.е. добавил рюшечек и бантиков... результат выложил тут http://swordgreenline.narod.ru/Soft.html файл IROscil.zip (он там один) 071 - Старт 023 026 023 026 091 - 01010000 - 50 - Оттускание 026 023 026 048 026 023 04A - 10100101 (1) - Клавиша с номером 37 - PrtScr Остаток посылки будет проигнорирован За пояснения спасибо - буду разбираться... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба а для большей визуальности я переделал алгоритм отображения импульса под мышкой добавил расчёт позиции, цену одного деления и т.д. т.е. добавил рюшечек и бантиков... результат выложил тут http://swordgreenline.narod.ru/Soft.html файл IROscil.zip (он там один) Советую добавить показ временной сетки (в тиках или mks) на осцилограмме. Так же приходит на ум какая-нибудь внешняя прилада для экспериментов с обработкой принятых данных для оперативных экспериментов с кодированием и пр. Например в виде внешней программы, читающей последовательность через поток ввода (или параметр) и выдающая обработанное значение на вывод в виде текста или такой же последовательности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Насчёт преобразования кода на С в блок-схему. Есть такая программа, CrystalCPP Flow Chart http://www.sgvsarc.com/product_crystalflow.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
QuickWitted 0 25 апреля, 2008 Опубликовано 25 апреля, 2008 (изменено) · Жалоба Вы не могли бы привести кратенький пример того, что хотите получить? (с алгоритм-билдером я не знаком). К примеру для программы void main() { DDRA = 255; for (int i = 0; i< 100; ++i) PORTA = i; while(1); } Теперь могу во клас - 3 клика мышкой и алгоритм готов За программу большое спасибо :beer: Изменено 25 апреля, 2008 пользователем QuickWitted Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться