Si possono usare vari metodi di misura, e la scelta deve essere fatta in funzione dei valori forniti dal trasduttore e dei requisiti imposti dall’applicazione; in particolare va tenuta presente la precisione richiesta dal tipo di misura.
Il metodo più semplice per misurare la durata di un impulso è quello di sfruttare il timer come temporizzatore, (quindi conta le transizioni di clock dell’oscillatore) impostando il relativo bit C/T a zero e quindi avviando il conteggio quando inizia l’impulso da misurare e bloccandolo quando termina l’impulso.
Analizzando la struttura del timer si può notare come sia possibile avviare e bloccare il conteggio agendo su tre segnali, e precisamente sui bit TR0 di TCON, GATE di TMOD e sul pin di INT0, che verrà usato in questo caso non come ingresso di interrupt bensì come ingresso del timer.
Sarà quindi sufficiente porre GATE a 1 e TR0 a 1 e – non appena il pin INT0 andrà a livello alto – la CPU inizierà a contare gli impulsi dell’oscillatore ad una frequenza pari ad 1/12 di quella del quarzo. Non appena il pin INT0 ritornerà a zero si fermerà il conteggio. A questo punto sarà sufficiente leggere il contenuto dei registri TL0 e TH0, che conterranno un numero proporzionale alla durata dell’impulso che ha comandato il pin INT0.
Se per esempio si usa un quarzo da 12 MHz esatti, il ciclo di clock del microcontroller sarà di 1 microsecondo, per cui alla fine di un impulso da 1 millisecondo verranno contati esattamente 1000 impulsi, per cui nei registri del timer verrà caricato il numero mille, che ovviamente occuperà non solo TL0 ma anche parte di TH0.