En la siguiente practica denominada “Entrada/Sali “Entrada/Salida” da”
se
procederá a introducir al estudiante al aprendizaje y manejo de los diferentes circuitos que permiten de manera auxiliar la comunicación entre dispositivos de entrada y salida con el microprocesado microprocesador. r.
omo es sa!ido con anterioridad el microprocesador por si solo puede encargarse de realizar operaciones matemática matemáticas s aritm"ticas y para este manejar a!solutamente cualquier otra cosa necesita de auxiliarse de# memorias$ !uses$ unidades de almacenamiento utilizando lógica de c%ip select entre otros.
&ara esta práctica se proceder" a interactuar con el microprocesador microprocesado r manejando entrada o salida utilizando el circuito 'integrado( )*++ el cual es una interfaz perif"rica programa!le utilizada com,nmente en muc%os sistemas para manejar todo lo antes mencionado.
&or lo tanto$ con el dispositivo anterior se procederá a desarrollar un sistema que permita simular un cronometro digital programa!le. Este al iniciar el sistema de!erá de desplegar en pantalla un mensaje indicando que empezara el conteo para despu"s proceder
a l la a par parte te d de e la
configuración de los minutos y segundo del dispositivo.
-na vez configurado la cantidad de minutos y segundos el sistema contara con un !otón de start/stop el cual comenzara a decrementar el reloj y detener el reloj en cualquier comento as como un !otón de reset que permita poner la cuenta original.
&1 P & & c co omo sal salida$ ida$ &3 como entr entra ada onfigurar )*++
Esperar aproximadamente 4ms
call retardo mov dx$&1 call retardo
0ireccion del puerto 1 Esperar aproximadamente 4ms
call retardo mov al$=2% or al$222222>2! out dx$al
and al$>>>>>>2>! out dx$al
omando de inicialización &oner EQ en > Escri!ir a la l0
&oner EQ en 2 y no alterar el adato Escri!ir a la l0
call retardo call retardo
Esperar aproximadamente 4ms
call retardo mov al$=2%
omando de inicialización
or al$222222>2!
&oner EQ en >
out dx$al
Escri!ir a la l0
and al$> al$>> >>>>> >>>>2 2>! out dx$al call retardo call retardo
&on &oner EQ en en 2 y n no o a al ltera terar r e el l a ada dat to Escri!ir a la l0 Esperar mas de >22us
mov al$=2%
omando de inicialización
or al$222222>2!
&oner EQ en >
out dx$al
Escri!ir a la l0
and al$> al$>> >>>>> >>>>2 2>! out dx$al
&on &oner EQ en en 2 y n no o a al ltera terar r e el l a ada dat to Escri!ir a la l0
call retardo
Esperar mas de >22us
call retardo mov al$*2%
omando de inicialización
or al$222222>2! out dx$al
&oner EQ en > Escri!ir a la l0
and al$> al$>> >>>>> >>>>2 2>! out dx$al
&on &oner EQ en en 2 y n no o a al ltera terar r e el l a ada dat to Escri!ir a la l0
call retardo
Esperar mas de >22us
call retardo mov al$*)%
:nicilizar 70 con dos lines y +x>2 dots
call lcdDIcmd mov al$2)%
omando de inizializacion
call lcdDIcmd mov al$2>%
Amando de inizializacion
call lcdDIcmd mov al$28% call lcdDIcmd
:ncrementar el cursor y display ena!le
mov al$2f%
Encernder display$ %a!itlar cursor !linOing
call lcdDIcmd mov al$2>% call lcdDIcmd pop dx ax ret lcdDinit endp lcdDgotoxy proc
7impiar la pantalla
add al$)2%
Sumar )2% a al.
call lcdDIcmd ret
7lamar a lcdDIcmd 6etornar
lcdDgotoxy endp
deci proc
add al$=2%
ret deci endp lcdDIcmd proc pus% dx ax mov dx$&1
Salvar contexto 0ireccion del puerto 1
mov a%$al and al$2N2% or al$222222>2! out dx$al and al$>>>>>>2>! out dx$al call retardo mov al$a% rol al$4
o!tener parte mas significativa &oner ena!le en > Escri!ir a 70 &oner ena!le en 2 Escri!ir parte alta del comando a la 70 Esperar mas de >22us 6estaurar comando orginal A!tener parte menos significativa
and al$2N2% or al$222222>2! out dx$al and al$>>>>>>2>! out dx$al call retardo
&oner ena!le en > Escri!ir a 70 &oner ena!le en 2 Escri!ir parte !aja del comando a la 70 Esperar mas de >22us
pop ax dx ret lcdDIcmd endp lcdDdata proc pus% dx ax mov dx$&1
Salvar contexto 0ireccion del puerto 1
mov a%$al
uardar dato original
and al$2N2% or al$222222>>!
o!tener parte mas significativa Ena!le en > P 6S en >
out dx$al and al$>>>>>>2>! out dx$al ca call ll re reta tard rdo o mov al$a% rol al$4
Escri!ir a 70 Ena!le en 2 P 6S en > Escri!ir parte alta del dato a 70 E Esp sper erar ar ma mas s de >2 >22u 2us s 6estaurar dato original A!tener parte menos significativa
and al$2N2% or al$222222>>! out dx$al and al$>>>>>>2>! out dx$al ca call ll re reta tard rdo o
Ena!le en > P 6S en > Escri!ir a 70 Ena!le en 2 P 6S en > Escri!ir parte !aja del dato a 70 E Esp sper erar ar ma mas s de >2 >22u 2us s
pop ax dx
6estaurar contexto
ret lcdDdata endp
retardo proc pus% !x pus% cx
salvar registo salvar registo
mov !x$2
inciar un contador en 2
ret2# mov cx$2 ret>#
%acer dos conteos anidados iniciar contador *
inc cx
incrementadr contador *
cmp cx$422 jne ret> inc !x
comparar para ver si se realizo incrementar contador >
cmp !x$> jne ret2 pop cx
%acer el conteo nuevamente
pop !x
restaurar el registro
restaurar el registro
ret retardo endp retardo* proc pus% !x
salvar registo
pus% cx
salvar registo
mov !x$2
inciar un contador en 2
ret2*# mov cx$2
%acer dos conteos anidados iniciar contador *
ret>*# inc cx
incrementadr contador *
cmp cx$>222
comparar para ver si se realizo
jne ret>* inc !x cmp !x$*2 jne ret2* pop cx pop !x ret
incrementar contador > %acer el conteo nuevamente restaurar el registro restaurar el registro
retardo* endp
lcdDcursoron proc pus% cx ax !x mov al$2E%
uardar ontexto @over 2e% a al.
call lcdDIcmd
7lamar a lcdDIcmd
pop cx ax !x ret lcdDcursoron endp
6ecuperar contexo 6etornar
lcdDcursoroff proc pus% cx ax !x mov al$2c%
uardar ontexto @over 2c% a al.
call lcdDIcmd
7lamar a lcdDIcmd
pop cx ax !x ret lcdDcursoroff endp
6ecuperar contexo
lcdDclear proc pus% cx ax !x mov al$2>%
uardar ontexto @over 2>% a al.
call lcdDIcmd
7lamar a lcdDIcmd
pop cx ax !x ret
6ecuperar contexo
lcdDclear endp .exit RRRRRRRRR Qo more code afte t%is line
end
start
Diagrama de Flujo:
0AS entry point is start
Figura #2
Conclusión:
&ara finalizar la práctica se puede concluir que se pudieron cumplir con todos los requisitos planteados al
principio de esta ya que se pudo desarrollar un programa que cumpliera con los o!jetivos planteados al inicio de esta.
El microprocesador )2)8$)2)) es un dispositivo que por si solo puede manera ,nicamente operaciones aritm"ticas por lo tanto para para est esta a práct práctica ica se tuvo que ut utilizar ilizar un )*++ el cual es una interfaz mediante la cual se pudieron conectar tantos los !otones a utilizar como la pantalla led y las !ocinas en conjunto con el led.
0espu"s de conectados todos los !otones y dispositivo de salida se procedió a primeramente configurar cada uno de los puertos del )*++ configurando el &1 y & como salida ya que en estos esta!a conectados la pantalla led y las !ocinas los cuales se activa!an en un determinado momento.
El puerto &3 tuvo que configurarse como entrada ya que en este se conectan cada uno de los !otones que i!an a realizar las diversas funciones dentro del programa su!ir$ !ajar$ cam!iar cursor$ start /stop leyendo el puerto con la instrucción :Q y enviando esta lectura a al. &or lo tanto$ despu"s de que al o!tuviera este valor dentro de una función se compara con la instrucción test el contenido de al con la com!inación !inaria que resulta!a al presionar el !otón y cuando resulta!a verdadero saltara a la etiqueta determinada.
Se procedieron a crear cuatro contadores las cuales i!an a ser aumentados o decrementados por los !otones de -&/0A
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.