4578


WYDZIAŁ ELEKTRYCZNY POLITECHNIKI LUBELSKIEJ

LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH

Imię i Nazwisko: Mariusz Burzec

Grupa: ED 5.3

Data wyk. ćwicz. 15.11.96

Numer ćwiczenia

4

Temat ćwiczenia: Timery mikrokontrolera 8051. System przerwań.

Ocena:

Zespół (ćw. odróbkowe):

1.Mariusz Burzec

2.Adam Jadczuk

3.Piotr Janiec

1. Cel ćwiczenia.

Celem ćwiczenia było zapoznanie się z systemem timerów i przerwań mikrokontrolera, a także zapoznanie z zawartością rejestrów sterujących timerami , oraz wpływem zawartości bitów tych rejestrów na tryb pracy timerów.

2. Wykonanie ćwiczenia.

Zadanie 1.a

Ustawienia timerów:

Rejestr

Gate

C/~T

M1

M0

Gate

C/~T

M1

M0

TMOD

-

0

0

0

-

0

0

0

Stany

TIMER1

TIMER0

początko-

TH1

TL1

TH0

TL0

we

0010

0000

Rejestr

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TCON

-

1

-

0

-

-

-

-

Przy danych ustawieniach timer zlicza impulsy wewnętrznego zegara. Zmiany wartości poszczególnych rejestrów obrazuje poniższa tabela:

Zmiana TH1 na wartość:

Stan TL1 przed zmianą:

Stan TL1 po zmianie:

Stan 4-rech bitów rejestru TCON

01

1F

20

0100

02

3F

40

0100

03

5F

60

0100

04

7F

80

0100

05

9F

A0

0100

06

BF

C0

0100

07

DF

E0

0100

08

FF

00

0100

09

1F

20

0100

0A

3F

40

0100

0B

5F

60

0100

0C

7F

80

0100

0D

9F

A0

0100

0E

BF

C0

0100

0F

DF

E0

0100

10

FF

00

0100

Wyzerowanie bitu TR1 powoduje zatrzymanie timera 1

Zadanie 1.b

Ustawienia timerów:

Rejestr

Gate

C/~T

M1

M0

Gate

C/~T

M1

M0

TMOD

-

0

0

0

-

0

0

0

Stany

TIMER1

TIMER0

początko-

TH1

TL1

TH0

TL0

we

FEFF

0000

Rejestr

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TCON

-

1

-

0

-

-

-

-

Zmiany TH1:

Zmiana TH1 na wartość:

Stany TL1 przed zmianą:

Stany TL1 po zmianie:

Stan 4-rech bitów rejestru TCON

00

1F

20

0100

01

3F

40

1100

02

5F

60,61

1100

03

7F

80,81

1100

04

9F

A0,A1

1100

W trybie 0 TIMER1 pracuje jako rejestr 13-bitowy. TL1 jest traktowany jako rejestr 5-bitowy i cały jest zwiększany, ale przeniesienie z rejestru TL1 do rejestru TH1 następuje po przepełnieniu młodszych pięciu bitów młodszych rejestru TL1.

Zadanie nr2: Zliczanie impulsów zewnętrznych w timerze mikrokontrolera.

Celem zadania drugiego było uzupełnienie miejsc zaznaczonych znakami zapytania w programie licznik.asm. Zadanie to wykonaliśmy następująco:

;************************************************

;ĆWICZENIE 4 - TIMERY MIKROKONTROLERA

;ZADANIE 2 - ODLICZANIE CZASU

;************************************************

LED EQU P1.7

;********* Ustawienie TIMERÓW *********

TMOD_SET EQU 01100000B

TH1_SET EQU 0FFH-5

TL1_SET EQU 0FFH-5

;****************************************

LJMP START

ORG 100H

START:

ACALL INICJALIZACJA

MOV TMOD,#TMOD_SET ;ustaw tryb pracy timerów

MOV TH1,#TH1_SET ;ustaw stan początkowy

MOV TL1,#TL1_SET ;wybranego timera

SETB TR1 ;start wybranego timera

CLR TR0

CLR LED ;włącz LED

LOOP:

LCALL WYSWIETL_STANY_LICZNIKOW

JNB TF1,LOOP

; MOV A,#TCON

; CJNE A,#010000B,LOOP ;pętla dopóki nie przepełniony

CLR TF1 ;zeruj flagę

CPL LED ;przełącz LED

SJMP LOOP

INICJALIZACJA:

LCALL LCD_CLR

RET

WYSWIETL_STANY_LICZNIKOW:

LCALL LCD_CLR

MOV DPTR,#TEKST1

LCALL WRITE_TEXT

MOV A,TH0

LCALL WRITE_HEX

MOV A,TL0

LCALL WRITE_HEX

MOV DPTR,#TEKST2

LCALL WRITE_TEXT

MOV A,TH1

LCALL WRITE_HEX

MOV A,TL1

LCALL WRITE_HEX

MOV A,#20H

LCALL DELAY_MS

RET

TEKST1:

DB 'Timer 0: ',0

TEKST2:

DB 'Timer 1: ',0

Zadanie nr 3 :Odliczanie czasu w timerze mikrokontrolera

Celem tego zadania było takie uzupełnienie programu czas.asm tak, aby włączał i wyłączał diodę LED co pewien określony odcinek czasu.

1 ;************************************************

2 ;ĆWICZENIE 4 - TIMERY MIKROKONTROLERA

3 ;ZADANIE 3 - ODLICZANIE CZASU

4 ;************************************************

5

6 0097 LED EQU P1.7

7

8 ;********* Ustawienie TIMERÓW *********

9 0010 TMOD_SET EQU 00010000B

10

11 004C TH1_SET EQU 256-180 ; stany początkowe

12 0000 TL1_SET EQU 0

13 000A KROTNOŚĆ EQU 0AH

14 ;**************************************

15

16 0000: 02 01 00 LJMP START

17 0100: ORG 100H

18 0100: START:

19 0100: 75 89 10 MOV TMOD,#TMOD_SET ;tryb pracy timerów

20

21 0103: 75 8D 4C MOV TH1,#TH1_SET ;stan początkowy

22 0106: 75 8B 00 MOV TL1,#TL1_SET ;wybranego timera

23

24 0109: D2 8E SETB TR1 ;start wybranego timera

25 010B: LOOP: ;pętla mrugania diody TEST

26 010B: B2 97 CPL LED

27 010D: 74 0A MOV A,#KROTNOSC ;odczekaj czas KROTNOSC*ms=???s

28 010F: TIME:

29 010F: 30 8F FD JNB TF1,$ ;czekaj, aľ wybrany timer

30 ;odliczy 50ms

31 0112: 75 8D 4C MOV TH1,#TH1_SET ;wybrany timer na 50ms

32 0115: 75 8B 00 MOV TL1,#TL1_SET

33 0118: C2 8F CLR TF1 ;zerowanie flagi

34 ;wybranego timera

35 011A: D5 E0 F2 DJNZ ACC,TIME ;odczekanie N*50ms

36 011D: 80 EC SJMP LOOP

Do odliczania czasu użyto tu TIMER 1 pracujący w trybie 1. Maksymalny zakres liczenia to 65536 jednostek, czyli 65536 * 12/11,0592 to jest około 71ms. Przyjęto, że TIMER będzie odliczał odcinki czasu po 50 ms, czyli TIMER musi liczyć do 50000[μs]*12/11.0592=46080, natomiast 180*256=46080 Aby TIMER obliczył 46080 należało mu wpisać wartości początkowe równe TH1=256-180 i TL1=0.

Stan rejestru TCON = 0000 po wciśnięciu klawisza zmienia się na 0100.Na wyświetlaczu obserwujemy kolejno : FFF3 ; FFF7 ; FFFB ; FFFF ; 0020 ; 0024 ; 0028.. ITD.

W tym punkcie obserwujemy przepełnienie licznika w momencie zmiany stanu z FFFF na 0020 zapala się dioda i stan Rej. TCON zmienia się na 1100.



Wyszukiwarka

Podobne podstrony:
4578
praca-licencjacka-b7-4578, Dokumenty(8)
4578
4578
4578
4578
4578
praca-licencjacka-b7-4578, Dokumenty(8)

więcej podobnych podstron