| 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