Иногда, при написании программ на Си приходится использовать глобальные переменные, при изменении которых контроллер должен выполнить ряд определенных действий. Но если просто объявить переменную в глобальной области видимости (за пределами main), то увы, данного функционала мы не получим.
Для примера напишем небольшую программу, которая зажигает светодиод при изменении состояния вывода (возьмем INT0). Создадим глобальную переменную "CheckIt", которая будет своеобразным триггером. В цикле будем проверять эту переменную, и если она не равна нулю, то зажжем светодиод. В свою очередь данную переменную будет изменять подпрограмма прерывания, запускающаяся при изменении состояния вывода (INT0).