Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Принцип построения консоли управления устройством
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Страницы: 1, 2
C.S.
Парсинг команд сделал. Использовал побайтовое сравненпие буфера в цикле, одновременно считая побайтово команду из памяти программ. Команды закодировал так:
Код
UARTCmdListTable:
.DB    8,    /*ОБЩЕЕ ЧИСЛО КОМАНД в ШТУКАХ!*/    \
    2,    "UP",        /*01: Кнопка "Вверх"*/        \
    3,    "DWN",        /*02: Кнопка "Вниз"*/    \
    4,    "LAMP",        /*03: Кнопка "Вкл-Выкл" (ON|OFF)*/    \

Соответственно - считаем числа, грузим в счётчики - и циклом крутимся. Нашли - из таблицы
Код
UARTCmdProcTable:
.DW    UARTCommand_UP;01
.DW    UARTCommand_DWN;02
.DW    UARTCommand_LAMP;03

выбираем нужный адрес и ICALL. Работает. Получилось, видимо,также как на СИ с массивом. Команда получает позицию её аргументов в буфере и делает с ними что хочет.
_Pasha
Цитата(C.S. @ Aug 27 2009, 12:33) *
Команды закодировал так:


По идее, ОБЩЕЕ ЧИСЛО КОМАНД в ШТУКАХ! можно определить директивой equ.
Во-вторых, в своем первом посте (на который zltigo сказал "с размахом") я не договорил, что если имеется ситуация, когда для нескольких команд есть одинаковый набор аргументов (одинаковое кол-во и тип и даже диапазон иногда) - то зачем плодить сущности, можно сам парсинг утрясти/утоптать. Т.е аргументы уже будут считаны, преобразованы и уложены куда надо, а потом по индексу - вызываем нужную функцию. Разумеется, это не принципиально, так, не более, чем свое имхо.
C.S.
Хм, попробую и так. Просто делить их по запятой. А насчёт EQU - стиля кода придерживаюсь, тут специально исключение сделано: вся запись - одна строка вида <Всего><Длина1><Текст1><Длина2><Текст2>...
Гоняю сейчас прогу (на ВБ быстро написал), или по терминалу - распознаёт, даже HELP выводит %)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.