Цитата
То бишь с переменными работать не придется?
Интересный вывод.
main() тоже можно описать как void main(void),
разве это как-то помешает работать с переменными?
Цитата
Может ли быть подпрограмма в прерывании, и сколько их может быть внутрь(матрешки),
Конечно.
Количество зависит от объема стека выделенного вами.. для m32 легко можно отвести 512b-1kb под стек.
Цитата
Может ли находится основная программа в прерывании в плоть до вывода на жк экран
к примеру таймера 1 ?
В прерывании или не в прерывании не имеет особого значения.
Значение имеет то, сможет ли конкретный подход обеспечить выполнение всех задач поставленных в ТЗ.
Если основная функция программы выполняется в прерывании (где другие прерывания запрещены), то в этой функции некоторые действия придется решать путем программного опроса (например нельзя будет организовать одновременный прием/передачу по уарту, т.к. в режиме опроса надо проверять флаги состояния; нельзя будет одновременно работать с несколькими периферийными устройствами).. Если вас это устраивает, и программа не сильно сложная - то тогда безусловно можно.
Прерывания организованы для того чтобы сделать возможным обработку множества устройств в самый подходящий для этого момент. В вашем случае процессор что-то считает, выводит данные на LCD. Вдруг в какой-то момент времени АЦП заканчивает преобразование - происходит прерывание, процессор переходит на ПП обслуживания АЦП - вычитывает данные, запускает следующее преобразование и возвращается к прерванной задаче вывода данных на LCD.. В какой-то момент времени приходит символ по УАРТ. Процессор - отвлекается от текущей задачи - вынимает символ пришедший на УАРТ ложит его в очередь и возвращается к выводу данных на LCD.. В момент когда процессор закончит вывод на LCD и ему понадобятся данные с АЦП или с УАРТа, ему уже не придется ждать этих данных, надо будет просто взять их из очереди и обрабатывать.
Так что на мой взгляд не стоит размещать все в прерывании.