флаги меняются, когда датчик энкодера изменил свое состояние (свет попал на белую полоску) - счетчик увеличился, включенный флаг "запер" это состояние от повторного учета. Затем датчик энкодера снова изменил свое состояние (попал на черную полоску) - флаг сбросили до следующей черной полоски.
Я этот код вроде использовал в управлении роботом по RC5 viewtopic.php?f=58&t=4392&start=15#p78047