Il comparatore è un vero e proprio amplificatore operazionale integrato in alcuni chip. Quasi tutti gli AVR8 ce l'hanno.
In pratica è l'op-amp stesso che fa il lavoro, tu a livello di codice non devi far altro che gestire l'interrupt che genera l'op-amp quando si verifica la condizione impostata.
Puoi anche realizzarlo a livello software, usando un ingresso analogico ed una routine che controlla periodicamente se il valore dell'ingresso è superiore o inferiore ad una predeterminata soglia ma non avrai mai la precisione di un op-amp né la stessa velocità (una lettura analogica è lenta). Potresti replicare la funzione usando un op-amp esterno con uscita collegata ad un pin interrupt del chip, in modo che se l'op-amp "scatta" ti attiva l'interrupt, che intercetti da codice.