LABORATORIUM PODSTAW SYSTEMÓW
MIKROPROCESOROWYCH
Imię i Nazwisko: Piotr Jurek & Tadeusz Klukowski |
Grupa: ED 5.1 |
||||
Data wyk. ćwicz. 23.11.98 |
Numer ćwiczenia 7 |
Temat ćwiczenia: System przerwań mikrokontrolera 8051. |
Ocena: |
Zadanie 1 A
;********* Ustawienie TIMERÓW *********
;TIMER 0
T0_G EQU 0 ;GATE
T0_C EQU 0 ;COUNTER/-TIMER
T0_M EQU 1 ;MODE (0..3)
TIM0 EQU T0_M+T0_C*4+T0_G*8
;TIMER 1
T1_G EQU 0 ;GATE
T1_C EQU 0 ;COUNTER/-TIMER
T1_M EQU 1 ;MODE (0..3)
TIM1 EQU T1_M+T1_C*4+T1_G*8
TMOD_SET EQU TIM0+TIM1*16
TH0_SET EQU 00H ;stan początkowy Timera 0. Starszy bajt.
TL0_SET EQU 00H ;Młodszy bajt.
TH1_SET EQU 00H ;stan początkowy Timera 1. Starszy bajt.
TL1_SET EQU 00H ;Młodszy bajt.
LJMP START
;********* Przerwanie Timer 0 *********
ORG 0BH
LCALL JEST_T0
RETI
;********* Przerwanie INT1 (AC) *********
ORG 13H
LCALL JEST_I1
RETI
;********* Przerwanie Timer 1 *********
ORG 1BH
LCALL JEST_T1
RETI
; Program główny
ORG 100H
START:
LCALL INICJALIZACJA ;inicjalizacja źródeł przerwań
SETB EA
SETB ET0
LOOP:
SJMP LOOP ;koniec programu głównego
Zadanie 1 B
;********* Ustawienie TIMERÓW *********
;TIMER 0
T0_G EQU 0 ;GATE
T0_C EQU 0 ;COUNTER/-TIMER
T0_M EQU 1 ;MODE (0..3)
TIM0 EQU T0_M+T0_C*4+T0_G*8
;TIMER 1
T1_G EQU 0 ;GATE
T1_C EQU 0 ;COUNTER/-TIMER
T1_M EQU 1 ;MODE (0..3)
TIM1 EQU T1_M+T1_C*4+T1_G*8
TMOD_SET EQU TIM0+TIM1*16
TH0_SET EQU 00H ;stan początkowy Timera 0. Starszy bajt.
TL0_SET EQU 00H ;Młodszy bajt.
TH1_SET EQU 00H ;stan początkowy Timera 1. Starszy bajt.
TL1_SET EQU 00H ;Młodszy bajt.
LJMP START
;********* Przerwanie Timer 0 *********
ORG 0BH
LCALL JEST_T0
RETI
;********* Przerwanie INT1 (AC) *********
ORG 13H
LCALL JEST_I1
RETI
;********* Przerwanie Timer 1 *********
ORG 1BH
LCALL JEST_T1
RETI
; Program główny
ORG 100H
START:
LCALL INICJALIZACJA ;inicjalizacja źródeł przerwań
SETB EA
SETB ET1
LOOP:
SJMP LOOP ;koniec programu głównego
Zadanie 1 C
;********* Ustawienie TIMERÓW *********
;TIMER 0
T0_G EQU 0 ;GATE
T0_C EQU 0 ;COUNTER/-TIMER
T0_M EQU 1 ;MODE (0..3)
TIM0 EQU T0_M+T0_C*4+T0_G*8
;TIMER 1
T1_G EQU 0 ;GATE
T1_C EQU 0 ;COUNTER/-TIMER
T1_M EQU 1 ;MODE (0..3)
TIM1 EQU T1_M+T1_C*4+T1_G*8
TMOD_SET EQU TIM0+TIM1*16
TH0_SET EQU 00H ;stan początkowy Timera 0. Starszy bajt.
TL0_SET EQU 00H ;Młodszy bajt.
TH1_SET EQU 00H ;stan początkowy Timera 1. Starszy bajt.
TL1_SET EQU 00H ;Młodszy bajt.
LJMP START
;********* Przerwanie Timer 0 *********
ORG 0BH
LCALL JEST_T0
RETI
;********* Przerwanie INT1 (AC) *********
ORG 13H
LCALL JEST_I1
RETI
;********* Przerwanie Timer 1 *********
ORG 1BH
LCALL JEST_T1
RETI
; Program główny
ORG 100H
START:
LCALL INICJALIZACJA ;inicjalizacja źródeł przerwań
SETB EA
SETB ET0
SETB EX1
LOOP:
SJMP LOOP ;koniec programu głównego
Zadanie 2
Lp |
Stan pocz. T0 |
Stan pocz. T1 |
Kolejność |
1 |
0000 |
0000 |
T0 T1 |
2 |
0000 |
0001 |
T1 T0 |
3 |
0001 |
0000 |
T0 T1 |
Timer TO posiada wyższy priorytet od Timera T1
Przerwanie od T1 występuje przed przerwaniem od T0
Przerwanie od T0 występuje przed przerwaniem od T1
Zadanie 3
Lp |
Stan pocz. T0 |
Stan pocz. T1 |
Kolejność |
1 |
FFFF |
FFFF |
T0 T1 Y0 |
2 |
FF80 |
FF80 |
T0 T1 Y0 |
3 |
FF40 |
FF40 |
T0 Y0 T1 |
4 |
FF10 |
FF10 |
Y0 T0 T1 |
5 |
Zablokowany |
FF40 |
T1 Y0 |
Przerwania od T1 i TO są zgłaszane przed przerwaniem od LINI INT1
Przerwania od T1 i TO są zgłaszane przed przerwaniem od LINI INT1
Przerwania od T1 i TO i LINI INT1 są zgłaszane jednocześnie; o kolejności przerwania decyduje priorytet przerwań
Przerwanie od LINI INT1 są zgłaszane przed przerwaniami od T1 TO
Przerwania od T1 i LINI INT1 są zgłaszane jednocześnie; o kolejności przerwania decyduje priorytet przerwań; T0 nie ma zezwolenia na przerwanie
Zadanie 4
Lp |
T0 |
T1 |
Kolejność |
||
|
Stan pocz. |
Pr. |
Stan pocz. |
Pr. |
|
1 |
0000 |
0 |
0000 |
0 |
T0 T1 |
2 |
0000 |
0 |
0000 |
1 |
T1 T0 |
3 |
0000 |
0 |
0001 |
0 |
T1 T0 |
4 |
0000 |
1 |
0001 |
0 |
T0 T1 |
5 |
0000 |
1 |
0001 |
1 |
T1 T0 |
Przerwanie zgłaszane przez T0 ma wyższy priorytet od T1
Poprzez ustawienie PT1 przerwanie pochodzące od T1 ma wyższy priorytet od T0
Przerwanie od T1 jest zgłaszane przed przerwaniem od T0
Przerwanie od T1 jest zgłaszane przed przerwaniem od T0, lecz jest natychmiast przerywane ze względu na ustawienie PT0 co powoduje, że przerwanie T0 ma wyższy priorytet
Oba przerwania mają ten sam priorytet, lecz T1 jest zgłaszane pierwsze