POLITECHNIKA LUBELSKA |
LABORATORIUM TECHNIKI MIKROPROCESOROWEJ |
|||
W LUBLINIE . |
UKŁADY TRANSMISJI RÓWNOLEGŁEJ STEROWANIE ŚWIATŁAMI NA SKRZYŻOWANIU |
|||
Ćwicz. Wyk. Marcin Blachani GRZEGORZ JĘDRUCHNIEWICZ |
GRUPA E.D.5.3 |
Data wyk. 98-01-09 |
Ocena: |
|
|
I CEL ĆWICZENIA.
Celem ćwiczenia jest zapoznanie się z zasadą działania transmisji równoległej . Do prezentacji wykorzystywania transmisji równoległej zastosowany został model M-01 dotyczący sterowania światłami na prostym skrzyżowaniu . Model ten podłączony jest do portów A i B układu 8255 poprzez złącze systemu opisane DIGITAL I / O .
II PRZEBIEG ĆWICZENIA .
ZADANIE 1
Zapoznanie się z trybami pracy układu 8255 oraz ze strukturą modelu M-01 oraz prześledzić pracę programu z przykładu Nr16. W trybie pracy krokowej odczytane zostały zawartości rejestru R7 , ACC , R6 ,oraz zapalane i gaszone diody .
diody |
P |
P |
P |
Z |
Z |
Z |
Z |
Z |
P |
P |
P |
M |
P |
P |
P |
Z |
Z |
M |
ACC |
00 |
80 |
FF |
FF |
FF |
05 |
00 |
FF |
FE |
FE |
00 |
00 |
05 |
00 |
00 |
81 |
81 |
3F |
R6 |
00 |
00 |
00 |
FF |
FF |
FF |
FF |
FF |
FF |
FE |
00 |
00 |
00 |
00 |
00 |
00 |
81 |
3F |
R7 |
00 |
00 |
00 |
00 |
06 |
06 |
06 |
06 |
06 |
06 |
00 |
06 |
06 |
06 |
06 |
06 |
06 |
00 |
Legenda:
P - diody zapalone
Z - diody zgaszone
M - diody migają
ZADANIE 2 .
Modyfikuję przykład z zadania 1 , tak aby zapalane były kolejno światła dla pieszych . W trybie pracy krokowej odczytuję zawartość rejestru R7 , ACC , R6 , i obserwuję zapalane i gaszone .
Listing programu
;PORT A - światła dla pieszych
;PA0 - przejście pionowo czerwone
;PA1 - zielone
;PA2 - przejście poziomo czerwone
;PA3 - zielone
;PORT B- światła dla samochodów
;PB3 - przejazd pionowo czerwone
;PB4 - żółte
;PB5 - zielone
;PB0 - przejazd poziomo czerwone
;PB1 - żółte
;PB2 - zielone
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
DEC R0
MOVX @R0,A
MOV R6,A ; stan LEDów
LOOP:
MOV R7,#4 ; licznik - liczba diod
LOOP_ON: ; pę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: ; pę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
Zawartość rejestrów R7 , ACC , R6
ACC |
R6 |
R7 |
ZAPALANIE DIOD |
00 |
00 |
00 |
ZAPALONE WSZYSTKIE |
FF |
00 |
00 |
ZGASZONE DLA SAMOCHODÓW |
FF |
00 |
00 |
ZGASZONE WSZYSTKIE |
FF |
FF |
00 |
ZGASZONE |
FF |
FE |
04 |
ZAPALONE CZERWONE |
F0 |
F0 |
00 |
ZAPALONE WSZYSTKIE PIESZE |
E1 |
EA |
04 |
ZGASZONE CZERWONE |
0F |
0E |
00 |
ZGASZONE WSZYSTKIE |
0F |
0E |
00 |
KOLEJNO PRZEGLĄDANE |
ZADANIE 3
Zadanie to ma na celu zanalizować pracę programu , który ma za zadanie sterować sygnalizacją świetlną prostej krzyżówki. Program ustawia osiem kolejnych stanów świateł na skrzyżowaniu .
1 - przejazd samochodów poziomo (i przejście poziomo pieszych )
2 - zmiana świateł - żółte dla samochodów jadących poziomo - zielone mrugające dla
pieszych
3 - zmiana świateł - czerwone dla samochodów jadących poziomo - czerwone dla pieszych
4 - zmiana świateł - czerwone z żółtym dla samochodów w pionie
5 - przejazd samochodów w pionie (i przejście pionowo pieszych )
6 - zmiana świateł - żółte dla samochodów jadących pionowo - zielone mrugające dla pieszych
7 - zmiana świateł - czerwone dla samochodów jadących pionowo - czerwone dla pieszych
8 - zmiana świateł - czerwone z żółtym dla samochodów w poziomie
ZADANIE 4
Zadanie to polega na modyfikacji programu z zadania poprzedniego tak aby czas pomiędzy kolejnymi zmianami świateł odmierzany był za pomocą TIMERA .Wykorzystujemy do tego TIMER 0 , koniec odcinka czasu rozpoznajemy za pomocą flagi TF0.Czas przejazdu w kierunku pionowym jest wyróżniony- trwa dwukrotnie dłużej niż w kierunku poziomym . Zmiany te uzyskamy modyfikując procedury , BLINK , SET_TIME .Według nas procedury te mają następującą postać , poprawność ich działania nie została sprawdzona z powodu braku czasu
BLINK:
SETB TR0
MOV A,#5
LOPP:
CLR TF0
JNB TF0,$
DJNZ ACC,LOPP
CLR TR0
MOV A,R3 ; mruganie świateł dla pieszych
XRL A,R4 ; zmiana stanu na przeciwny
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
****************************************
;czas kolejnych stanów wyrażony w 0.5 sek.
SET_TIME:
MOVC A,@A+PC
RET
DB 15,8,4,4,15,8,4,4
************************************************
Timery powinny być ustawione w następujący sposób ;
SET_8255 EQU 10000000B
SET_TMO EQU 256-180