POLITECHNIKA LUBELSKA
KATEDRA ELEKTRONIKI
LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH
SPRAWOZDANIE Z ĆWICZENIA NR. 4
„TIMERY MIKROKONTROLERA 8051
SYSTEM PRZERWAŃ”
Wykonali: Remigiusz Gwiazda ED 5.4
Paweł Luty ED 5.4
Cel ćwiczenia:
Celem ćwiczenia było zapoznanie się z ze sposobami programowania timerów/liczników mikrokontrolera i systemem przerwań.
Zadanie 1
1.abcdef (Tryb 0)
Ustawienia timerów: (punkt a)
Tryb pracy timera 1 - 4 TR1 = 1
Tryb pracy timera 0 - 0 TR0 = 0
stan początkowy T1 = 0010 praca szybka
stan początkowy T2 = 0000
Timer 0 jest wyłączony (TR0=0), timer 1 jest licznikiem 13-bitowym
Ustawiony 2 bit trybu (1xx) oznacza że licznik zlicza impulsy z klawiatury sekwencyjnej.
Przepełnienie licznika następuje po naliczeniu do wartości (1FFFh=8191d), ustawia się wtedy bit TF1 w rejestrze TCON. Bity najstarsze bity licznika nie wpływają na jego pracę.
W punkcie c i f żaden licznik nie zlicza (TRx=0)
W punkcie d licznik zlicza impulsy z wew. zegara, a nie jak poprzednio z klawiatury.
Zadanie 2 (Tryb 1)
Licznik działa jak w punkcie 1 z różnicą że przepełnienie występuje dla wartości FFFFh.
Zadanie 3 (Tryb 2)
Licznik 1 pracuje jako 8 bitowy ( używa TL1). W rejestrze TH1 zapamiętana jest wartość którą licznik wpisuje po przepełnieniu do TL1.
Przepełnienie następuje po naliczeniu w TL1 do FFh.
Zadanie 4,5,6,7 (Tryb 3)
Ustawienie licznika T1 w tryb 3 powoduje jego zablokowanie.
Ustawienie licznika T0 w tryb 3 przełącza go na prace jako dwa liczniki 8-bitowe(TL0 i TH0).
Licznik TL0 timera T0 wykorzystuje bity sterujące TF0 i TR0 ,a licznik TH0 bity TF1 i TR1 należące w innych trybach do timera 1.
Źródłem impulsów dla licznika TL0 może być w zależności od ustawienia 2 bitu trybu
(0) zegar wewnętrzny lub (1) klawiatura sekwencyjna.
Źródłem impulsów dla licznika TH0 jest zawsze zegar wewnetrzny.
Liczniki TL0 i TH0 mogą być niezależnie włączane (TR0 i TR1 ) i mogą się niezależnie przepełniać ( dla wartości FFh ). Stan przepełnienia objawia się ustawieniem bitów odpowiednio TF0 dla TL0 i TF1 dla TL1.
Zadanie 8
Licznik 0 pracuje w trybie 3, a licznik 1 w trybie 0.
Ze względu na to że licznik T0 wykorzystuje bity sterujące licznika T1, licznik T1 nie będzie pracował zgodnie z trybem 0.
Zadanie 9
Timery T0 i T1 (w trybach 0, 1 i 2) pracują niezależnie od siebie, sterowane są niezależnie i niezależnie przepełniają (ustawiając odpowiedni bit TF ).
Zadanie 3 odliczanie czasu
program włącza/wyłącza diodę co 1 sekundę.
LED EQU P1.7
TMOD_SET EQU 10
TH1_SET EQU 256-180 ; 50000μs=46083*1.085μs ≈ 180*256
TL1_SET EQU 0
LJMP START
ORG 100H
START: MOV TMOD,#TMOD_SET
MOV TH1,#TH1_SET
MOV TL1,#TL1_SET
SETB TR1
LOOP: CPL LED
MOV A,#20 ; 20*50ms = 1s
TIME_N50: JNB TF1,$ ; czeka na ustawienie się TF1
MOV TH1,#TH1_SET
CLR TF1
DJNZ ACC,TIME_N50
SJMP LOOP
Zadanie 4
LED EQU P1.7
TMOD_SET EQU 01
TH0_SET EQU 256-180
TL0_SET EQU 0
LJMP START
ORG 0Bh ; procedura obsługi przerwania timera 0
MOV TH0,#TH0_SET ; pętla główna programu zmienia zawartość rej. A
DJNZ ACC,NO_1SEK ; należy zmienić na DJNZ XXH,NO_1SEK
CPL LED ; gdzie XXH oznacza adres nie wykorzystywany przez program
MOV A,#4 ; zmiana na MOV XXH,#4
NO_1SEK: RETI
ORG 100H
START: MOV TMOD,#TMOD_SET
MOV TH0,#TH0_SET
MOV TL0,#TL0_SET
SETB TR0
SETB EA
SETB ET0
MOV R1,#10H
LOOP: LCALL WAIT_KEY
MOV A,#30 H
MOV R0,#LCDWD
MOVX @R0,A
DJNZ R1,KONIEC
LCALL LCD_CLR
MOV R1,#10H
KONIEC: SJMP LOOP