Politechnika Lubelska |
Laboratorium podstaw systemów mikroprocesorowych |
||
w Lublinie |
Ćwiczenie nr 3 |
||
Józwik Tomasz Krzysztof Kadłubowski |
Semestr V |
Grupa ED 5.3 |
Rok akademicki 1997/98 |
Temat ćwiczenia: Timery |
Data wykonania 16.11.97 |
Ocena: |
1.Cel ćwiczenia:
Ćwiczenie ma na celu zapoznanie się z trybami pracy timerów mikrokontrolera 8051.
2.Wykonanie ćwiczenia.
2.1.Tryby pracy timerów mikrokontrolera.
Zwiększanie stanu Timera 1 za pomocą klawiatury sekwencyjnej przy wykorzystaniu programu l11_p8.hex. Program umożliwia obserwację:
- stanu rejestrów zliczających timerów wg. wzoru:
stan timera 1 / stan timera 0
-stanu czterech najstarszych bitów rejestru TCON:
TF1 |
TR1 |
TF0 |
TR0 |
TF1- =1,gdy nastąpiło przepełnienie rejestrów zliczających timera 1;
TR1- steruje pracą timera 1;
TF0- =1,gdy nastąpiło przepełnienie rejestrów zliczających timera 0;
TR0- steruje pracą timera 1;
Ustawienia:
tryb pracy timera 1 = 100 B tryb pracy timera 0 = 0 B
stan pocz. timera 1 = 0010 B stan pocz. timera 0 = 0000 B
TR1 = 1 TR0 = 0
Stan timera 1 |
FFFD |
FFFE |
FFFF |
0000 |
0001 |
0002 |
0003 |
TCON |
0100 |
0100 |
0100 |
1000 |
1100 |
1100 |
1100 |
b. Zwiększanie stanu Timera 1 za pomocą klawiatury sekwencyjnej przy wykorzystaniu programu l11_p8.hex.
Ustawienia:
tryb pracy timera 1 = 100 B tryb pracy timera 0 = 0 B
stan pocz. timera 1 = FEFF H stan pocz. timera 0 = 0000 B
TR1 = 1 TR0 = 0
Stan timera 1 |
FEFF |
FF00 |
TCON |
0000 |
0100 |
Odliczanie czasu w timerze mikrokontrolera.
a. Uzupełnienie treści programu l11_p10.hex tak, by timer 0 powtarzał odmierzanie odcinka czasu o długości 50 ms. Zadaniem programu jest włączanie i wyłączanie LED co 1s.
;************************************************
;CWICZENIE 3 - TIMERY MIKROKONTROLERA
;ZADANIE 3 - ODLICZANIE CZASU
;************************************************
LED EQU P1.7
;********* Ustawienie TIMEROW *********
TMOD_SET EQU 11H
;50[ms] = 50 000[(s]*(11.0592[MHz]/12) =
; = 46 080 cykli = 180 * 256
TH0_SET EQU 76
TL0_SET EQU 00
;**************************************
LJMP START
ORG 100H
START:
MOV TMOD,#TMOD_SET ;Timer 0 liczy czas
MOV TH0,#TH0_SET ;Timer 0 na 50ms
MOV TL0,#TL0_SET
SETB TR0 ;start Timera
LOOP: ;Pętla mrugania diody TEST
CPL LED
MOV A,#20 ;odczekaj czas 20*50ms=1s
TIME_N50:
JNB TF0,$ ;czekaj, aż Timer odliczy 50ms
MOV TH0,#TH0_SET ;TH0 na 50ms
CLR TF0 ;zerowanie flagi Timera 0
DJNZ ACC,TIME_N50 ;odczekanie N*50ms
SJMP LOOP