Přerušení od časovače
Časovač načítá pravidelné impulsy z vnitřních hodin oscilátoru. Při frekvenci 12 MHz vychází intervaly plnění 1 mikrosekunda. V těchto intervalech se plní registry časovače, takže lze přesně spočítat časovou prodlevu naplnění registru (podle velikosti registru – viz módy). V okamžiku naplnění se nastaví bit naplnění TF0 (TF1) na 1 (sám se nenuluje, nutno nulovat softwerově).
Časovač se po spuštění plní v intervalu 1 mikrosekundy (12MHz). Pokud je povoleno přerušení od daného časovače, tak v okamžiku naplnění registrů TL a TH skočí program na danou adresu obslužného programu. Na této adrese vykoná obslužný program, který je ukončený instrukcí RETI a vrátí se zpět do hlavního programu.
Výhodou je, že nemusíme hlídat bit naplnění TF, který jsme museli nulovat. Ten je při přechodu do obslužného programu vynulován automaticky.
SFR pro přerušení :
Registr přerušení IE (Interrupt Enable)
Obr. 1: SFR IE
Řešení programu přerušení od časovačeč.0
Zadání:
Pomocí přerušení od časovače realizujte program blikání portu s LED v 1s intervalu.
ORG 0H ; nastavení adres
JMP PROG
ORG 0BH ; nastavení adresy přerušení č.0
INC R1
RETI
PROG: MOV TMOD,# 01h ; časovač 0 MOD 1 – 16 bitový
SETB EA ; povolení všech přerušení
SETB ET0 ; povolení přerušení od čas. č.0
MOV A, # 00
TU: MOV R1,# 00
MOV P1,A
SE: SETB TR0
CJNE R1, #16,SE
CPL A
JMP TU
END