Перейти к содержанию

Организация меню бегущей строки


amost

Рекомендуемые сообщения

Пишу первую в жизни прогу управления светодиодной матрицей 8*48 - бегущая строка. Естественно, "правилами хорошего тона" написания программ на ассемблере не владею, потому и составляю, как умею... Но вроде как работает... И вот, на некотором этапе возникает проблема организации менюшки, т.е. есть совокупность клавиш АТ клавиатуры, и по нажатию каждой из них нужно принять определенное решение: поменять язык вводимых символов, регистр символов, скорость, режим отображения, различные эффекты и т.д. Есть ли готовые алгоритмы реализации ветвления на несколько направлений? ИМХО, писать отдельную процедуру для каждого действия достаточно неудобно?!

Код клавиши получаю в виде скан-кода от клавиатуры. Действий около 20-30, проц MCS51, компилятор ASM51.

Ссылка на комментарий
Поделиться на другие сайты

Посмотри тут, может управляющую прогу готовую возьмешь, была у меня еще под более простую бегущую строку под винду, но не нахожу, удалил наверное :( . Поищи в гугле схемы на бегущие строки.

Ссылка на комментарий
Поделиться на другие сайты

Посмотри тут, может управляющую прогу готовую возьмешь, была у меня еще под более простую бегущую строку под винду, но не нахожу, удалил наверное :( . Поищи в гугле схемы на бегущие строки.

Да прошивки, и более того, исходного кода там нет...Схему и плату уже свою слепил. Тепер нужно посмотреть как люди делают менюшку, т.е. нажал F1 - изменилась скорость, F2 - направление движения и т.д (клава подключена непосредственно к контролеру, без компа).

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

поменять язык вводимых символов, регистр символов, скорость, режим отображения, различные эффекты и т.д. Есть ли готовые алгоритмы реализации ветвления на несколько направлений? ИМХО, писать отдельную процедуру для каждого действия достаточно неудобно?!

Для первой программы на ассемблере совсем не дУрно! B)

У тебя же есть в программе такой модуль который занимается тем, что интерпретирует коды от клавиш и находит в памяти образ нужного символа? Таблицу знакогенератора надо нарисовать совместимую с 866 code page. Там латиница и кирилица, прописные и строчные, цифры, символы и проч.

Теперь, ты заводишь в битовой памяти флаги. Один бит для управления языком, следующий для регистра, затем режим отображения (например прямой или инверсный вывод информации на дисплей).

Так вот в модуле где происходит поиск образа символа в таблице надо учитывать флаги управления языком и регистром.

В модуле который занимается выводом информации на дисплей надо учитывать флаг режима отображения.

Флаги модифицируются при нажатии функциональных клавиш на клавиатуре.

Для различных эффектов придётся писать отдельно на каждый придуманный тобой эффект кусок кода. Если куски кода получаются практически одинаковыми для разных эффектов, то для минимизации оформляй их в виде подпрограмм.

Короче, взялся писать программу на низком уровне? Теперь придётся создать всё самому вплоть до мелочей :)

Краткое руководство программиста по языкам программирования.

Бурное размножение современных языков программирования (которые, похоже, просто заимствуют друг у друга бессчетные нововведения) приводит к тому, что иногда бывает трудно вспомнить, какой язык вы в настоящее время используете. Это удобное руководство предлагается для общего использования в целях помощи программистам, оказавшимся перед такой дилеммой.

Задача: прострелить себе ногу.

C:

Вы простреливаете себе ногу

C++:

Вы случайно создаете дюжину экземпляров объекта "вы" и всем им простреливаете ногу. Срочная медицинская помощь оказывается невозможной, так как вы не можете разобраться, где настоящие объекты, а где - те, которые только указывают на них и говорят: "а вот - я!".

Фортран:

Итеративно вы простреливаете каждый палец ноги, а когда пальцы заканчиваются, загружаете следующую ногу и продолжаете. Когда пули заканчиваются вы все-равно продолжаете попытки прострелить себе ноги, потому что не имеете возможности обработать такую особую ситуацию.

Паскаль:

Транслятор не позволит вам прострелить себе ногу.

Ada:

После тщательного описания пакета "нога", вы пытаетесь одновременно зарядить пистолет, нажать курок, завопить и выстрелить себе в ногу. В ходе попыток обнаруживается, однако, что вас постигла неудача, так как ваша нога оказалась неверного типа.

Кобол:

Наводите ПИСТОЛЕТ COLT 45 на НОГА.СТОПА, затем помещаете РУКА.КИСТЬ.ПАЛЕЦ на ПИСТОЛЕТ. КРЮЧОК И НАЖИМАЕТЕ. Затем возвращаете ПИСТОЛЕТ В КОБУРУ. ПРОВЕРЬТЕ, нуждаются ли шнурки в повторном связывании.

Lisp:

вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который...

Форт:

Нога простреливать себе вы.

Пролог:

Вы сообщаете программе, что вы хотите иметь простреленную ногу. Программа разрабатывает способ этого достичь, но синтаксис языка не позволяет объяснить этот способ вам.

Бейсик:

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

Visual basic:

На самом деле, вы будете только выглядеть, как- будто ваша нога прострелена. Однако, в процессе реализации вы получите столько удовольствия, что подобные мелочи вас не озаботят.

Hypertalk:

Поместите первую пулю пистолета в ступню левой ноги вас. Сообщите результат.

Motif:

Вы тратите несколько дней на построение uil - описания вашей ноги, пули, ее траектории и замысловатой резьбы по слоновой кости на рукоятке пистолета. Когда вы наконец-то управились и готовы нажать курок, пистолет закупоривается.

APL:

Вы простреливаете себе ногу, затем тратите целый день на то, чтобы представить себе, как это сделать с меньшим количеством символов.

Снобол:

Если вам удастся, прострелите себе ногу. Если не удастся, то прострелите себе правую ногу.

Unix:

% ls

foot.C foot.H foot.O toe.C toe.O

% rm * .O

rm: .O no such file or directory

% ls

%

Параллельный euclid:

Вы простреливаете себе чью-то чужую ногу.

Язык управления заданиями ibm/370:

Вы посылаете свою ногу в управляющую систему с приложением документа на 400 страниц, точно описывающего, как именно вы хотите быть простреленным. Через три года ваша нога возвращается с глубоким ожогом.

Paradox:

Не только вы можете прострелить себе ногу, но и ваши пользователи.

Access:

Вы пытаетесь прицелиться в вашу ногу, но в результате простреливаете все борландовские дистрибутивные дискеты.

Revelation:

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

Модула-2:

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

Ассемблер:

Вы пытаетесь прострелить себе ногу, но обнаруживаете, что прежде вам придется изобрести пистолет, пулю, курок и вашу ногу.

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Таблицу знакогенератора надо нарисовать совместимую с 866 code page . Там латиница и кирилица, прописные и строчные, цифры, символы и проч.

А поподробнее про кодовую таблицу можно? Я конвертировал скан-коды в ASCII///

Короче, взялся писать программу на низком уровне? Теперь придётся создать всё самому вплоть до мелочей

А есть альтернатива? По учебе стыкался с АСМ, про Си - только слухи, тем более для MCS51. Самому искать с чего начать достаточно сложно, нужны авторитетные мнения - компиляторы, среды разработки, симуляторы...? Отдельно интересует вопрос возможности применения ассемблерных вставок в языках более высокого уровня. Желательно для 51-го семейства, для AVR найти вроде как проще...

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А поподробнее про кодовую таблицу можно? Я конвертировал скан-коды в ASCII///

В американском стандарте ASCII 7-битное кодирование для 128 букв и символов. Там нет кирилицы.

В 8-битной таблице номер 866 есть дополнительно еще 128 символов: псевдографика, кирилица прописная, кирилица строчная.

Вот файл:znakogenerator.zip

В нём таблица образов символов. Каждый символ шириной 8 байт (слева направо) и высотой 8 пикселей. Один байт в таблице соответствует одному столбцу пикселей. Младший бит соответствует самому верхнему пикселю в столбце, старший бит - самому нижнему.

От клавиатуры нужно анализировать нажатие комбинации клавиш смены языка ввода, и модифицировать соотв. флаг в программе, чтобы выбирать из таблицы образы символов: латиницу,кирилицу или псевдографику.

Я бы для этих целей соорудил в программе три таблицы соответствия скан-кодов с кодами символов из таблицы 866, и при вычислениях обращался бы к нужной таблице в зависимости от состояния флагов языка и псевдографики. Получая из этих таблиц код символа 866-й таблицы остаётся обратиться к его образу в файле что я прикрепил и выводить на индикацию.

А есть альтернатива? По учебе стыкался с АСМ, про Си - только слухи, тем более для MCS51. Самому искать с чего начать достаточно сложно, нужны авторитетные мнения - компиляторы, среды разработки, симуляторы...? Отдельно интересует вопрос возможности применения ассемблерных вставок в языках более высокого уровня. Желательно для 51-го семейства, для AVR найти вроде как проще...

Для этого ядра всё есть. И компиляторы и интерпретаторы. Есть (не помню уже как называется) Си компилятор где очень много ядер поддерживается, в том числе и MCS51. В яндексе или гугле всё найдётся.

Вопрос только в том: "а нахрена оно надо"?

Ты какую микросхему МК физически используешь?

Ссылка на комментарий
Поделиться на другие сайты

Использую AT89C4051, хотел воплотить в жизнь курсак, а теперь оставлять недоработанным неохота. Все-таки была когда-то мечта...

Потом, если будет время (так как это, к сожалению, не основное мое занятие), займусь чем-то более серьезным.., возможно посоветуешь в каком направлении двигаться, какую архитектуру изучать...?

Идею понял, постараюсь реализовать, спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Использую AT89C4051, хотел воплотить в жизнь курсак, а теперь оставлять недоработанным неохота. Все-таки была когда-то мечта...

Потом, если будет время (так как это, к сожалению, не основное мое занятие), займусь чем-то более серьезным.., возможно посоветуешь в каком направлении двигаться, какую архитектуру изучать...?

Идею понял, постараюсь реализовать, спасибо!

Используя АТ89С4051 ты имеешь 4 кБ памяти программ. По моему маловато для компилирования каких либо задач. Лучше писать на низком уровне.

Судя по форумам сейчас активно используется платформа AVR + С-компилятор.

А если какая-то серьёзная задача, то я бы обратил внимание на платформу ARM7. Ну и конечно не забывать о программируемых логических матрицах Altera или Xilinx.

В основном всё от конкретной задачи зависит. Нет смысла простой проект выполнять на "монстре" каком-нибудь.

Можно смеятся, но, например, в одной из систем жд автоматики фирмы Siemens (AzS-350 актуальной и по сей день) используются микропроцессоры i8085 в самых ответственных узлах. Посмотри поиском когда он был изобретён и поставь вопрос: Почему так?

Ответ - ради безопасности движения. В нём нечему глючить. Все "подводные камни" исследованы вдоль и поперек наверное.

Казалось бы, такой гигант как Siemens. И вдруг внутри микропроцессор, абсолютно и бесповоротно на наш взгляд морально устаревший.

Так что всё от задачи зависит.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...