ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
353691 Топик полностью
fk0, легенда (11.09.2012 11:22, просмотров: 116) ответил mazur на Возможно ли уйти от автомата состояний в обработчике меню? На данный момент пока получилось сделать точку входа через указатель на блоки меню\подменю, как в DOS.
Для ассемблера есть более приличный макропроцессор, нежели для C/C++. Я имею вввиду в AVRA. В ассемблере из студии делать нечего. Не понял как связаны автоматы и способ записи меню. Очевидно, должен существовать какой-то способ задания меню. И удобно, чтоб он записывался на языке программирования (макросами ассемблера). А уж как меню обрабатываться будет -- отдельная история. Вообще можно вспомнить, что любая компьютерная программа -- конечный автомат. Тогда вопрос теряет смысл. В практической плоскости же есть автомат с явным выделенным состоянием, хранимым в переменной, например. Не самый плохой способ, но неудобно программировать. Или "автомат" в котором состояние хранится в счётчике программных инструкций (PC). Но тогда с многозадачностью сложности. И в обоих случаях может потребоваться стек для вложенных меню, например. В первом случае организованный программно, во втором можно использовать команды PUSH и POP. Практически, я бы использовал первый способ (явное выделенное состояние, в переменной) во всех случаях, кроме того, когда вся работа прибора управляется через меню и нет каких-либо функций выполняющихся независимо от меню. Тогда вполне естесственно, например, при входе в очередное меню делать это инструкцией CALL. Также как и вызывать пункты из меню как функции через CALL.
[ZX]