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