LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH
Ćwiczenie nr 4 (poprawa)
Timery mikrokontrolera 8051. System przerwań.
Wykonawcy: Marcin Grabowiecki Jacek Gawęda Sebastian Chmielowiec
|
Data wykonania: 21.11.97 Grupa ED5.3 |
Cel ćwiczenia
Celem ćwiczenia było zapoznanie się 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.
Wykonanie
1.Zliczanie impulsów zewnętrznych w timerze mikrokontrolera.
Celem zadania jest uzupełnienie miejsc zaznaczonych znakami zapytania w programie.
Po wykonaniu zadania program wygląda 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
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.
POLITECHNIKA LUBELSKA
WYDZIAŁ ELEKTRYCZNY