Приборчик я как-то разрабатывал, под управлением процессора AT89S8252, имеет 16 дискретных входов и 4 аналоговых. По Вашим расчётам программа должна была затянуть на 16 с лихуем мегабайт. Но в проце всего лишь 8 кил. И хватило, ещё и осталось.))
Серьезный аргумент. Есть повод разобраться тщательнЕе. Я не программист, но мне довелось видеть и даже участвовать в программировании процессоров. Т.е. начальные понятия есть.
Прежде всего вопрос, как у Вас получилось 16 с лихуем мегабайт? В этом я, признаться, плаваю.
Теперь о программировании. Принципиальным мне представляется вопрос, были ли у Вас зависимые входы? Если таковых не было, то на каждый вход приходится по одной программе, всего 20, и на каждую программу по 400 кил. Вобщем то не так мало и есть где все разместить. Допустим у Вас есть два зависимых логических входа. Тогда одна из программ должна отрабатывать четыре возможных сигнала: 00, 01, 10, 11. А это, как я понимаю, как минимум 3 логических оператора if. Насколько я знаю, в среде программистов использование goto считается моветоном, но сам видел, что используют. Т.е. к тем трем ифам надо еще сколько-то гоуту. Если зависимыми являются 16 логических входов, то разнообобразие входных сигналов становится равным 2^16=65536. На это количество сигналов надо 65535 ифов и такого же порядка гоуту. Опять же боюсь ошибиться, байт это что то вроде восьмиразрядного слова? И один оператор занимает один байт, или не так? А если так, то для программы с 16-тью зависимыми входами надо 65 кил только на ифы. Из всего этого я заключаю, что у Вас зависимых входов либо вовсе не было, либо были пара - две и все.