

| Mode | CM2 | CM1 | CM0 | Mode de fonctionnement des comparateurs |
| 0 | 0 | 0 | 0 | Reset des comparateurs, la sortie de chaque comparateur est à 0. |
| 1 | 0 | 0 | 1 | Utilisation de l'entrée [-] du comparateur C1 en mode multiplexé : routage entrée [-] vers broche RA0 si CIS = 0 ou vers RA3 si CIS ) 1. Utilisation du comparateur C2 en mode standard. Les entrées [+] des deux comparateurs C1 et C2 sont reliées ensemble et accessibles via la broche RA2 |
| 2 | 0 | 1 | 0 | Utilisation des entrées [-] en mode multiplexé, avec application d'une tension de référence interne Vref sur la broche [+] des deux comparateurs. Les entrées [-] sont routées soit vers RA0 et RA1 si CIS = 0, soit vers RA3 et RA2 si CIS = 1. |
| 3 | 0 | 1 | 1 | Les entrées [+] des deux comparateurs C1 et C2 sont reliées ensemble et accessibles via la broche RA2, les entrées [-] sont accessibles via les broches RA0 et RA1. La broche RA3 n'est dans ce cas pas utilisée pour les comparateurs et peut être utilisée en mode numérique. |
| 4 | 1 | 0 | 0 | Les deux comparateurs C1 et C2 fonctionnenet de façon totalement indépendante. Accès aux entrées des comparateurs via les broches RA0 et RA3 pour C1, et RA1 et RA2 pour C2. |
| 5 | 1 | 0 | 1 | Seul le comparateur C2 est activé avec ses entrées accessibles via les broches RA1 et RA2. Le comparateur C1 est désactivé et les broches RA0 et RA3 peuvent être utilisée en mode numérique. |
| 6 | 1 | 1 | 0 | Dans ce mode les sorties des comparateurs sont rendues accessibles de l'extérieur : la sortie du comparateur C1 est routée vers la broche RA3 etla sortie du comparateur C2 est routée vers la broche RA4. |
| 7 | 1 | 1 | 1 | Les deux comparateurs C1 et C2 sont désactivés, leur sortie est positionnée à OFF (état logique bas). |
CMCON := 7 ou CMCON := %00000111 ou CMCON := $07

program electronique_pic_tuto_base_comparateurs_001a;
procedure Main_Init;
begin
CMCON := %00000110; // CMCON = 6 -> use comp with C1 output wired to RA3
TRISA := %11110111;
TRISB := $00;
INTCON := $00;
OPTION_REG := 0;
OPTION_REG.NOT_RBPU := 1; // disable pullup
ANSEL := $00; // all inputs as digital I/O
end;
begin
Main_Init;
while true do
begin
nop;
end;
end.

program electronique_pic_tuto_base_comparateurs_001b;
procedure Main_Init;
begin
CMCON := %00000010; // CMCON = 2 -> use comp with internal voltage reference
CVRCON := 0;
CVRCON.CVREN := 1; // enable internal voltage reference (Vref)
CVRCON.CVROE := 1; // export internal Vref to RA2
CVRCON.CVRR := 1;
CVRCON.CVR3 := 0;
CVRCON.CVR2 := 1;
CVRCON.CVR1 := 1;
CVRCON.CVR0 := 0;
TRISA := %11110111;
TRISB := $00;
INTCON := $00;
OPTION_REG := 0;
OPTION_REG.NOT_RBPU := 1; // disable pullup
ANSEL := $00; // all inputs as digital I/O
ANSEL.ANS2 := 1;
end;
begin
Main_Init;
while true do
begin
PORTA.3 := not CMCON.C1OUT;
end;
end.