MIKROP4.DOC

(9 KB) Pobierz
POLITECHNIKA LUBELSKA

 

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      ; 50000ms=46083*1.085ms » 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

Zgłoś jeśli naruszono regulamin