Дам, процесора на тия крачета, на които са вързани енкодерите има прекъсване, т.е. той си гледа радиото и дисплея и ако се промени състоянието 1->0 или 0->1 на някое от тях, в един регистър се вдига единичка на един бит и процесора спира да се занимава с дисплея за момент, заслушва крачетата с енкодерите и изпълнява ISR (interrupt service routine, подпрограма за обслужване на прекъсванията), в която си пише - надясно -> вдигаш честотата, наляво -> сваляш, цък -> приемаш командата и пращаш на радиото инструкция да козирува, оправяш дисплея и пак излизаш да си гледаш последните две, и не гледаш енкодерите. И по-натам, ако някой от тях пак цъкне нанякъде, повтаряш процедурата, вместо на понякога 10-30 места в главния цикъл да проверяваш мръднал ли е енкодера и т.н. Това ти спестява много време и прави програмата оптимизирана, ненакъсана от ненужни деятелности.
+
=
П.П. Сега като се замислих винаги съм избирал процесора да ми е бърз и не съм ползвал прекъсвания. Имам идея как, но признавам - трябва да си поиграя и ще стане. Този код не е малък, има комуникация, някакъв протокол за компютъра, има паралелен дисплай, 2 врътки, радиото с негови протокол и т.н. , но мисля, че на 50МХц например, или на 64МХц, ще си прави и проверките и всичко без да му пука. Но пък си е елегантно с прекъсване!