Liczniki (timery) mikroprocesora
Rejestry oznaczone są jako T0 i T1. Każdy licznik posiada 2 rejestry. 8 bitów 8 bitów TH0 TL0 8 bitów 8 bitów TH1 TL1 Przy użyciu rejestru TH i TL możemy zapisać w liczniku liczby o wartości o 0 do 216-1 (od 0 do 65535)
Do sterowania licznikami stosuje się dodatkowo 2 rejestry
TH TL 11111111 11111111 Przepełnienie timera
Przyjmując że jeden cykl maszynowy mikroprocesora trwa 1 μs to licznik może odmierzyć max czas=65536 μs = 65,536 ms
Ustawianie liczników Ustawienie licznika niezbędne jest wówczas gdy odmierzamy czas o określonym czasie trwania. Dane: Dany jest czas wyrażony w μs, które należy odmierzyć Maksymalny czas który licznik może odmierzyć to: Tmax = 216=65536 μs
Kolejne kroki: Obliczenie wartości początkowej, którą należy wpisać do rejestrów TH i TZ. Tp = tmax – t [μs] Tp- czas początkowy (start) T – odmierzany czas 2. Zamiana tp na system binarny 3. Postać binarną dzielimy na dwie części po 8 bitów od prawej strony. 8 bitów 8 bitów TH TL
6. Uruchomienie licznika SETB TR0; 4. Tp można wyrazić dla każdego rejestru w postaci dziesiętnej lub heksadecymalną. 5. Zapisanie do rejestrów TH i TL obliczonych wartości Tp. MOV TH0,#...............; MOV TL0,#................; 6. Uruchomienie licznika SETB TR0; 7. Po odliczeniu czasu na bicie TF pojawi się 1 logiczna TF = „1”
Przykład: Ustawić rejestry TH i TL by licznik odmierzył czas równy 50ms. Dane: Czas odmierzany: t = 50 ms = 50000 μs Czas początkowy: tp=65536 – 50000 = 15536 μs Zamiana tp na system binarny 15536(10) -> 11110010110000(2) 3. Dzielimy Tp wyrażoną binarnie na oktety 00111100 10110000 TH TL
4. Zapisanie wartości początkowych do rejestru: MOV TH,#00111100B MOV TL,#10110000B Obliczamy postać dziesiętną i heksadecymalną TH TL MOV TH,#00111100B MOV TL,#10110000B 00111100 10110000 BIN MOV TH,#60; MOV TL,#176; 60 176 DEC HEX 3C B0 MOV TH,#3CH; MOV TL,#B0H;
Po odliczeniu czasu 50ms dla danego licznika bit TF ustawi się na 1 logiczną TCON: TF0 TF1
Przykład 2. t= 65536 i tp [μs] Dane: Ustawienia początkowe TH i TL. Odmierzyć czas odmierzony przez licznik. Zamieniamy 16 bitową liczbę TH i TL na postać dziesiętną i otrzymujemy tp Wykonujemy działanie t=tmax-tp t= 65536 i tp [μs] otrzymujemy czas odmierzony
Przykład: Oblicz jaki czas odmierza licznik, jeżeli wpisy początkowe do rejestrów były następujące: 10010011 10101010 TH TL 1001001110101010(2) ---37802(10) tp=37802 [μs] Czas początkowy liczników Rozwiązanie zadania Odmierzony czas t = 65536 – 37802 = 27734 [μs]