LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH
Układy transmisji równoległej.
Sterowanie światłami na skrzyżowaniu.
Wykonawcy: Marcin Grabowiecki Jacek Gawęda Sebastian Chmielowiec |
Data wykonania: 16.01.98 Grupa ED5.3 |
Cel ćwiczenia:
Celem ćwiczenia było zapoznanie się z układami transmisji równoległej systemu DSM 51 , ze sposobami ich obsługi ustawiania i adresowania oraz ze sposobami ich praktycznego wykorzystania , na przykładzie modelu świateł sygnalizacyjnych na skrzyżowaniu.
Wykonanie ćwiczenia
Zadanie 1
Zadanie to polegało na takim zmodyfikowaniu przykładu aby dla świateł dla pieszych wykonywał analogiczny test jak w zadaniu 1. Listing zmodyfikowanego programu wykonującego ten test został przedstawiony poniżej:
PA_M EQU 0 ;TRYB 0..2
PA_D EQU 0 ;OUT->0, IN->1
PCA_D EQU 0 ;OUT->0, IN->1
PB_M EQU 0 ;TRYB 0..1
PB_D EQU 0 ;OUT->0, IN->1
PCB_D EQU 0 ;OUT->0, IN->1
PA EQU PA_M*4+PA_D*2+PCA_D
PB EQU PB_M*4+PB_D*2+PCB_D
SET_8255 EQU 80H+PA*8+PB
;**************************************
LJMP START
;**************************************
ORG 100H
START:
MOV R0,#CS55D ;inicjalizacja 8255
MOV A,#SET_8255
MOVX @R0,A
MOV R0,#CS55B ;zgaszenie świateł
MOV A,#0FFH ;-wpisanie jedynek
MOVX @R0,A ;na port A i B
INC R0
MOVX @R0,A
DEC R0
MOV R6,A ;stan LEDÓW
LOOP:
MOV R7,#4 ;licznik - liczba diod
MOV R0,#CS55A
LOOP_ON: ;ptętla włączania diod
MOV A,#5
LCALL DELAY_100MS
MOV A,R6
CLR C ;zapalenie kolejnej diody
RLC A
MOV R6,A
MOVX @R0,A
DJNZ R7,LOOP_ON ;powtórz zgodnie z R7
MOV R7,#4
LOOP_OFF: ;ptętla wyłączania diod
MOV A,#5
LCALL DELAY_100MS
MOV A,R6
SETB C ;zgaszenie kolejnej diody
RLC A
MOV R6,A
MOVX @R0,A
DJNZ R7,LOOP_OFF ;powtórz zgodnie z R7
SJMP LOOP
Zadanie 2
Analiza programu skrzyż.hex
Stany świateł w procedurze SET_PEOPLE
STAN ŚWIATEŁ |
PORT A |
STAN |
ZNACZENIE |
|
A7 |
1 |
Bity nie |
|
A6 |
1 |
znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
1 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
0 |
czerwone świeci kierunek 2 |
|
A2 |
1 |
zielone zgaszone kierunek 1 |
|
A1 |
1 |
żółte świeci kierunek 1 |
|
A0 |
0 |
czerwone świeci kierunek 1 |
|
A7 |
1 |
bity nie |
|
A6 |
1 |
Znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
2 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
0 |
czerwone świeci kierunek 2 |
|
A2 |
1 |
zielone zgaszone kierunek 1 |
|
A1 |
1 |
żółte świeci kierunek 1 |
|
A0 |
0 |
czerwone świeci kierunek 1 |
|
A7 |
1 |
bity nie |
|
A6 |
1 |
Znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
3 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
1 |
czerwone świeci kierunek 2 |
|
A2 |
0 |
zielone zgaszone kierunek 1 |
|
A1 |
1 |
żółte świeci kierunek 1 |
|
A0 |
0 |
czerwone świeci kierunek 1 |
|
A7 |
1 |
bity nie |
|
A6 |
1 |
Znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
4 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
1 |
czerwone świeci kierunek 2 |
|
A2 |
0 |
zielone zgaszone kierunek 1 |
|
A1 |
1 |
żółte świeci kierunek 1 |
|
A0 |
0 |
czerwone świeci kierunek 1 |
|
A7 |
1 |
bity nie |
|
A6 |
1 |
Znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
5 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
1 |
czerwone świeci kierunek 2 |
|
A2 |
0 |
zielone zgaszone kierunek 1 |
|
A1 |
0 |
żółte świeci kierunek 1 |
|
A0 |
1 |
czerwone świeci kierunek 1 |
|
A7 |
1 |
bity nie |
|
A6 |
1 |
Znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
6 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
1 |
czerwone świeci kierunek 2 |
|
A2 |
0 |
zielone zgaszone kierunek 1 |
|
A1 |
0 |
żółte świeci kierunek 1 |
|
A0 |
1 |
czerwone świeci kierunek 1 |
|
A7 |
1 |
bity nie |
|
A6 |
1 |
Znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
7 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
1 |
czerwone świeci kierunek 2 |
|
A2 |
0 |
zielone zgaszone kierunek 1 |
|
A1 |
1 |
żółte świeci kierunek 1 |
|
A0 |
0 |
czerwone świeci kierunek 1 |
|
A7 |
1 |
bity nie |
|
A6 |
1 |
Znaczące |
|
A5 |
1 |
zielone zgaszone kierunek 2 |
8 |
A4 |
1 |
żółte zgaszone kierunek 2 |
|
A3 |
1 |
czerwone świeci kierunek 2 |
|
A2 |
0 |
zielone zgaszone kierunek 1 |
|
A1 |
1 |
żółte świeci kierunek 1 |
|
A0 |
0 |
czerwone świeci kierunek 1 |
Stany świateł w procedurze SET_AUTO
STAN ŚWIATEŁ |
PORT B |
STAN |
ZNACZENIE |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
Znaczące |
|
B5 |
1 |
zielone zgaszone kierunek 2 |
1 |
B4 |
1 |
żółte zgaszone kierunek 2 |
|
B3 |
0 |
czerwone świeci kierunek 2 |
|
B2 |
0 |
zielone zgaszone kierunek 1 |
|
B1 |
1 |
żółte świeci kierunek 1 |
|
B0 |
1 |
czerwone świeci kierunek 1 |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
znaczące |
|
B5 |
1 |
zielone zgaszone kierunek 2 |
2 |
B4 |
1 |
żółte zgaszone kierunek 2 |
|
B3 |
0 |
czerwone świeci kierunek 2 |
|
B2 |
1 |
zielone zgaszone kierunek 1 |
|
B1 |
0 |
żółte świeci kierunek 1 |
|
B0 |
1 |
czerwone świeci kierunek 1 |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
znaczące |
|
B5 |
1 |
zielone zgaszone kierunek 2 |
3 |
B4 |
1 |
żółte zgaszone kierunek 2 |
|
B3 |
0 |
czerwone świeci kierunek 2 |
|
B2 |
1 |
zielone zgaszone kierunek 1 |
|
B1 |
1 |
żółte świeci kierunek 1 |
|
B0 |
0 |
czerwone świeci kierunek 1 |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
znaczące |
|
B5 |
1 |
zielone zgaszone kierunek 2 |
4 |
B4 |
0 |
żółte zgaszone kierunek 2 |
|
B3 |
0 |
czerwone świeci kierunek 2 |
|
B2 |
1 |
zielone zgaszone kierunek 1 |
|
B1 |
1 |
żółte świeci kierunek 1 |
|
B0 |
0 |
czerwone świeci kierunek 1 |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
znaczące |
|
B5 |
0 |
zielone zgaszone kierunek 2 |
5 |
B4 |
1 |
żółte zgaszone kierunek 2 |
|
B3 |
1 |
czerwone świeci kierunek 2 |
|
B2 |
1 |
zielone zgaszone kierunek 1 |
|
B1 |
1 |
żółte świeci kierunek 1 |
|
B0 |
0 |
czerwone świeci kierunek 1 |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
znaczące |
|
B5 |
1 |
zielone zgaszone kierunek 2 |
6 |
B4 |
0 |
żółte zgaszone kierunek 2 |
|
B3 |
1 |
czerwone świeci kierunek 2 |
|
B2 |
1 |
zielone zgaszone kierunek 1 |
|
B1 |
1 |
żółte świeci kierunek 1 |
|
B0 |
0 |
czerwone świeci kierunek 1 |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
znaczące |
|
B5 |
1 |
zielone zgaszone kierunek 2 |
7 |
B4 |
1 |
żółte zgaszone kierunek 2 |
|
B3 |
0 |
czerwone świeci kierunek 2 |
|
B2 |
1 |
zielone zgaszone kierunek 1 |
|
B1 |
1 |
żółte świeci kierunek 1 |
|
B0 |
0 |
czerwone świeci kierunek 1 |
|
B7 |
1 |
bity nie |
|
B6 |
1 |
znaczące |
|
B5 |
1 |
zielone zgaszone kierunek 2 |
8 |
B4 |
1 |
żółte zgaszone kierunek 2 |
|
B3 |
0 |
czerwone świeci kierunek 2 |
|
B2 |
1 |
zielone zgaszone kierunek 1 |
|
B1 |
0 |
żółte świeci kierunek 1 |
|
B0 |
0 |
czerwone świeci kierunek 1 |
Zadanie 3
Modyfikacja programu z zadania poprzedniego: - odmierzanie czasu za pomocą timera
Listing programu
SET_8255 EQU 10000000B
SET_TMOD EQU 00000001B
SET_TH0 EQU 4CH
SET_TL0 EQU 00H
;**************************************
LJMP START
;**************************************
ORG 100H
START:
MOV R0,#CS55D ;inicjalizacja 8255
MOV A,#SET_8255
MOVX @R0,A
MOV R0,#CS55A ;port A - światła dla pieszych
MOV R1,#CS55B ;port B - światła dla samochodów
;**************************************
;kolejne powtórzenie wszystkich stanów świateł na skrzyżowaniu
LOOP:
MOV R7,#8 ;8 stanów świateł na skrzyżowaniu
MOV R2,#1 ;stan pierwszy
;**************************************
;ustawienie kolejnego stanu świateł
STAN:
MOV A,R2 ;światła dla samochodów
ACALL SET_AUTO ;dla stanu numer (R2)
MOVX @R1,A
MOV A,R2 ;światła dla pieszych
ACALL SET_PEOPLE ;dla stanu numer (R2)
MOVX @R0,A
MOV R3,A ;zapamiętaj status pieszych
MOV A,R2 ;mruganie świateł dla pieszych
ACALL SET_BLINK ;dla stanu numer (R2)
MOV R4,A ;zapamiętaj status mrugania
MOV A,R2 ;czas świateł w stanie numer (R2)
ACALL SET_TIME ;N * 0.5 sek
MOV R5,A ;zapamiętaj czas
MOV A,R2 ;text na wyświetlacz LCD
ACALL SET_TEXT ;dla stanu numer (R2)
LCALL LCD_CLR
LCALL WRITE_TEXT
;**************************************
;odliczanie czasu jednego stanu z dokładnością 0.5 sek.
;mruganie świateł dla pieszych jeśli to konieczne
;z częstotliwością 1Hz
BLINK:
MOV TMOD,#SET_TMOD
MOV TH0,#SET_TH0
MOV TL0,#SET_TL0
MOV ACC,#10
SETB TR0
PĘTLA:
JNB TF0,$
MOV TH0,#SET_TH0
CLR TF0
DJNZ ACC,PĘTLA
MOV A,R3 ;mruganie świateł dla pieszych
XRL A,R4 ;zmiana stanu na przeciwne
MOV R3,A ;dla wybranych świateł
MOVX @R0,A
DJNZ R5,BLINK ;czas = R5 * 0.5 sek.
INC R2 ;kolejny stan
DJNZ R7,STAN
SJMP LOOP ;rozpocznij od pierwszego stanu
;**************************************
;dane do zapalenia świateł dla samochodów w 8 kolejnych stanach
SET_AUTO:
MOVC A,@A+PC
RET
DB 11110011B,11110101B,11110110B,11100110B
DB 11011110B,11101110B,11110110B,11110100B
;**************************************
;dane do zapalenia świateł dla pieszych w 8 kolejnych stanach
SET_PEOPLE:
MOVC A,@A+PC
RET
DB 11110110B,11110110B,11111010B,11111010B
DB 11111001B,11111001B,11111010B,11111010B
;**************************************
;dane do mrugania świateł dla pieszych w 8 kolejnych stanach
;1-mruganie odpowiedniego światła
SET_BLINK:
MOVC A,@A+PC
RET
DB 00000000B,00001000B,00000000B,00000000B
DB 00000000B,00000010B,00000000B,00000000B
;**************************************
;czas kolejnych stanów wyrażony w 0.5 sek.
SET_TIME:
MOVC A,@A+PC
RET
DB 30,8,4,4,15,8,4,4
;**************************************
;pobranie adresu tekstu dla kolejnego stanu
SET_TEXT:
RL A
PUSH ACC
ACALL SET_TXT
MOV DPL,A
POP ACC
DEC A
ACALL SET_TXT
MOV DPH,A
RET
;**************************************
SET_TXT:
MOVC A,@A+PC
RET
;DW TEXT1,TEXT2,TEXT3,TEXT4
;DW TEXT5,TEXT2,TEXT3,TEXT4
;**************************************
;teksty opisujące stan na skrzyżowaniu w kolejnych stanach
TEXT1:
DB 'PRZEJAZD POZIOMO',0
TEXT2:
DB 'ZMIANA ŚWIATEŁ '
DB 'ŻÓŁTE ',0
TEXT3:
DB 'ZMIANA ŚWIATEŁ '
DB 'CZERWONE',0
TEXT4:
DB 'ZMIANA ŚWIATEŁ '
DB 'CZERWONE ŻÓŁTE',0
TEXT5:
DB 'PRZEJAZD PIONOWO',0
;**************************************
;END
2
POLITECHNIKA LUBELSKA
WYDZIAŁ ELEKTRYCZNY