Využitím interního analogového komparátoru v mikrokontrolerech AT89Cx051 a doplněním několika součástek máme k dispozici relativně přesný AD převodník za pár korun.

Obslužná rutinka změří dobu úměrnou vstupnímu napětí a hodnotu předá v DPTR. Výstupní hodnota je v rozsahu 0..767 (999 - v případě napětí mimo rozsah). Při použití hodinového kmitočtu 16.65MHz je čas potřebný k změření Umax 4,254 ms a k změření Umin 0,380 ms.


                                   ;
zmerU:    push    ACC              ;ulozi ACC
          clr     P1.1             ;vybiti kondenzatoru
          clr     A                ;vynuluje ACC
                                   ;
vybijej:  djnz    ACC,vybijej      ;prodleva na vybiti
                                   ;
          mov     DPTR,#0000h      ;vynuluje DPTR
          setb    P1.1             ;zahajeni nabijeni
                                   ;
jestemer: jnb     P3.6,uznemer     ;test na preklopeni komparatoru
          inc     DPTR             ;inkrenentuje DPTR
          mov     A,DPH            ;presun DPH do ACC
          cjne    A,#03h,jestemer  ;kontroluje ACC na velky napeti (*
          mov     DPTR,#999d       ;prekroceni rozsahu DPTR = 999
uznemer:  pop     ACC              ;vyzvedne ACC
          ret                      ;navrat do programu
                                   ;
 

* - Při zvětšení této konstanty dojde ke zvýšení rozsahu (prodlouží se doba měření). Potom je vhodné změnit i hodnotu, která se dosazuje při napětí mimo rozsah.

V grafu je zachycena převodní charakteristika tohoto jednoduchého AD převodníku. Při změnách teploty od -10C (teplota za oknem) do +50C (teplota na topení) docházelo ke změně hodnoty napětí o maximálně o +-2% a při změnách napájecího napětí z 4V na 6V o maximálně +-1%.