Académique Documents
Professionnel Documents
Culture Documents
Le timer choisi (timer0 ou timer1) utilise un compteur de 16 bits pour le comptage. Ce compteur de
16 bits est en fait constitué de 2 registres SFR de 8bits chacun.
Pour le timer0, ces 2 registres sont TH0 et TL0. Pour le timer1, ces 2 registres sont TH1 et TL1.
Supposons qu’on utilise par exemple le timer0. Une fois que TMOD est chargé par la valeur 01h, pour
lancer le comptage, il faut mettre à 1 le bit TR0 du registre TCON . Le timer0 commence alors le
comptage : le compteur de 16 bits constitué des 2 registres TH0 et TL0 (initialement à 0) va alors
s’incrémenter à la fréquence du CPU divisée par 12 (si on a choisit C/T = 0). Si la fréquence du CPU
est de 12Mhz par exemple, alors le compteur 16bits va s’incrémenter toutes les 1µs.
TH0 TL0
00000000 00000000
00000000 00000001
00000000 00000010
- -
- -
- -
11111111 11111111
Ainsi, si le timer0 commence à compter à partir de 0, il débordera après exactement 216 µs.
216 µs = 65536 µs
Si on veut que le timer0 déborde après exactement 1/16 seconde, il faut donc, avant de lancer le
comptage, initialiser au départ TH0 et TL0 par la valeur que l’on va calculer :
On doit donc initialiser TH0 par la valeur 0Bh et TL0 par la valeur DCh si on veut que le timer0
déborde après exactement 1/16 seconde.
Ainsi, si on veut réaliser une temporisation de 1 seconde, il suffit de faire déborder 16 fois le timer0.
Si on veut réaliser une temporisation de N secondes, il suffit de faire déborder N × 16 fois le timer0.