Gestione delle subroutine - PowerPoint PPT Presentation

About This Presentation
Title:

Gestione delle subroutine

Description:

... (t-1) cmpl #32,r0 ; r0=32 N == V jv vset jnn cont ; altrimenti v=0, e se n=0 -- r0=32 jmp switch ; r0 r0 ... – PowerPoint PPT presentation

Number of Views:118
Avg rating:3.0/5.0
Slides: 17
Provided by: OPNE5
Category:

less

Transcript and Presenter's Notes

Title: Gestione delle subroutine


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 labilitazione 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 dellaltra direzione (conteggiato
nellultimo 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 linterfaccia
del TIMER, una delle interfacce di input e
linterfaccia della periferica che gestisce il
semaforo. Inoltre progettare il software per la
gestione delle interruzioni provenienti dal TIMER.
2
Interfaccia del Sensore / 1
I/O AB
CPU
I/O DB
I/O CB
I/O RD
I/O WR
SELECT
inc
RESET
Counter
sensore
3
Interfaccia del Sensore / 2
I/O AB
CPU
I/O DB
I/O CB
I/O WR
Q0 gt ROSSO Q1 gt VERDE
SELECT
SELECT
4
Interfaccia del Timer
IRQ
CPU
I/O AB
I/O DB
I/O CB
START
CLEAR
IACKIN
IRQ
IVN
STARTD
Decoder
O.C.
SELECT
COMPLETE
SCO
STARTDEV
IACKOUT
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 buffer equ 1500h indirizzo buffer
di scambio flag equ 1504h flag0 semaforo
rosso, flag1 semaforo verde nomore equ 1505h
nomore1 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, buffer movl 0, flag movl 0,
nomore setim timer solo simulatore start
timer ret DRIVER TIMER driver 0, 600h Il
driver della periferica con IVN2 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. lastimslt-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 r0lt-differenza tra
mis(t)-mis(t-1) cmpl 32,r0 r0gt32 ltgt N
V jv vset jnn cont altrimenti v0, e se n0
--gt r0gt32 jmp switch r0 lt32 vset jn cont
v1, n1 --gt r0gt32 gt no switch switch
else switch movb flag,r0 carica flag in
R0 notb flag,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 a verde 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
Interfaccia del DEVICE (timer)
CPU
IRQ
I/O AB
I/O DB
I/O CB
IRQ
START
IOWR
SETIM
CLRIM
CLEAR
IACKIN
REG
IVN
LD
Dec
SELECT
OR
COMPLETE
SCO
STARTDEV
IACKOUT
DEC
LD
TC
COUNTER
11
Interfaccia DEV_TEMP
I/O AB
CPU
I/O DB
I/O CB
I/O RD
I/O WR
SELECT
RESET
REG
Termometro
12
Logica dellinterfaccia del DMAC per le
interruzioni
IRQ
CPU
I/O AB
I/O DB
I/O CB
START
CLEAR
IACKIN
IRQ
IVN
STARTD
Decoder
O.C.
SELECT
COMPLETE
SCO DMAC
STARTDEV
IACKOUT
13
AB
PD32
DB
MEMORIA
CB
32 bit
I/O WR
INC
CAR
32 bit
LD
REG VIDEO
REG
SELECT
DECR
MRD
WC
I/O WR
TC
DATO SCRITTO
Q
MBR
SCO DMAC
SCO VIDEO
NEXT DATO
MBR F/F
IRQ
I/O AB
O.C.
MBG
I/O DB
I/O CB
STATUS F/F
14
Inizializzazione timer
subroutine di inizializzazione parametrica,
richiede il caricamento in R0 del numero di
millisecondi dellintervallo 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_0JNV NV_EQ JMP
NV_DIF N_EQ_1JV 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
Write a Comment
User Comments (0)
About PowerShow.com