Você está na página 1de 6

Laboratrio de Microprocessadores

Experincia 3 Semforo
Relatrio Final
Alunos: Mariana Rego Monteiro
Srgio Martins Monteiro
Objetivo
Desenvolver a capacidade de programao em Assembly e de integrao entre
hardware e software
escri!"o da Experincia
A e!peri"ncia trata de construo de um sistema #ue simule o tr$fego de
ve%culos em uma rua e controle um sem$foro & sem$foro ser$ reali'ado por
meio de ()Ds e a simulao de tr$fego ser$ feita por meio de dois sensores
*ticos
& sem$foro constitu%do de um ()D vermelho+ um amarelo e um verde
& sistema composto pelos sensores *ticos e pelo sem$foro simular$ uma
situao em #ue se disp,e de dois sensores pr*!imos ao sem$foro+ como
indicado na figura abai!o
Sensor - Sensor .
& sem$foro deve ser controlado da seguinte forma: #uando o n/mero de
ve%culos entre os sensores alcanar o valor -0 1de'2 o sem$foro deve abrir3
#uando o n/mero de ve%culos alcanar o valor 4 1cinco2 o sem$foro fecha Ao
fechar+ antes de acender a lu' vermelha+ o sem$foro deve ficar pelo menos dois
segundos com a lu' amarela acesa
Experincia #rtica
5nicialmente fi'emos o circuito controlando cada l6mpada em um endereo
diferente Descobrimos+ porm+ #ue poder%amos usar apenas um endereo+
codificando o acendimento das l6mpadas pelo barramento de dados Assim
economi'ar%amos endereos e a l*gica necess$ria era bem mais simples Assim
foi feito tambm com as entradas fornecidas com os sensores 7odos os
sensores so conectados a um /nico endereo e seus dados so tratados de
acordo com seus valores no barramento de dados 8om isso montamos o
seguinte circuito controlador do sem$foro Ap*s a figura est$ listado o c*digo
assembly usado para controlar o hardware
8odseg Segment
Assume 8S:8odseg+ SS:8odseg+ DS:8odseg
Start: 9mp 5nicio
Status D: 0;
Ant<s- D: 0;
Ant<s. D: 0;
5nicio: mov a!+cs
mov ds+a!
mov bp+0
mov si+0
call vermelho
roda: call trafego
9mp roda
verde proc near
mov d!+ =000;
mov a!+ 0>;
mov Status+ a!
out d!+a!
ret
verde endp
amarelo proc near
mov d!+=000;
mov a!+04;
out d!+a!
mov Status+a!
ret
amarelo endp
vermelho proc near
mov d!+=000;
mov a!+0?;
out d!+a!
mov Status+a!
ret
vermelho endp
atraso proc near
mov c!+>A@A;
delay: mov b!+.
mov d!+0
mov a!+.
idiv b!
mov d!+0
mov b!+.
mov a!+.
idiv b!
loop delay
ret
atraso endp
abre proc near
mov a!+Status
cmp a!+0>;
9' fim<abre
call amarelo
call atraso
call verde
fim<abre: ret
abre endp
fecha proc near
mov a!+Status
cmp a!+0?;
9' fim<fecha
call amarelo
call atraso
call vermelho
fim<fecha: ret
fecha endp
le<s- proc near
mov d!+=00-;
in a!+d!
and a!+0-;
ret
le<s- endp
le<s. proc near
mov d!+=00-;
in a!+d!
and a!+0.;
ret
le<s. endp
le<sensor<- proc near
call le<s-
cmp a!+0-;
9n' 'era<as-
mov a!+Ant<s-
cmp a!+-
9' sai<le<sensor<-
inc si
mov Ant<s-+-
9mp sai<le<sensor<-
'era<as-: mov Ant<s-+0
sai<le<sensor<-: ret
le<sensor<- endp
le<sensor<. proc near
call le<s.
cmp a!+0.;
9n' 'era<as.
mov a!+Ant<s.
cmp a!+-
9' sai<le<sensor<.
dec si
mov Ant<s.+-
9mp sai<le<sensor<.
'era<as.: mov Ant<s.+0
sai<le<sensor<.: ret
le<sensor<. endp
trafego proc near
call le<sensor<-
call le<sensor<.
cmp si+04;
9' fechar<neguinho
cmp si+0A;
9n' sai<trafego
call abre
9mp sai<trafego
fechar<neguinho: call fecha
sai<trafego: ret
trafego endp
8odseg )ndS
)nd Start
)ste circuito foi preparado para acender e controlar e#uipamentos eletrAnicos
como ()DBs 8aso #uisssemos controlar um sem$foro real com l6mpadas
verdadeiras de ..0C dever%amos usar um rel #ue atenda as nossa
necessidades & circuito ento serviria apenas para controlar o acendimento e o
rel fecharia o contato com a linha de ..0C para acender a l6mpada Abai!o
temos o circuito adaptado