• Non ci sono risultati.

Esercizio Semaforo

N/A
N/A
Protected

Academic year: 2022

Condividi "Esercizio Semaforo"

Copied!
16
0
0

Testo completo

(1)

Esercizio Semaforo

Un processore è interfacciato a due periferiche di input che indicano il numero di autovetture passate nelle due direzioni di un incrocio a X, al relativo semaforo e ad un TIMER. Normalmente il processore ogni minuto comanda il semaforo ad invertire l’abilitazione ai passaggi (da rosso a verde e viceversa). Prima di

abilitare la commutazione del semaforo, il processore legge il numero di

autovetture passate nella direzione con il verde, se il numero di auto passate in questa direzione è maggiore di 32 unità rispetto a quello dell’altra direzione

(conteggiato nell’ultimo periodo), allora il processore ritarda la commutazione del semaforo di un altro minuto.

Ogni volta che il processore legge i valori del numero di autovetture passate avverte il SCO delle periferiche di input di riazzerare il relativo contatore.

Progettare l’interfaccia del TIMER, una delle interfacce di input e l’interfaccia

della periferica che gestisce il semaforo. Inoltre progettare il software per la

gestione delle interruzioni provenienti dal TIMER.

(2)

I/O DB I/O CB

SELECT

Counter

I/O RD

CPU

I/O WR

RESET

I/O AB

sensore inc

Interfaccia del Sensore / 1

(3)

I/O DB I/O CB CPU

I/O WR

I/O AB

SELECT S Q

R Q STATUS SELECT

Q=0 => ROSSO Q=1 => VERDE

Interfaccia del Sensore / 2

SEM. DI RIFERIMENTO

SEM. NON DI RIFERIMENTO

(4)

I/O AB I/O DB I/O CB

Decoder

SELECT

START

STARTD

O.C.

IRQ

SCO R Q

S Q STATUS

STARTDEV

COMPLETE CLEAR

IVN

CPU

IACKIN

IACKOUT

IRQ

Interfaccia del Timer

(5)

org 400h ;INIZIO PROGRAMMA

timer equ 0h ; indirizzo timer

semaforo equ 1h ; indiririzzo semaforo count1 equ 2h ; indiririzzo sensore1 count2 equ 3h ; indiririzzo sensore2

flag equ 1504h ; flag=0 semaforo rosso, flag=1 semaforo verde nomore equ 1505h ; nomore=1 già ritardato, =0 è possibile ritardare lastmis dl 0 ; ultima misura dai sensori

code

jsr init

seti ; abilita PD32 ad accettare interruzioni

; setim NB: questo non va incluso perchèell'interfaccia non abbiamo incluso un ff IM main: ;...

jmp main ; NB usato solo per la simulazione!

(6)

init:

movl #0, flag movl #0, nomore

;setim timer solo simulatore start timer

ret

;DRIVER TIMER

driver 0, 600h ; Il driver della periferica con IVN=2

; inizia dall'ind. 600h push r0 ; salva contenuto di R0 push r1

push r2

movl lastmis, r1 ; carico in r1 il numero di macchine misurato nell'ultimo intervallo movb flag,r0 ; carica flag in R0

cmpb #1,r0 ; controlla se semaforo di riferimento è verde jz verde

; semaforo di riferimento attualmente rosso

inl count1, r0 ; legge valore da sensore 1, abbinato al semaforo non di riferimento outb #1, count1; resetta il contatore 1

jmp continue

verde: inl count2, r0 ; legge valore da sensore 2, abbinato al semaforo di riferimento outb #1, count2 ; resetta il contatore 2

(7)

continue:

movl r0,lastmis ; e sovrascrivo in memoria lastmis. lastims<-ultima misura movb nomore, r2

cmpb #1,r2 ; verifica se lo switch è stato già ritardato jz switch ; in tal caso forza lo switch

subl r1, r0 ; r0< - differenza tra mis(t)-mis(t-1) cmpl #32,r0 ; r0 – 32

jnc cont switch:

movb flag,r0 ; carica flag in R0 notb r0

andb #00000001b, r0

movb r0,flag ; inverte il valore del flag che memorizza lo stato del semaforo movb #0,nomore ; setta a 0 il flag nomore, inibendo ulteriori ritardi nello switch outb r0,semaforo ; setto il sem.di riferimento al nuovo stato

start timer ; riavvia il timer pop r2

pop r1 pop r0 rti

(8)

cont: movb #1, nomore ; setta a 1 il flag nomore start timer ; riavvia il timer

pop r2 pop r1 pop r0 rti

end ; FINE PROGRAMMA

(9)

Esercizio esame DMAC

(10)

I/O AB I/O DB I/O CB

Dec

SELECT

START

IRQ

SCO R Q

S Q STATUS

STARTDEV

COMPLETE

CLEAR

IVN

CPU

IACKIN

IACKOUT

IRQ

IOWR

REG

COUNTER

DEC

TC

R Q

S Q IM

SETIM CLRIM

LD

LD

OR

Interfaccia del DEVICE (timer)

(11)

I/O DB I/O CB

SELECT

REG

I/O RD

CPU

I/O WR

RESET

I/O AB

Termometro

Interfaccia DEV_TEMP

(12)

Logica dell’interfaccia del DMAC per le interruzioni

I/O AB I/O DB I/O CB

Decoder

SELECT

START

STARTD

O.C.

IRQ

SCO DMAC R Q

S Q STATUS

STARTDEV

COMPLETE CLEAR

IVN

CPU

IACKIN

IACKOUT

IRQ

(13)

PD32 DB CB

I/ O D B I/ O C B

I/ O A B

MEMORIA

SELECT

I/O WR

CAR INC

WC I/O WR

SCO DMAC

DECR TC

MBR F/F Q

O.C.

MBR

MBG

SCO VIDEO

DATO SCRITTO NEXT DATO

REG VIDEO REG

MRD

32 bit

32 bit

STATUS F/F

AB

IR Q

LD

(14)

Inizializzazione timer

; subroutine di inizializzazione parametrica, richiede il caricamento in R0 del numero

;di millisecondi dell’intervallo init: outb R0, DEVICE

start DEVICE ret

(15)

Driver timer

DRIVER 1,600h PUSH R0

INB DEVTEMP, R0 CMPB R0,#40

JN N_EQ_1 N_EQ_0:JNV NV_EQ

JMP NV_DIF N_EQ_1:JV NV_EQ

JMP NV_DIF NV_EQ: START DEVICE

POP R0 RTI

NV_DIF: CLRIM DEVICE

OUT #512, WCOUNTER ; inizializza il WCOUNTER OUT #BBBBh,CAR ; passa il valore al CAR

START DMAC ;avvia trasferimento

POP R0 RTI

(16)

Driver DMAC

DRIVER 2,700h

SETIM DEVICE START DEVICE CLEAR DMAC RTI

Riferimenti

Documenti correlati

Sono, esclusi, ad esempio, dal Superbonus - né possono esercitare l'opzione per lo sconto in fattura o per la cessione del credito corrispondente alla detrazione - gli organismi

Ieri, nella giornata in cui la Li- guria ha scampato le misure pi˘ rigide, finendo per essere collocata dal ministero della Salute nella fascia gialla dat- tenzione, lasticella

All’avviamento viene realizzato il funzionamento in Modo 1 (veicolare); il ciclo si ripete per tre volte consecutive.. Automaticamente si passa al Modo 2 (pedonale) il cui ciclo

Se viene azionato il pulsante di richiesta il cicolo veicolare prosegue sino al suo termine, poi si passa a quello pedonale per una volta al termine di questo si torna al

Se in diurno viene prenotata la richiesta di attraversamento pedonale con l’azionamento di PRP la sequenza veicolare di Modo 1 prosegue sino al suo termine, dopo di

 Il suo valore assoluto indica il numero di processi in coda sul semaforo. 

[r]

Una scatola contiene un numero di palline rosse, nere e blu pari rispettivamente a :..  Giorno