A interrupção na mudança geralmente é de meio byte de E / S, onde as interrupções externas geralmente são para bits individuais. Como você já disse, uma coisa que você precisa fazer no IOC ISR é descobrir qual bit (ou bits) mudou.
O COI também é um pouco mais difícil de usar, mesmo além disso. É imperativo ler a porta logo antes de ativar a interrupção, e ainda mais importante LER A PORTA dentro do ISR! Se você tem um sinal de mudança lenta e acha que pode definir uma bandeira dentro do ISR e fazer sua leitura mais tarde, fora do ISR, pense novamente! A leitura da porta (ou qualquer parte da porta, se bem me lembro) redefine a trava no comparador que aciona a interrupção. Se você não limpá-lo dentro do ISR, ele será acionado imediatamente quando você sair do ISR. Se você se lembrar de fazer isso, está tudo bem, mas se você esquecer e achar que pode ler a porta quando chegar a ela, ficará um pouco frustrado até se lembrar de fazer a leitura no ISR.