Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;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. L'evento del ritardo può verificarsi una volta soltanto.
- ;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.
- org 400h
- carleft equ 0h
- carright equ 1h
- tlights equ 2h
- timer equ 3h
- flag equ 1000h
- lastcount dl 1100h
- commute db 0
- code
- main: jmp main
- halt
- driver 3, 700h
- push R0
- push R1
- push R2
- push R3
- push R4
- movl flag, R0
- movl lastcount, R1
- cmpb #1, R0
- jz green
- inl carleft, R2
- outl #0, carleft
- jmp proceed
- green: inl carright, R2
- outl #0, carright
- proceed: movl lastcount, R3
- subl #32, R3
- cmpl R3, R2
- jn switch
- movb commute, R4
- subb #0, R4
- jnz switch
- movb #1, commute
- jmp recover
- switch: movb #0, commute
- movb flag, R4
- cmpb #0, R4
- jz setgreen
- movb #0, flag
- movl #0, carright
- movl carleft, lastcount
- jmp recover
- setgreen: movb #1, flag
- movl #0, carleft
- movl carright, lastcount
- recover: pop R4
- pop R3
- pop R2
- pop R1
- pop R0
- rti
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement