148 14. Licznik T2 w 8052 i SAB 80515/535
mikrokontrolerze 80515/535 przed licznikiem T2 może być włączony dodatkowy dzielnik przez 2, tak jak przedstawiono to na rysunku 14-4.
Rys. 14-4 Struktura licznika T2 przy generowaniu długich odcinków' czasu.
Tryb autoładowania, wpisywania wartości początkowej licznika T2 po jego ; przepełnieniu, determinowany jest:
• 16-bitowym licznikiem T2, co oznacza, że możliwe jest zliczenie maksymalnie 65 536 wejściowych impulsów taktujących,
• wewnętrzny sygnał taktujący ma częstotliwość fCEN/12 lub fGEN/24 jeśli włączony jest dodatkowy dzielnik częstotliwości,
• po przepełnieniu licznik T2 generuje sygnał przerwania o adresie 2Bh; wr procedurze obsługi przerwania znacznik TF2 musi być kasowany programowo, ponieważ źródłem przerwania może być również zewnętrzny sygnał ustawiający znacznik EXF2,
• po przepełnieniu wartość początkowa licznika T2 jest automatycznie przepisywana z pomocniczego rejestru CRC.
W poniższym przykładzie przyjęto, że w licznik T2 ma generować cyklicznie przerwanie co 100 ms w mikrokontrolerze sterowanym rezonatorem kwarcowym o częstotliwości fGtN 12 MHz. Program realizujący podane założenia składa się z trzech części. W pierwszej części podane są deklaracje wartości używanych rejestrów. Należy pamiętać, że przepełnienie licznika T2 występuje gdy liczba zliczonych przez licznik impulsów wynosi OFFFFh + 1. Ze względu na dołączenie dodatkowego dzielnika przez 2 czas 100 ms upływa po zliczeniu 50.000 wewmętrznych impulsów (lOOms - 2 * 50.000|is). W drugiej części roz.DOCZYnaiacei sie od etykiety Czas 100 ms inicjalizowane są rejestry licznika T2 i rejestry współpracujące z licznikiem T2. Trzecia część rozpoczynająca się od etykiety INT_T2 jest początkiem procedury obsługi przerwania po przepełnieniu licznika T2.
Stan_T2 |
EQU |
OFFFFh +1 - 50000 |
;= 15536 = 3CB0h, wartość początkowa licznika T2 po starcie |
Stan..CRC |
EQU |
Stan_T2 |
;stan licznika T2 po przepełnieniu |
StanJENO |
F.QU |
lOlOOOOOb |
programowanie przerwań |
EAL | |
WDT ET2 | ES |
Tm EX1 ETO | EX0 |
EAL =1, odblokowane wszystkie przerwania,
ET2 = 1, odblokowane przerwanie od przepełnienia licznika T2.
Stan T2CON EQU lOOlOOOlb programowanie trybu licznika T2
T2P5 | 13FK | I2FR j T2R1 || T2R0 | T2CM | T2I1 | T210~
T2PS =1, włączony dodatkowy dzielnik przez 2,
I3FR = 0, znacznik nieistotny,
T2R1,T2R0 = lOb, wpis wartości początkowej po przepełnieniu, T2CM = 0, znacznik nieistotny,
T2I1,T2I0 = Olb, taktowanie sygnałem wewnętrznym.
Czas_100_ms:
;inicjalizacja wartości początkowych rejestrów: T2, CRC i T2CON
MOV
MOV
MOV
MOV
MOV
MOV
TH2,#High Stan T2 TL2,#Low Stan_T2 CRCH,#High Stan CRC CRCL,#Low Stan_CRC IEN0,#Stan_IEN0 T2CON,#Stan_T2CON
03Ch, wartość począt-
OBOh, kowa po starcie
<- 03CH, wartość po prze-CL <— 0B0H, pełnieniu licznika •gramowanie kontrolera przerwań
ORG 2Bh
INT_T2:
początek procedury obsługi przerwania od licznika T2
CLR TF2 ;kasowanie znacznika przerwania,
ponieważ przerwanie może być ;zgłoszone także przez T2EX
........................................ procedury użytkownika
RETI ;koniec programu obsługi przerwania