Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Problemas Digital PDF
Problemas Digital PDF
Profesor :
J. Javier Quintana Peir
Registro Legal de propiedad de autor :
AB-482-2002
CDU: 621.3 (076)
Indice :
1 Problemas puertas lgicas, karnaugh ... __________________________________ 5
1.1 Enunciados ____________________________________________________________ 5
1.2 Solucin a los problemas de puertas lgicas, karnaugh ... ______________________ 8
9 Problemas de memorias.______________________________________________ 99
9.1 Enunciados ejercicios de memorias _______________________________________ 99
9.2 Soluciones ejercicios de memorias _______________________________________ 101
Tabla b)
n
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
b
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
c
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
d) F a b c a
abc abc
f) F abc a
e) F
1.2 SOLUCIN
KARNAUGH ...
1.
LOS
PROBLEMAS
DE
PUERTAS
LGICAS,
a) ( ab) ( c d )
b) F (( a b) (( a b)(bc )))( ((bc ) ( cd ))
2.
n
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
b
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
c
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1 (a+b)'
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
2 a+b
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
3 bc
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
4 nand 1 3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
5 or 2 4
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
6 cd'
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
7nor 6 3
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
1
F nand 5 7
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
0
5. a)
b)
F ( a b c )( a b c )( a b c )( a b c )
En MINitrminos
F abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd
En MAXitrminos
F ( a b c d )( a b c d )( a b c d )( a b c d )( a b c d )( a b c d )
6.
a) F a ba a a a 1
b) F abc abc abcd ac ac abc ac abc ac
c) F ab( abc abc ) ab( ab ab) abab ab
d) F a b c a 1 b c 1
e) F abc abc a(bc ) a(bc ) a
7.
10
F ( a b)( c da ) cd ( c d )( a b( c d ))
( a b)( c da ) cd ( c d )( a b( c d ))
( a b)( c da ) * cd * ( c d )( a b( c d ))
( a * b)( c * da ) * cd * ( c * d )( a * b( c d ))
( a * b)( c * da ) * cd * ( c * d )( a * b( c * d ))
Y el dibujo sera de la siguiente forma ...
8.
11
b)
c)
F a bc (b c )( a b( c d )) a bc (b c )( a b( c d ))
a b c (b c ) ( a b( c d )) a b c (b c ) ( a b( c d ))
a b c (b c ) ( a b ( c d ))
12
10. La solucin del problema pasa por considerar algunos como unos
11. Aqu lo que hay que hacer es una tabla de verdad con su correspondiente tabla de karnaugh :
I1I2 I3 I4
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Q1
0
0
0
1
0
1
1
1
0
1
1
1
1
1
1
1
I1 I2\I3 I4
00
01
00
0
0
01
0
1
11
1
1
10
0
1
La funcin es simplificando
F=I3I4+I1I2+I2I3+I2I4+I1I3+I1I4
11
1
1
1
1
10
0
1
1
1
12 Aqu lo que hay que hacer es una tabla de verdad con su correspondiente tabla de karnaugh :
I1I2 I3 I4
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Q1
x
0
x
1
0
0
1
1
x
0
x
1
1
1
1
1
I1 I2\I3 I4
00
01
00
X
0
01
0
0
11
1
1
10
X
0
La funcin es simplificando
Q1=I3 + I1I2
11
1
1
1
1
10
X
1
1
X
13
13. La tabla de verdad y las funciones de karnaugh ya simplificadas y pasadas a puertas NAND es
15. La funcin simplificada queda F=ab+cd pero para pasarla a puertas NOR hay que hacer Morgan :
14
17. El circuito tiene como solucin F a * c b * d que al pasar en puertas NAND queda el circuito
de la derecha, pero usando la lgica negativa, nos ahorramos 4 puertas NOT con el circuito de la derecha.
15
DECIMAL
35
HEXADECIMAL
BCD
100100011
BC
11111011
74
101000111
2748
110110100100
5D
101000000
2.- Pasar a decimales
BINARIO
0.1
DECIMAL
0.1111
0.808
0.0101
0.616
0.587
0.1
16
5. Dibuja el estado de los leds y el valor del display: (la salidas del 7447 son a nivel bajo, por eso se han
negado cada entrada del display) Chips 74148 7447
7. Mostrar el estado de los leds de la figura (E=Entrada de datos) Chipis 7442 7485
8. Supongamos un sistema de alarma de tres interruptores a b y c, cuando esten los tres en Off, o slo el b
On tiene que activarse la alarma, el caso contrario tambin, es decir cuando esten los tres On o slo el b
Off.
a) Realizar el circuito con el Decodificador 74138 y puertas NAND n entradas libre.
b) Realizar el circuito con el Decodificador 7442 y puertas NAND de 2 entradas
c) Realizar el circuito con el MUX 74151
d) Con un MUX genrico de 4 canales a 1
9. Teniendo en cuenta slo las entradas a b c y d realizar un programa que F=0 si el nmero de
interruptores activados superan o igualan al nmero de interruptores desactivados. F=1 en caso contrario.
a) Realizar el circuito con el Decodificador 74159 y puertas NAND n entradas libre.
b) Realizar el circuito con el Decodificador 7442 y puertas NAND de 2 entradas
c) Realizar el circuito con el MUX 74150
d) Realizar el circuito con el MUX 74151
17
12. Deducir la tabla de verdad del circuito combinacional msi de la figura (fijarse bien) :
Problema 12
Problema 13
Problema 14
Problema 15
18
Decodificador 74138 de 3 a 8
Decodificador 74159 de 4 a 16
Decodificador 74139 2x de 2 a 4
19
DECIMAL
35
123
188
251
74
147
2748
13492
93
140
HEXADECIMAL
23
7B
BC
FB
4A
93
ABC
DA4
5D
8C
BCD
0011 0101
0001 0010 0011
0001 1000 1000
0010 0101 0001
0111 0100
101000111
0010 0111 0100 1000
1 0011 0100 1001 0010
1001 0011
101000000
BINARIO
DECIMAL
0.1
0.5
0.1100
0.808
0.1111
0.9375
0.1001
0.616
0.0101
0.3125
0.1001
0.587
0.0011
0.1
20
5.- El bit ms alto activo en la entrada del codificador 74148 es el 3 = 011, que
negado es el 100=4 este nmero lo recibe el decodificador a displays 7447 que
visualizar el n4.
6. El 74151 es un MUX de 8 canales, y como se puede ver la seleccin esta con el estado CBA=100 = 4
es decir que la salida Y ser el canal D4 que como esta a '0' entonces esta apagado, w como es y negada,
entonces encendido.
El 74150 es un MUX de 16 canales, el estado de seleccin es DCBA=1110=14 luego la salida es el canal
E14 que es '0' como W es la salida negada, esta encendido.
7. El 7442 funcionando como DEMUX la entrada de datos lo tiene por el pin 'D' luego como en la
seleccin CBA=001=1 slo el pin 1 mostrar el estado de la entrada, como el interruptor esta bajado,
mostar un '0'
El Comparador 7485 tiene de entradas A=1101=13 y en B=0100=4 luego B<A.
21
9. a) Para hacerlo con el Decodificador 74159 tenemos que poner en las entradas la tabla de verdad del
problema, y los pines de selecccin ponerlo segn el orden que hemos elegido en la tabla de verdad, si 'd'
es el de menor peso, entonces, le corresponde el pin 'A0' del 74159 como vemos en el dibujo. La salidas
son negadas, luego puerta NAND.
22
c) Con el 74150 es un MUX de 16 canales, luego lo que hay que poner es la tabla de verdad en todos los
canales, y en la seleccin, como en la tabla de verdad el 'd' es el de menor peso, le corresponde el pin 'A'
de seleccin :
La salida es negada, por eso se ha aadido una puerta NOT en la entrada, si se quiere ahorar esa puerta
NOT se puede pero poniendo la tabla de verdad al revs :
d) Con el 74151 al ser un MUX de 8 canales, en cada canal hay que poner la relacin que tiene la funcin
F con la variable de menor peso, en este caso, si vemos la tabla de verdad, con la variable 'D', si vemos la
tabla, hay que poner los '0' '1' 'D' o 'Dnegada' donde corresponda.
10. Hay que realizar la tabla de verdad, y como el 74151 es un MUX de 8 canales, la funcin se tiene que
construir segn la relacin con la variable de menor peso de la tabla de verdad ('D'), y ponerlo en los
canales de entrada, las variables de seleccin se ponen segn el peso de la tabla, si vemos 'A' es el de
mayor peso, por lo tanto se coloca en el 'C' de mayor peso del 74151:
23
11. Como podemos ver, lo que hay que hacer es poner las combinaciones de los canales contando slo las
variables 'a' 'b' y 'c', en este orden, pues el 'a' esta puesto en el pin de mayor peso del 74151. Como el
74151 es un MUX la tabla de verdad refleja lo puesto en los canales, ya sea '0' '1' 'd' o ' d '
12. El resultado est en ver cmo la entradas 'A' 'B' 'C' y 'D' estan puestos en distinto orden de peso en el
mux 74150 luego a pesar que el 'A' esta puesto en el 'A' lo convierte en la variable de menor peso, y si 'D'
esta puesto en el 'D' lo combierte en la variable de mayor peso, por esto la tabla de verdad esta cambiado
el orden de las variables.
Por ltimo, como la salida W del 74150 esta negado, los canales saldrn invertidos, por eso se ensea la
columna F negada que es la de los canales de entrada y F sin negar, que es la negacin de sta ltima.
13 En este caso es un decodificador dcadas, como las salidas estan negadas, y la puerta lgica es una
puerta NAND la tabla de verdad ser un '1'
donde esta conectado, el resto '0' incluso los
pines que no existen (del 10 al 15)
14 Se trata de una ampliacin de
Decodificadores, con decodificador de 2 a 4 se
ha ampliado a Dedodificador de 8 a 16, el
primero tiene la seleccin ms alta, y habilita
cual de los 4 decodificadores de abajo funciona
y realiza la decodificacin.
15 Para realizar una ampliacin de MUX el de abajo (que tiene la parte alta de la seleccin) seleccina el
canal de salida de los
MUX de arriba que
tienen la seleccin
ms baja.
24
25
26
7. Hay que fijarse en aadir 0 en el nmero ms pequeo para igualarse con el ms grande, poner los bits
de signo y pasar el nmero negativo a complemento uno
111
60
0000111100
00000111100
725
1011010101
10100101010
-665
1 10101100110
0
10101100110
pasandolo a C1 =>
- 1010011001 = - 665
8. Hay que fijarse en aadir 0 en el nmero ms pequeo para igualarse con el ms grande, poner los bits
de signo y pasar el nmero negativo a complemento uno y despues sumarle un uno, el acarreo del final se
desprecia.
1111
1
725
1011010101
01011010101
-60
0000111100
1111000011
11111000100
665
1 01010011001 = 665
9. Hay que fijarse en aadir 0 en el nmero ms pequeo para igualarse con el ms grande, poner los bits
de signo y pasar el nmero negativo a complemento uno y despues sumarle un uno
60
725
-665
0000111100
1011010101
0100101010
pasandolo a C1 ===>>
y sumndole 1=>
00000111100
10100101011
0 10101100111
-1010011000
1010011001 = - 665
27
13. Hay que pasar los nmeros a BCD y el nmero negativo hacer el C9 con el bit de signo
correspondiente:
1 1
11 1 11 111
6257
6257
0 0110 0010 0101 0111
- 5356
=> C9 => 4643
1 0100 0110 0100 0011
0901
1 0 1010 1001 1010 1010
0110
0110 0110
0000
0000 0000
1
0 0000 1001 0000 0001 = + 0901
14. Hay que pasar los nmeros a BCD y el nmero negativo hacer el C9 con el bit de signo
correspondiente:
1111 111 1
11
5356
5356
0 0101 0011 0101 0110
- 6257 => C9 => 3742
1 0011 0111 0100 0010
-901
0 1 1001 1010 1001 1000
0110
0000
0
1 1001 0000 1001 1000 = -9098 =>C9=> - 0901
=>
=>
<=
16 - Lo mejor es pasarlo a binario, y realizar la resta en binario, elegimos hacer en C2 aunque se puede
hacer en C1
4AFC
- 4ACF
+ 002D
=>
=>
<=
17 - Lo mejor es pasarlo a binario, y realizar la resta en binario, elegimos hacer en C2 aunque se puede
hacer en C1
068
- FB8
- F50
=>
=>
<=
=>C2=>
<=C2<=
28
Qn
Qn
Qn-1
Qn-1
0
1
1
0
1
0
Qn
Qn
Qn
REGISTROS
29
4.2 ENUNCIADOS
BIESTABLES
DE
PROBLEMAS
DE
CRONOGRAMAS
DE
2.- Dibujar la forma de onda de salida del siguiente Biestable RS sncrono por nivel
3.- Dibujar la forma de onda de salida del siguiente Biestable RS sncrono por flanco de bajada.
4.- Dibujar la forma de onda de salida del siguiente Biestable JK sincrono por nivel
5.- Dibuja la forma de onda de salida del siguiente biestable JK Snclono por flanco de subida
6.- Dibuja la forma de onda de salida del siguiente biestable JK sncrono por flanco de bajada (el reloj
est negado, por eso es por flanco de bajada)
7.- Dibuja la forma de onda de salida del siguiente biestable JK sncrono por los dos flancos (masterslave)
8.- Dibuja la forma de onda de salida del siguiente biestable T sncrono por flanco de subida
30
10 Dibuja la forma de salida del siguiente biestable D sncrono por flanco de subida
31
PE1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0111
0101
0101
1111
0101
1101
0011
0011
0000
0000
0000
0110
0101
0000
SI
clk
1110
1101
1100
0010
1101
1111
1100
0011
0000
1001
0000
1111
1111
0000
1
0
1
0
1
0
0
1
0
1
0
1
0
0
estado interno
salida
QA QB QC QD
Out
S/L' S.I.
0
1
1
0
1
0
1
1
1
1
1
0
1
0
1
0
0
1
1
1
ABCDEFGH
01000101
01011100
11010101
00110011
00001100
01001100
01100001
00110101
00110011
00001100
estado interno
out
QA QB QC QD QE QF QG QH
comentarios
32
CLK1
CLK2
ABCD
0101
0100
0100
1011
1010
1110
1111
Qb Qc Qd 0
Qb Qc Qd 0
0000
Qb Qc Qd 1
Qb Qc Qd 1
0010
salida
QA QB QC QD
comentarios
CLK S0 S1
01
11
01
01
10
10
10
0
10
10
01
00
11
10
11
01
01
SR
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
A B C D SL
0111
1
0010
0
0100
0
0101
0
0101
1
0101
1
0101
0
0101
0
0101
0
0101
0
0101
0
0111
1
0101
1
0101
1
1111
1
1111
1
QA QB QC QD
comentario
21 Cmo haras un juego de luces con el 74194 de tal manera que un 1 siempre circulase?
33
4.4 SOLUCIONES
BIESTABLES
LOS
PROBLEMAS
DE
CRONOGRAMAS
DE
1. Hay que tener en cuenta que cuando R=S=1 no esta definido, esto se representar por 'x' la salida Q
negada no se ha dibujado, es la misma que la Q pero inversa.
2. Aqu slo tiene que hacer caso al nivle del reloj, si R=S=1 no esta definido, se ha representado en vaco
por simplicidad.
3.- Igualmente la solucin es como el ejercicio anterior, pero ahora hay estados que son ms pequeos
que el reloj, luego durante el nivel alto, pueden haber variaciones.
4.- En un biestable JK por nivel hay que tener en cuenta que cuando J=K=1 entonces el biestable se
'vuelve loco' cambiando constantemente de '0' a '1' luego el estado final que sale despues del nivel del
reloj no se sabe cual es, 'x' :
5.- Evidentemente, si no nos dijeran nada, el biestable es por flanco de subida pues el reloj no esta
negado, ahora como es activo por flanco, el biestable no puede dar indeterminacin nunca:
8. Este es el dibujo, hay que recordar que si T=0 no cambia, y si T=1 cambia
9.- El biestable D su salida es igual que la entrada slo cuando lo permite el reloj
34
15 Los biestables JK puestos en cascada tal y como esta en el problema, se convierten en un registro
SIPO por lo que los estados siguen a la entrada desfasados un lugar, segn las rdenes del reloj en flanco
de bajada pues la entrada CLK de cada biestables esta negado :
16 La solucin es :
35
17 La solucin es :
ENTRADAS
CL
PE1
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
18 La solucin es :
Entrada
cl' clk
1 X
1
1
1
1
1
1
0
0
1
1
S/L' S.I.
0
1
1
0
1
0
1
1
1
1
1
0
1
0
1
0
0
1
1
1
0111
0101
0101
1111
0101
1101
0011
0011
0000
0000
0000
0110
0101
0000
ABCDEFGH
01000101
01011100
11010101
00110011
00001100
01001100
01100001
00110101
00110011
00001100
estado interno
salida
SI
clk
QA QB QC QD
Out
1110
1101
1100
0010
1101
1111
1100
0011
0000
1001
0000
1111
1111
0000
1
0
1
0
1
0
0
1
0
1
0
1
0
0
0000
0101
1010
0101
0101
0010
0001
0001
0000
1001
0100
1010
1010
0101
0
1
0
1
1
0
1
1
0
1
0
0
0
1
estado interno
out
QA QB QC QD QE QF QG QH
01000101
00100010
00010001
00010001
10001000
01000100
00100010
00000000
00110011
10011001
Q
1
0
1
1
0
0
0
0
1
1
comentarios
carga
quieto
quieto
clear
carga
19 La solucin es :
entrada
MC
SI
ABCD
Salida
QA QB QC QD
comentarios
CLK1
CLK2
0101
0101
carga
0100
0010
0100
1001
1011
0100
1010
0100
quieto
1110
0010
1111
0010
quieto
Qb Qc Qd 0
0100
Qb Qc Qd 0
1000
0000
0100
Qb Qc Qd 1
1001
Qb Qc Qd 1
1001
quieto
0010
0010
carga
36
20 La solucin es
cl'
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
CLK S0 S1
01
11
01
01
10
10
10
0
10
10
01
00
11
10
11
01
01
SR
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
A B C D SL
0111
1
0010
0
0100
0
0101
0
0101
1
0101
1
0101
0
0101
0
0101
0
0101
0
0101
0
0111
1
0101
1
0101
1
1111
1
1111
1
QA QB QC QD
0000
0010
0001
0000
0001
0011
0110
0110
1100
1110
1110
0000
1101
0101
0101
1010
comentario
clear
carga
quieto
quieto
clear
carga
quieto
21 La solucin est en que primero carge un 1000 y que luego circule ese '1', para cargar S1S0 tiene que
estar a 11 y para que circule tiene que estar en '01' luego cuando se active el interruptor 'c' empezar a
circular, para que circule indefinidamente la salida 'Qd' se ha conectado con la entrada 'SR' y as vuelve a
entrar.
37
5 Problemas de contadores
5.1 ENUNCIADOS DE EJERCICIOS DE CONTADORES
38
2 Seran 5 biestables JK
Biestable
J
K
CLK
Q
QNEG PRneg CLneg
1
1
1
Clock externo
Salida Q0 y clk 2
n.c.
1
Aut
2
1
1
Q0
Salida Q1 y clk 3
n.c.
1
Aut
3
1
1
Q1
Salida Q2 y clk 4
n.c.
1
Aut
4
1
1
Q2
Salida Q3 y clk 5
n.c.
1
Aut
5
1
1
Q3
Salida Q4
n.c
1
Aut
Aut = Resistencia a Vcc de 10k Condensador a masa de 1 por ejemplo
3 Seran 4 biestables JK
J
K
CLK
1 1
1
Clock ext
2 1
1
Q0
Q
Salida Q0 y clk 2
Salida Q1 y clk 3
QNEG
n.c.
n.c.
PRneg
1
1
CLneg
Salida pta
Salida pta
1 Todas las salidas Q3 Q2 Q1 Q0 pueden conectarse a un 7448 y a un display para poder visualizar los
nmeros
39
3 1
1
Q1
Salida Q2 y clk 4
4 1
1
Q2
Salida Q3
Salida pta= Puerta NAND entrada Q3 y Q1
Detecta el 10 =1010 y carga el 0=0000
4 Seran 3 biestables JK
J
K
CLK
Q
1 1
1
Clock ext
Salida Q0 y clk 2
2 1
1
Q0
Salida Q1 y clk 3
3 1
1
Q1
Salida Q2
Salida pta= Puerta NAND entrada Q2 y Q1
Detecta el 6 =110 y carga el 0=0000
5 Seran 4 biestables JK
J
K
CLK
Q
1 1
1
Clock ext
Salida Q0
2 1
1
Q0neg
Salida Q1
3 1
1
Q1neg
Salida Q2
4 1
1
Q2neg
Salida Q3
Salida pta= Puerta OR entrada Q3 Q2 y Q0
Detecta el 2 =0010 y carga el 15=1111
n.c.
n.c.
1
1
Salida pta
Salida pta
QNEG
n.c.
n.c.
n.c.
PRneg
1
1
1
CLneg
Salida pta
Salida pta
Salida pta
QNEG
Clk 2
Clk 3
Clk 4
n.c.
PRneg
Salida pta
Salida pta
Salida pta
Salida pta
CLneg
1
1
1
1
40
6 Seran 3 biestables JK
J
K
CLK
Q
1 1
1
Clock ext
Salida Q0
2 1
1
Q0neg
Salida Q1
3 1
1
Q1neg
Salida Q2
Salida pta= Puerta OR entrada Q2 y Q1
Detecta el 1 =001 y carga el 7=111
7 Seran 4 biestables JK
J
K
CLK
Q
1 1
1
Clock ext
Salida Q0 y clk 2
2 1
1
Q0
Salida Q1 y clk 3
3 1
1
Q1
Salida Q2 y clk 4
4 1
1
Q2
Salida Q3
Salida pta= Puerta NAND entrada Q3 y Q2 y Q0
Detecta el 13 =1010 y carga el 2=0010
QNEG
Clk 2
Clk 3
n.c.
PRneg
Salida pta
Salida pta
Salida pta
CLneg
1
1
1
QNEG
n.c.
n.c.
n.c.
n.c.
PRneg
1
Salida pta
1
1
CLneg
Salida pta
1
Salida pta
Salida pta
41
8 Seran 4 biestables JK
J
K
CLK
Q
1 1
1
Clock ext
Salida Q0
2 1
1
Q0neg
Salida Q1
3 1
1
Q1neg
Salida Q2
4 1
1
Q2neg
Salida Q3
Salida pta= Puerta OR entrada Q3 Q2 y Q0
Detecta el 2 =0010 y carga el 14=1110
9 Seran 4 biestables JK
J
K
CLK
Q
1 1
1
Clock ext
Salida Q0 y clk 2
2 1
1
Q0
Salida Q1 y clk 3
3 1
1
Q1
Salida Q2 y clk 4
4 1
1
Q2
Salida Q3
Salida pta= Puerta NAND entrada Q3 Q1 y Q0
Detecta el 11 =1011 y carga el 7=0111
10 Seran 5 biestables JK
J
K
CLK
Q
1 1
1
Clock ext
Salida Q0 y clk 2
2 1
1
Q0
Salida Q1 y clk 3
3 1
1
Q1
Salida Q2 y clk 4
4 1
1
Q2
Salida Q3 y clk 5
5 1
1
Q4
Salida Q4
Salida pta= Puerta NAND entrada Q3 Q1 y Q0
Detecta el 17 =10001 y carga el 7=00111
QNEG
Clk 2
Clk 3
Clk 4
n.c.
PRneg
1
Salida pta
Salida pta
Salida pta
CLneg
Salida pta
1
1
1
QNEG
n.c.
n.c.
n.c.
n.c.
PRneg
Salida pta
Salida pta
Salida pta
1
CLneg
1
1
1
Salida pta
QNEG
n.c.
n.c.
n.c.
n.c.
n.c.
PRneg
Salida pta
Salida pta
Salida pta
1
1
CLneg
1
1
1
Salida pta
Salida pta
Resets
Q3 y Q0
42
Resets
Q1 y Q0
Resets
Q1y Q0
13 Hay que hacer simplemente un contador mod7 y tomar como salida el bit de mayor
peso : Hay que resetar en el 7=0111
Clk A
Clk B
Qa
Qb
Qc
Qd
Resets
Clk externo Qa
clkB
N.C.
Salida
N.C.
puerta
Puerta = AND con entrada a Q2, Q1 y Q0
43
14 Hay que utilizar dos 7490 uno para las unidades y otro para las decenas
7490 Clk A
Clk B
Qa
Qb
Qc
Qd
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
Clk B dec Decenas decenas decenas
Hay que detectar el 20=0010 0000 Puerta = Q1decenas (ninguna puerta)
Resets
Salida
puerta
Salida
puerta
En los resets del 7490 unidades se podran poner a 0 pues realmente l solo se pone a 0
15 Hay que utilizar dos 7490 uno para las unidades y otro para las decenas
7490 Clk A
Clk B
Qa
Qb
Qc
Qd
Resets
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
puerta
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
puerta
Clk B dec Decenas decenas decenas
Hay que detectar el 50=0101 0000 Puerta = AND entrada Q2decenas y Q0decenas2
En los resets del 7490 unidades se podran poner a 0 pues realmente l solo se pone a 0 cuando pasa de 9
2 Tambin sin puerta, poniendo Q2 a R91 y R01 y Q0 a R92 y R02, pues dentro del 7490 hay una puerta
AND
44
16 Hay que utilizar dos 7490 uno para las unidades y otro para las decenas
7490 Clk A
Clk B
Qa
Qb
Qc
Qd
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
Clk B dec Decenas decenas decenas
Hay que detectar el 80=1000 0000 Puerta = Q3decenas
Resets
Salida
puerta
Salida
puerta
En los resets del 7490 unidades se podran poner a 0 pues realmente l solo se pone a 0 cuando pasa de 9
17 Hay que utilizar dos 7490 uno para las unidades y otro para las decenas
7490 Clk A
Clk B
Qa
Qb
Qc
Qd
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
Clk B dec Decenas decenas decenas
En este caso no hay que resetear, l slo pasa a 00 despus del 99
Resets
Salida
puerta
Salida
puerta
18 Hay que utilizar dos 7493 uno para las unidades y otro para las decenas
7493 Clk A
Clk B
Qa
Qb
Qc
Qd
Resets
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
puerta1
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
puerta2
Clk B dec Decenas decenas decenas
Aqu si que hay que resetear, pues l solo no pasa a 00
Puerta1=AND de Q0unidades y Q3unidades(9=1001) o sin puerta Q0 a R01 y Q3 a R02
Puerta2=AND de Q0decenas y Q3decenas (9=1001) o sin puerta Q0 a R01 y Q3 a R02
45
19 Como el 13 entra dentro del rango del mod16 que es el 7493, con slo uno se puede
hacer :
7493 Clk A
Clk B
Qa
Qb
Qc
Qd
R01
R02
Clk
Qa
Salida
Salida
Salida
Salida
Salida
Q3
externo
Q0
y Q1
Q2
Q3
puerta
clkB
El 13=1011 luego la puerta es AND con entrada Q1 y Q0 (Q3 no es necesario pues hace AND con R02
internamente)
20 Como el 12 entra dentro del rango del mod16 que es el 7493, con slo uno se puede
hacer :
7493 Clk A
Clk B
Qa
Qb
Qc
Qd
R01
R02
Clk
Qa
Salida
Salida
Salida
Salida
Q2
Q3
externo
Q0
y Q1
Q2
Q3
clkB
El 12=1100 luego no es necesario puerta, se hace con la puerta AND interna
R01
R02
Qd
Qa
Qd
3 Tambin hay otra forma de hacer el 8 y es no utilizar el biestable A, reloj externo en B y clkA=n.c.
Qa=n.c y R02=n.c.
46
R01
R02
Qd
Qb
Qd
R01
R02
Qa
Qb
Qb
Qd
Qd
R01
R02
n.c.
Qa
Qc
n.c.
Qa
Salida
puerta
Qb
Qc
Qd
Rco
CLK
D/U
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
n.c.
Clk
ext
Ent
pta
n.c
47
Qb
Qc
Qd
Rco
CLK
D/U
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
n.c.
Clk
ext
Ent
pta
n.c
Qb
Qc
Qd
Rco
CLK
D/U
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
n.c.
Clk
ext
Ent
pta
n.c
Qb
Qc
Qd
Rco
CLK
D/U
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
Load
Clk
ext
Rco
n.c
48
Qb
Qc
Qd
Rco
CLK
D/U
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
Load
Clk
ext
Rco
n.c
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
Rco
CLK
D/U
n.c.
Clk
ext
n.c.
Q3
Load
Sal
pta
Sal
pta
Max/
Min
n.c
n.c.
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
Rco
CLK
D/U
n.c.
Clk
ext
n.c.
Q3
Load
Sal
pta
Sal
pta
49
Max/
Min
n.c
n.c.
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
Rco
CLK
D/U
n.c.
Clk
ext
n.c.
Q3
Load
Sal
pta
Sal
pta
Max/
Min
n.c
n.c.
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
Rco
CLK
D/U
n.c.
Clk
ext
n.c.
Q3
Load
Sal
pta
Sal
pta
Pta = NOT que tiene de entrada Q7 ( desde el 13 al 79 no hay nadie que tenga Q7=1)
50
Max/
Min
n.c
n.c.
Qa
Qb
Qc
Qd
UP
DW
Q0
Q1
Q2
Q3
n.c.
n.c.
n.c.
n.c.
Clk
n.c.
Q4
Q5
Q6
Q7
n.c.
n.c.
n.c.
n.c.
Co
1
n.c.
CO
Up
2
BO
n.c.
n.c.
n.c.
CO
Up
2
BO
Load Clear
Sal
n.c.
pta
Sal
n.c.
pta
Pta = NAND Q4 y Q6
El reloj UP del 2 chip se podra hacer con la salida Q3
Qa
Qb
Qc
Qd
UP
DW
Q0
Q1
Q2
Q3
Clk
n.c.
Q4
Q5
Q6
Q7
CO
1
n.c.
n.c.
n.c.
n.c.
Load Clear
Sal
0
pta
Sal
0
pta
Pta = NAND Q2 Q4 Q5 y Q6
El reloj UP del 2 chip se podra hacer con la salida Q3
51
Qa
Qb
Qc
Qd
UP
DW
Q0
Q1
Q2
Q3
Clk
n.c.
Q4
Q5
Q6
Q7
CO
1
n.c.
CO
Up
2
n.c.
BO
n.c.
n.c.
Load Clear
Sal
0
pta
Sal
0
pta
Pta = NOT de Q6
El reloj UP del 2 chip se podra hacer con la salida Q3
37 Son dos chips, 1 el de unidades y el 2 el de decenas
Tiene que detectar el 40=0100 0000 y resetear
Chip
Qa
Qb
Qc
Qd
UP
DW
Q0
Q1
Q2
Q3
n.c.
n.c.
n.c.
n.c.
clk
Q4
Q5
Q6
Q7
n.c.
n.c.
n.c.
n.c.
CO1 n.c
n.c.
CO
Up
2
n.c.
BO
n.c.
n.c.
Load Clear
n.c.
n.c.
Q6
Q6
Qa
Qb
Qc
Qd
UP
DW
Q0
Q1
Q2
Q3
n.c.
Clk
Q4
Q5
Q6
Q7
n.c.
BO
1
CO
n.c.
n.c.
BO Load Clear
Dwn BO
0
2 2
BO
n.c.
0
2
Aqu no hace falta realizar ninguna funcin lgica, se podra hacer con una puerta OR
de los 0 del 40 pero cuando las decenas llegan a 0, BO hace un flanco de bajada que
sirve para cargar de nuevo al 40
El reloj DOWN del 2 chip se podra hacer con la salida Q3
Qa
Qb
Qc
Qd
UP
DW
Q0
Q1
Q2
Q3
n.c.
Clk
Q4
Q5
Q6
Q7
n.c.
BO
1
CO
n.c.
n.c.
BO Load Clear
Dwn Sal
0
2 pta
Sal
0
n.c.
pta
Pta = OR Q7 Q6 Q4 Q3 Q1 y Q0
El reloj UP del 2 chip se podra hacer con la salida Q3
52
Qa
Q0
Q4
Q8
Qb
Q1
Q5
Q9
Qc
Q2
Q6
Q10
Qd
Q3
Q7
Q11
D
0
0
0
C
0
0
1
B
0
0
0
A
0
0
1
UP DW CO
A
B Up 2
CO1 BO 1 CO3
CO2 BO2 n.c.
BO
Dwn 2
BO3
n.c.
Load
D
D
D
Clear
C
C
C
53
54
14 Supongamos que R = 1M y C=3F Dibuja en el osciloscopio anterior cual sera la forma de onda.
15 Dibuja la forma de onda del siguiente osciloscopio :
16 Supongamos que queremos conseguir la siguiente onda, disalo con un 555 C=3F
55
18 Disea un astable con el 7414 que responda a la siguiente seal de osciloscopio C=1nF
56
74122 y 74123
Si C1nF usar el baco
Si C>1nF usar frmula :
T = 0.28RC(1+700/R)
(0.32 con diodo)
TH=(R1+R2) ln2
TL = R1 ln2
57
Problema 1
Problema 3
Problema 5
R=3/3*0.69=1.4M
7 Igualmente
Problema 7
R=2m/100n*0.69=29k
8 El primer monoestable
hace un retardo a la
conexin de 3seg y el
segundo
monoestable
hace que dure el impulso
2seg para que juntos sean
los 5 segundos que pide el
enunciado
R1=3/300n*0.69 = 14M
R2 = 2/300n*0.69 = 9.6M
Los condensadores sera
de 300n
Problema 8
58
C=4/0.69*600k=9.6F
Problema 9
10 Usando la frmula:
T=0.32RC(1+700/R) despejando C tenemos C=T/R(1+700/R) = 1m/(0.32*50k(1+700/50k))=61nF
Como sale ms grande 1nF no tenemos por qu usar baco.
11 Igualmente tenemos C=T/R(1+700/R) = 1m/(0.32*50k(1+700/50k))=61pF como
sale ms pequeo que 1nF tenemos que usar el baco : C=40pF
59
15 Calculando tenemos
Tl=0.69*R2*C=0.69*80k*2=0.11seg = 2.2Div
(dividiendo por 0.05seg/Div)
Th=0.69*C*(R1+R2)=0.69*2*(80k+50k)=0.18se=3.5Div
La tensin Vcc=12=2.4Div Vcc/3=4V=0.8div
Vcc2/3=8=1.6Div
60
61
62
63
64
65
66
67
68
8. Autmatas programables
8.1.- QU ES UN AUTMATA PROGRAMABLE?
Hasta no hace mucho tiempo el control de procesos industriales se venia haciendo de forma cableada
por medio de contactores y rels. Al operario que se encontraba a cargo de este tipo de instalaciones, se le
exiga tener altos conocimientos tcnicos para poder realizarlas y posteriormente mantenerlas. Adems
cualquier variacin en el proceso supona modificar fsicamente gran parte de las conexiones de los
montajes, siendo necesario para ello un gran esfuerzo tcnico y un mayor desembolso econmico.
En la actualidad no se puede entender un proceso complejo de alto nivel desarrollado por tcnicas
cableadas. El ordenador y los autmatas programables ha intervenido de forma considerable para que este
tipo de instalaciones se hayan visto sustituidas por otras controladas de forma programada. El Autmata
Programable Industrial (API) naci como solucin al control de circuitos complejos de automatizacin.
Por lo tanto se puede decir que un API no es ms que un aparato electrnico que sustituye los circuitos
auxiliares o de mando de los sistemas automticos. A l se conectan los captadores (finales de carrera,
pulsadores,...) por una parte, y los actuadores (bobinas de contactores, lmparas, peque os receptores,...)
por otra.
Veamos un tpico circuito de automatismos. Un arrancador Estrella/Tringulo con temporizador.
La figura 1 muestra como es la tcnica cableada. Por una parte tenemos el circuito de fuerza, que
alimenta el motor, y por otra el circuito auxiliar o de mando, que realiza la maniobra de arranque de
dicho motor.
69
La figura 2 muestra como se realiza el mismo montaje de forma programada. El circuito de fuerza es
exactamente el mismo que en la tcnica cableada. Sin embargo, el de mando ser sustituido por un
autmata programable, al cual se unen elctricamente los pulsadores y las bobinas de los contactores. La
maniobra de arranque la realizara el programa que previamente se ha transferido al autmata.
Contactor
lnea
Contactor
tringulo
Fusible trmico
Contactor
estrella
Interruptores
de paro y
marcha
fusible trmico
70
.
.
Un rel es un componente elctrico formado por un electroimn y varios interruptores. Cuando es
recorrido por la corriente elctrica, el electroimn genera un campo magntico que abre o cierra los
interruptores dependiendo de su estructura interna. En el sistema de control digital como es el caso
de los autmatas es de una utilidad alta ya que nos permite interpretar que el interruptor cerrado
indica paso de corriente (bit 1) y el interruptor abierto indica ausencia de corriente (bit 0), con lo
que a travs de aperturas y cierres de interruptores podemos obtener un cdigo binario que puede
ser entendido por cualquier microprocesador.
Su accin puede ser directa o a travs de algn elemento interpuesto. Lo ms habitual es que el rel abra o
cierre un circuito elctrico.
Las caractersticas de la carga que ha de soportar (tensin, corriente, etc.) influyen sobre el tiempo de vida
til de los rels.
Por todo ello para alargar la vida de los rels y proporcionar una mejor seal de salida se interponen
circuitos de proteccin de rel interno que permiten suprimir el ruido elctrico.
Circuitos con rel conectado y no conectado.
Estos circuitos nos muestras que cuando conectamos el interruptor del circuito donde se encuentra la pila
pasa una corriente a travs que es capaz de disparar la accin del rel que se encargar de cerrar el
circuito para conectar la bombilla. El rel se conectar cuando la corriente que pas a travs del primer
circuito sea la necesaria (viene determinada segn las caractersticas del rel).
De esta forma se puede apreciar que un circuito por donde pasa muy poca corriente como son 12 V, es
capaz de activar otro circuito que trabaje a mucha ms corriente como 220 V. Esto es lo que hace el
autmata con los motores que es capaz de conectar.
71
72
8.2.6 PERIFRICOS
Los perifricos no intervienen directamente en el funcionamiento del autmata, pero sin embargo
facilitan la labor del operario. Los ms utilizados son: - Grabadoras a cassettes. - Impresoras. Cartuchos de memoria EEPROM. - Visualizadores y paneles de operacin OP
Panel de Operacin
73
ORDENADORES
Sistemas programables
Segn este diagrama podemos ver la gran similitud entre ordenadores y autmatas, la
gran diferencia entre ambos radica en el tipo y caractersticas de la informacin con la
que trabaja cada uno.
En el primer caso de los autmatas las entradas responden a seales recibidas del
exterior para lo cual se hace necesario el uso de sensores y transductores, mientras que
las salidas van dirigidas a reguladores y actuadores como puedan ser los motores.
En el segundo caso de los ordenadores la informacin viene en forma de ficheros
incluidos en soportes como disquetes, discos compactos, etc.
74
ENTRADAS
SALIDAS
(Tipo Rel)
Seal de salida en forma de
luces que simulan la
conexin a un motor
75
NOR
AND
NAND
NOT
XOR
(diferentes = 1 )
SF FUNCIONES ESPECIALES
Rel con
autorretencin
(Biestable RS)
Generador de
pulsos
Retardo a la
conexin
Retardo a la
desconexin
Telerruptor
Interruptor
horario, (Reloj
no disponible
en el modelo
230R)
76
Interruptor horario
Rel con
autorretencin
(Biestable RS)
Generador de
pulsos
Retardo a la
conexin
memorizado
Contador
adelante/atrs
77
78
13 Realizar un programa con el LOGO que sirva como temporizador de una luz de
escalera, es decir si se pulsa la entrada I1, entonces Q1 se encuentra encendido digamos
40 seg.
14 Si observamos cmo se enciende un telfono mvil, podemos ver que es un
interruptor de pulsacin prolongada, es decir, que hay que hacer una pulsacin larga en
la tecla correspondiente y entonces se conecta el movil. Realizar un programa con el
LOGO de manera que con una pulsacin prolongada en I1 de 6 segundos entonces la
mquina conectada en Q1 se active.
15 En una habitacin con dos interruptores y una luz, para que desde cualquier
interruptor se pueda encender y apagar la luz hace falta un interruptor de cruze, pero en
el caso de ms de 2 la solucin es muy tediosa, por ejemplo una gran nave. Realizar un
programa en LOGO que solucione este problema, donde hay cientos de pulsadores (en
vez de interruptores) que cada uno de ellos pueden encender o apagar la luz conectada
en Q1
16 Supongamos una puerta elctrica, que con un pulsador o clula fotoelctrica se abre
la puerta. Realizar un programa que con un pulso en I1 se active Q1 Cundo se
desactivar? Para ello tiene que existir un fin de carrera, I2, es decir, un pulsador que
cuando la puerta llegue hasta el final, estos pulsadores son NC (normalmente cerrados)
cmo seguridad. Para simplificar el problema supondremos que no es NC (normalmente
cerrado) sino NA (normalmente abierto).
17 Vamos a aadir a la puerta del ejerccio anterior un cierre automtico, de tal manera
que exista un pulso en I1, despus de 10 segundos tiene que activar el sentido de giro de
cerrar Q2 hasta llegar al final de carrera I3 que por simplificacin ser NA. En un
problema posterior se tratar ms profundamente del cambio de sentido de giro de un
motor.
18 Para completar ms an la puerta automtica, se pide en este ejercicio aadir un
aviso intermitente por Q3 de 0.5 segundos cuando se este cerrando la puerta Q2
19 En una cinta de transporte de una panaderia, se encuentra una clula fotoelctrica I1
que emite pulsos cada vez que pasa por delante de ella un pastelito. Realizar un
programa que cuando cuente 16 empaquete el pastelito. La mquina de empaquetar est
en Q1. Una vez concluida la empaquetacin, por I2 se le envia un pulso para que
empieze a contar.
20 Supongamos una oficina, que desea que la calefaccin Q1 se conecte Lunes a
Viernes de 9:00 hasta las 13:00 y de 16:00 hasta las 19:00, excepto los viernes
conectar a las 8:00 en vez de las 9:00 y que de desconectar a las 18:00 en vez de las
19:00 pues se entra ms pronto y se sale ms pronto. Los Sabados slo se trabaja por la
maana y habra que conectar la calefaccin de 9:00 a 13:00.
21 Supongamos una mquina taladradora Q1 que tiene dos pulsadores. Uno para On I1
y otro para Off I2. Realizar el programa que permita su funcionamiento.
22 Realizar el mismo ejercicio anterior pero que slo sea un solo pulsador I1
79
25.- Hacer una intermitencia cuando se pulse I1 e I2, la intermitencia que sea de 1
segundo cada periodo (0.5 segundos encendido y 0.5 segundos apagado), siendo I1
e I2 interruptores.
26.- Hacer una intermitencia cuando se pulsa I1, y que esa intermitencia se apague
cuando se vuelva a pulsar. La intermitencia que sea de 1 segundo de periodo.
80
30.- Que Q1 realice una intermitencia de 5 segundos con 1 segundo cada periodo
cuando se apague I1, siendo I1 un pulsador. I3 pulsador como Reset
81
Q1 Q2
0
0
1
1
Motor
0
1
0
1
Parado
Cerrar
Abrir
CORTO
82
41 En una serrera, tenemos una cortadora de tablones de manera que si se acciona I1 La cuchilla
baja (Q1) hasta el final de carrera I3 NC y entonces se pone a girar la cuchilla (Q3) y el tabln se
mueve hacia l (Q4) hasta el fin de carrera I4 NC entonces la cuchilla se para y sube (Q2) hasta el
final de carrera I2 NC. Existe un interruptor NC I5 de seguridad para parar todo el sistema. Q4 slo
funciona si adems esta activo un interruptor de mover tabln I6
43.- Imagina el caso del problema anterior pero que un dia fuese festivo y
tuvisemos que considerarlo como fin de semana, propn un programa para este
caso, que sea facil la alteracin del programa, con slo entrar en la parametrizacin
del logo, y no en la edicin del programa.
83
Q1
0
0
0
1
0
1
1
1
0
1
1
I1 I2\I3 I4
00
01
11
10
00
0
0
1
0
01
0
1
1
1
11
1
1
1
1
10
0
1
1
1
La funcin es simplificando
Q1=I3I4+I1I2+I2I3+I2I4+I1I3+I1I4
84
1011
1100
1101
1110
1111
1
1
1
1
1
10 En este caso podramos optar por hacer una solucin como la anterior,
camibando la tabla de verdad, o de una manera ms intuitiva y perspicaz
fijndonos en la puerta XOR, que si son diferentes (impar) sale 1 y si son
iguales (par) sale 0
Q1
0
0
0
1
0
0
1
1
0
0
0
1
1
1
1
1
I1 I2\I3 I4
00
01
11
10
00
0
0
1
0
01
0
0
1
0
11
1
1
1
1
10
0
1
1
0
La funcin es simplificando
Q1=I3I4+I1I2+I2I3
7.12 La tabla de karnaugh queda modificda con los estados indiferentes X de la forma :
I1 I2\I3 I4
00
01
11
10
00
X
0
1
X
01
0
0
1
0
11
1
1
1
1
10
X
1
1
X
La funcin es simplificando
Q1=I3 + I1I2
85
No1 = Mo-Sa
No2=Mo-Fri
No3=Fri
On=9:00
On=16:00
On=8:00
Off=13:00
Off=19:00
Off=18:00
21 La solucin es un biestable
22 La solucin es un telerruptor, en R puede estar suelto (x) u otro pulsador
86
23
24
25
26
27
28
29
30
87
88
o de otra forma mucho ms fcil, los tiempos son el primero 3 seg y el segundo 2
segundo
La dificil :
89
38 El problema es parecido al 16
pero con la pecularidad de utilizar
fines de carrera NC por eso I2 e I4
se niegan primero. Tambin para
evitar que nunca Q2 se active
estando Q1 activado se utiliza la
puerta NOT y la puerta AND del
final.
39 Ahora hay que contar con el paro de emergencia, I3 y el set de Q2 se tiene que
accionar con un pulso retardado de 10seg de I1
90
40 En este caso hay que aadir la accin de los pulsadores I4 I5 I6, se ha optado por un
retardo a la conexin memorizado
41 Para esta solucin hay que jugar con los biestables RS, y los finales de carrera.
Programas :
Mo-Fri
Mo-Fri
Sa-Su:
Sa-Su:
On:9:00
On:16:00
On:10:00
On:20:00
Off:14:00
Off:20:00
Off:13:00
Off:22:00
91
43 En este caso lo mejor es poner tantos programas como dias tiene la semana, y as
slo habra que entrar en la parametrizacin:
Mo
On:9:00
Off:14:00
Mo
On:16:00
Off:20:00
Tu
On:9:00
Off:14:00
Tu
On:16:00
Off:20:00
We
On:9:00
Off:14:00
We
On:16:00
Off:20:00
Th
On:9:00
Off:14:00
Th
On:16:00
Off:20:00
Fri
On:9:00
Off:14:00
Fri
On:16:00
Off:20:00
Sa-Su:
On:10:00
Off:13:00
Sa-Su:
On:20:00
Off:22:00
Es decir, un programador ms que el ejercicio anterior.
BIBLIOGRAFA
Tecnologa industrial II, Manuel Murgui Izquierdo, Juan Jos Vela Rozaln.
Editorial Edeb, 1999.
Curso Completo de Automatizacin Industrial Moderna, Victoriano Angel
Martnez Snchez, Editorial Ra-ma, 1992.
Tecnologa Industrial II, Sonia Val, Jose Luis Huertas, Editorial McGraw-Hill,
1996.
Manual de instrucciones del autmata Logo de Siemens.
Autmatas programables, A. Porrs, A.P. Montanero. Editorial McGraw-Hill,
1990.
Internet
http://www.siemens.es/ps/logo.htm De Siemens Espaa.
En ella puedes encontrar informacin sobre los diferentes modelos de LOGO!, adems del software
LogoSoft con 14 ejemplos de programacin en castellano.
http://www.ad.siemens.de/logo/index_78.htm De Siemens Alemania.
Pgina distinta a la espaola disponible en varios idiomas, entre ellos el espaol.
92
Reto:
93
8.10.2.-Puerta automtica
Se desea hacer una puerta autontica que abra la puerta cuando algun sensor detecte presencia, y lo cierre
al cabo de 10 minutos
Programa a realizar :
Reto:
1.- Que exista un horario de
entrada por ejemplo 9:00 a
21:00 y un horario de salida de
8:00 a 22:00
2.- Que exista dos interruptores
de cerra y de abrir.
94
ventiladores.
Solucin:
95
Programa
Reto:
1.- Que se cierre
automticamente a los 10
segundos
2.- I2 sobra
96
Solucin
I1 a I4 sern los pulsadores e I5 el sensor de luminosidad, Q1 y Q2 las cadenas luminosas de las ventanas,
y Q3 y Q4 la de los pasillos.
Programa
97
98
9 Problemas de memorias.
9.1 ENUNCIADOS EJERCICIOS DE MEMORIAS
1.- Calcular el Bus de datos, Bus de direcciones, n de clulas de memoria, estructura de la matriz y
dibujo de la estructura interna de las siguientes memorias :
a) Memoria 128x8
b) Memoria 64x8
c) Memoria 4096x8
d) Memoria 16284x8
2.- Que tipo de memora es cada uno de los chips siguientes, Bus de datos, Bus de direcciones, n de
clulas de memoria, dibujo de la estructura de la matriz.
CHIP
CHIP B
CHIP A
99
Ejercicios de apliacin de memorias, no se darn en clase, slo son para propio aprendizaje
4.- Partiendo del AB de un microprocesador de 16 bits AB, realizar el circuito de seleccin de un chip de
memoria EPROM de 2kx8 situado entre las direcciones F800 y FFFF.CS a nivel alto.
5.- Partiendo del AB de un micro de 16 bits AB, realizar el circuito de seleccin de un chip de memoria
RAM de 2kx8 situada en las direcciones ms bajas. CS a nivel bajo.
6.- Realizar una memoria 1kx12 con RAM 2114 1kx4 con controles CS a nivel bajo.
7.- Realizar una memoria 2kx4 con RAM 2114 1kx4 para un micro de 12 bits AB y 4 de DB. Indicar las
direcciones que corresponden a cada circuito integrado.
8.- Realizar una memoria 4kx8 con RAM 2114 1kx4 para un micro de 16 bits AB ocupando las
direcciones ms bajas. Utilizar decodificadores y puertas lgicas. Indicar las direcciones que
corresponden a cada circuito integrado.
9.- Implementar el siguiente mapa de memoria con puertas lgicas y decodificadores:
Direcciones
Funcin
Mapa de memoria fsico
0000 a 03FF
VARIABLES DEL SISTEMA Y STACK
RAM 1Kx4 A B
0400 a 07FF
DATOS TEMPORALES
RAM 1Kx4 C D
A000 a AFFF
INTERFACE
CIRCUITOS E/S E
E000 a EFFF
TABLAS Y DATOS FIJOS
ROM 2kx8 F
F000 a FFFF
PROGRAMA
ROM 2kX8 G
10.- Implementar el siguiente mapa de memoria para un micro de 8 bits, utiliza decodificadores 3 a 8
74LS138 y decodificadores 2 a 4 74LS139 entrada E y salidas a nivel bajo.
DIRECCION
CHIP
DIRECCIN
CHIP
FFFF F800
ROM 2Kx8 A
9FFF 9000
RAM 2Kx8 D
F7FF F000
ROM 1Kx8 B
0FFF 0800
RAM 2Kx8 E
AFFF A000
E/S C
07FF 0000
RAM 2Kx4 F G
11.- Implementa el siguiente mapa de memoria para un micro de 8 bits
DIRECCIN
CHIP
FFFF F000
EPROM MCM2716 2Kx8
A00F A000
PUERTOS E/S VIA 6522
03FF 0000
RAM MCM2114 1Kx4
12. Implementar el siguiente mapa de memoria para un micro de 8 bits, utiliza decodificadores 3 a 8
74LS138 ,decodificadores 2 a 4 74LS139 entrada E y salidas a nivel bajo y puertas lgicas
DIRECCION
0000
03FF
0400
07FF
CHIP
A
RAM
B
RAM
DIRECCIN
0800
0BFF
0C00
0FFF
CHIP
C
ROM
D
ROM
100
9.2 SOLUCIONES
DE MEMORIAS
EJERCICIOS
1 a) Memoria 128x8
DB=8 D7 a D0
Como 128=27 luego AB=7 A6 a A0
Nmero de clulas 128*8=1024
Estructura de la matriz 1024=32 luego
32x32 matriz cuadrada
Dibujo
DB=8 D7 a D0
Como 64=26 luego AB=6 A5 a A0
Nmero de clulas 64*8=512
Estructura de la matriz 512=no es exacta
luego matriz rectangular
512=64x8=26x23=29=25x24=32x16
Dibujo
1 c) Memoria 4096x8
DB=8 D7 a D0
Como 4096=4k=22210 =212 luego AB=12
A11 a A0
Nmero de clulas 4096*8=32768
Estructura de la matriz 32768=no es
exacta
luego matriz rectangular
32768=4096x8=212x23=215=27x28=128x256
Dibujo
1 d) Memoria 16284x16
DB=16 D15 a D0
Como 16284 no es multiplo de potencias de
2, el ms cercano superandose es
16k=16x1024=16384 Dnde estn el resto
de las 100 palabras? O estn reservadas, o
daadas, nosotros lo consideraremos 16k
=24210 =214 luego AB=13 A12 a A0
Nmero de clulas 16384*16=262144
Estructura de la matriz 262144=512 es
exacta
matriz cuadrada =512x512
Dibujo
101
2.- El chip A tiene seal WR en el pin W/R luego es RAM y por las seales RAS y CAS es
inequvocamente una DRAM pues necesita refresco y el AB esta multiplexado, es decir, que hay que
contar con el doble A0-A5 se convierten en A0-A11 luego 12 lneas de AB = 212=22210=4K, y como slo
hay una lnea de datos DIN y DOUT parecen dos, pero son la misma, slo que una de entrada y otra de
salida, luego lnea de datos =1 entonces: DRAM 4Kx1
El chip B no vemos ninguna seal WR luego es ROM, tampoco vemos ningn pin Program luego el
nico chip ROM que no se programa es la MASKROM programada de fbrica. Tamao A0-A9 y D0-D7
luego 210x8 = MASKROM 1Kx8
El chip C no tiene ninguna seal de WR luego es ROM, tiene una seal de Program (Pin 18) luego es
Programable, puede ser PROM EPROM EEPROM, como no tiene ningn pin de Erasable, descartamos
EEPROM y entre PROM y EPROM lo nico que las diferencia es la ventana de cuarzo, como no se le ve,
es PROM Tamao A0-A9 y D0-D7 luego 210x8 = PROM 1Kx8
3.-En el pulso A no se selecciona el chip, luego no hace caso del bus de direcciones ni el de datos
Pulso
qu dato se escribe
en qu direccin
B
1111
0000
C
1110
0001
D
1101
0010
E
1100
0011
y ahora estos:
Pulso
direccin
salida
F
0000
1111
G
0001
1110
H
0010
1101
I
1111
????
A3 A0
Problema 4
102
A3 A0
Problema 5
Problema 6
CHIP A 0 1 1 1
0100
CHIP B 0 0 1 1
0000
El chip A ser
A7 A4 A3 A0
1111
0000
1111
0000
1111
0000
1111
0000
Problema 7
CS A11 * A10
El chip B se seleccionar con
Problema 8
103
Sera una ampliacin del nmero de bits de la palabra, y de la direcciones. El CS habra que activarlo
segn las direcciones de memoria que tuviera cada uno:
chip
direccin
chip
direccin
0000 0000 0000 0000
0000 0100 0000 0000
AB
CD
0000 0011 1111 1111
0000 0111 1111 1111
0000 1100 0000 0000
0000 1000 0000 0000
GH
EF
0000 1111 1111 1111
0000 1011 1111 1111
Problema 8
9.- Pasando los nmeros hexadecimales a binario tenemos (A y B junto con C y D van a pares pues slo
tienen 4 bits de datos, para formar 8 de datos tienen que compartir las mismas direcciones de memoria).
chip
A15 A12
A11 A8
A7
A4
A3 A0
0
0
0
0
0
0
0
0
0000
0000
AB
0011
1111
1111
0000
0100
0000
0000
0000
CD
0111
1111
1111
0000
0000
0000
0000
1010
E
1111
1111
1111
1010
0000
0000
0000
1110
F
1111
1111
1111
1110
0000
0000
0000
1111
G
1111
1111
1111
1111
Los bits A15 a A12 son siempre los mismos, luego pueden seleccionar al circuito decodificador, y el
circuito decodificador segn las rdenes de A10 y A11 deciden qu chip de memoria tiene que activarse.
Problema 9
104
A7
A4
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
A3 A0
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
A7
A4
1111
0000
0000
0000
1111
0000
A3 A0
1111
0000
1111
0000
1111
0000
105
A15 A12
0000
0000
0000
0000
0000
0000
0000
0000
A11 A8
0000
0011
0100
0111
10 00
10 11
1100
1111
A7
A4
0000
1111
0000
1111
0000
1111
0000
1111
A3 A0
0000
1111
0000
1111
0000
1111
0000
1111
Los bits A15 a A12 son siempre los mismos, luego pueden seleccionar al circuito decodificador, y el
circuito decodificador segn las rdenes de A10 y A11 deciden qu chip de memoria tiene que activarse.
106
10 Microcontroladores CPIC16F84
1 INTRODUCCIN A LOS MICROCONTROLADORES
10%
Industria
16%
Telecom
16%
Electrodom
25%
107
Los microcontroladores estn diseados con arquitectura tipo Harvard que separa
fsicamente la memoria de datos y la del programa:
Memoria Programa
PIC16C84
PIC16F84
1KX14 EEPROM
1KX14 FLASH
Memoria Datos
RAM
EEPROM
36
64
68
64
Registros
especficos
11
11
E/S
Vcc
Pines
13
13
2-6
2-6
18
18
Y aqu esta el esquema del conexionado del PIC16X84 para cualquier tipo de aplicacin:
108
C=20pF
C=220pF
C=0.1F
109
list p=16f84A
#include p16f84a.inc
Tiempo EQU 22h
Vueltas EQU 23h
org 0
CONFIGURAR
BSF STATUS,RP0
BCF
TRISB,0
BCF
STATUS,RP0
COMIENZO
BSF PORTB,0
CALL RETARDO
BCF PORTB,0
CALL RETARDO
CALL RETARDO
GOTO COMIENZO
RETARDO
MAS
MOVLW b'11001000'
MOVWF Vueltas
DECFSZ Tiempo
GOTO MAS
MOVLW b'11111111'
MOVWF Tiempo
DECFSZ Vueltas
GOTO MAS
RETURN
END
:020000040000FA
:100000008316061083120614092006100920092001
:100010000328C830A300A20B0B28FF30A200A30BBB
:040020000B280800A1
:00000001FF
1.5 Cmo se hace con Basic?
Bucle:
High 0
Pause 500
Low 0
Pause 500
GoTo bucle
End
|
( ) 16C84
|
( ) 16F84
|
(*) 16F84A
[ OK - Enter ]
< Cancel - Esc >
< Help - F1 >
|
+----------------------------------------------------------------+
:0C000000830100308A0004288301B52B26
:10076A0083168601831286018C018C0A8D010D087D
:10077A00803A8E0080300E020A3003190C02031CE4
:10078A00C72BC82BC92BDA2BCA2B8C0A03198D0A43
:10079A000D08803A83128E0080300E020A30031947
:1007AA000C02031CD92BDA2BC92B013083128600C9
:1007BA008C018C0A8D010D08803A8E0080300E0261
:1007CA000A3003190C02031CEB2BEC2BED2BFE2B2E
:1007DA00EE2B8C0A03198D0A0D08803A83128E00BB
:1007EA0080300E020A3003190C02031CFD2BFE2B6B
:0607FA00ED2BB72B0428D3
:00000001FF
Lo correcto sera pasar a la simulacin del fichero antes de pasarlo al PIC real.
Entramos en el programa SIMUPIC
111
Antes de nada hay que subir el tiempo de nuestro programa, pues el PIC va muchsimo
ms rpido que el simulador SIMUPIC, para ello entramos de nuevo en PICLITE y
subimos el tiempo aproximadamente 1000 veces :
#include <pic.h>
main(){
int i;
TRISB=0b00000000;
for(;;){
PORTB=0b00000000;
for(i=1;i<10000;i++) continue;
PORTB=0b00000001;
for(i=1;i<10000;i++) continue;
}
}
Una vez hecho esto, se vuelve a compilar F3, salir del programa y entrar en
IcProg, la primera vez que se ejecuta hay que decir que programador se usa, en
nuestro caso se llama JDM Programer en COM1 o COM2
Conectamos nuestra placa TE20 , pulsar el botn de abrir
Y buscamos nuestro Prueba.hex
Una vez cargado apretamos al botn de programar
:
El aspecto de nuestro programa ser el siguiente: (antes desactivar el WatchDog: WDT)
Una vez programado, sacaremos nuestro PIC del programador, y montaremos el circuito
ATENCION: IC-PROG EN WIN-XP :Se debe de tener en la misma carpeta que el
ejecutable IcProg.exe el archivo icprog.sys. Este fichero se puede descargar de www.icprog.com . Adems hay que habilitar el Driver NT/2000/XP en Ajustes->Opciones>Miscelanea.
112
Generalidades
En nuestros programas tenemos que incluir la siguiente librera #include <pic.h> que
da definicin a los puertos y registros de estado.
Despus de main(){ podemos declarar las variables que nos interesen en el programa, se
puede utilizar int (para n desde -32600 a 32600), unsigned int (para n desde 0 a
32600) variables tipo char para variables de 8 bits muy tiles para los puertos.
Sentencias condicionales
if(condicin){....}
Con la sentencia
podemos ejecutar algunas instrucciones si la condicin ha sido verdadera.
Si queremos que segn la condicin ejecute unas instrucciones, y si es falsa la condicin
que ejecute otras, tenemos que utilizar:
if(condicin){..instrucciones si es verdad..}
else{ ..... instrucciones si es falsa la condicin.... }
Son tiles las operaciones and && y or ||
Una condicin es verdadera si tiene un valor distinto de cero.
Operadores relacionales son : igual == distinto = . por ejem if (x==1){...}
y las comparativas < > <= >= por ejemplo if (x<=10) {...}
113
Operadores
Una variable se puede incrementar con el operador ++ y decrementar con --
por ejemplo x++ ; y--; equivale a hacer =x+1; y=y-1;
Operadores binarios que nos pueden ser de utilidad son:
And & Or | Not ~ (Alt+126) no hay que confundirlas con las anteriores.
Operadores de desplazamiento que nos son de utilidad son << y >> .
Por ejemplo : char x,y,z,u,v,t;
x=0b00100010; y=0b01010011; z=x&y; u=x|y; v=~x; t=y>>2; x=x<<1;
Qu valores tienen z, u , v, t, x?
Sentencias de bucles
Si quiero sentencias repetitivas, utilizo la sentencia for(inicio;final;incremento)
Por ejemplo, si quiero hacer una cosa 10 veces : for(i=1;i<=10;i++){.......} o de forma
decremental for(i=100;i>=1;i--){....}
si se quiere que se repita siempre, es til hacer for(;;){......}
Tambin se puede utilizar las sentencias do{...}while(condicin) y while(condicin){..}
Es muy til utilizar la sentencia goto etiqueta para saltarnos a algn lugar del programa.
Con la sentencia continue el programa continua a la siguiente iteracin, y con la
sentencia break el programa rompe el bucle y sale de l.
Configurar puertos
El puerto A (5bits) se configura con el registro TRISA, y el B (8bits) con TRISB.
El 0 para Output y el 1 para Input. (0b... = n en binario, 0x... n en hexadecimal)
ejem.- Cmo queda el puerto A con la instruccin TRISA=0b00111;?
Y el puerto B con TRISB=0b01100000;?
Escribir en los puertos
Para cargar el nmero que queramos al puerto se hace de forma muy sencilla:
TRISA=0b00011; PORTA=0b01010; Qu leds se encenderan?
TRISB=0b01001101; PORTB=0b11111110; Qu leds se encenderan?
Tambin podemos cargarlo a travs de una variable :
Ejem: char x; TRISB=0x00; x=0x01; PORTB=x; x++; PORTB=x;
Qu leds se encienden en el primero?
Y despus?
Leer puertos
Para leer un puerto, se lee a travs de una variable, ejemplo:
char x,y; TRISA=0b11111; x=PORTA; TRISB=0xff; y=PORTB;
No esta permitido hacer TRISA=0x00; TRISB=0xff; PORTA=PORTB;
pero s esta permitido hacer TRISA=0x00; TRISB=0xff; x=PORTB; PORTA=x;
Si queremos que se realice alguna instruccin si el interruptor A3 esta en on se realiza
con la sentencia if y el adecuado operador binario:
x=PORTA;
if ( (x&01000)!=0) {..instrucciones ....}
114
3 EJERCICIOS
3.1 Enunciados
115
3.2 Soluciones
/**********************************
*
Ejer1 intermitente por el puerto A
*
**********************************/
#include
<pic.h>
main(void)
{
unsigned int
i;
TRISA = 0b00000;
for(;;) {
PORTA = 0b00000;
for(i = 0;i<10;i++) continue;
PORTA = 0b11111;
for(i = 0;i<10;i++) continue;
}
}
/**********************************
*
Ejer2 PB=PA
**********************************/
#include <pic.h>
main(){
char i;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
i=PORTA;
PORTB=i;
}
}
/*************************
Ejer3
PORTB que sea la ~PORTA
**************************/
#include <pic.h>
main(){
char x,y;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
x=PORTA;
y=~x;
PORTB=y;
}
}
/*************************
Ejer4
PORTB que sea la ~PORTA
B5 B6 y B7 intermitentes
**************************/
#include <pic.h>
main(){
int i;
char x,y,z;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
x=PORTA;
y=~x;
z=y&0b00011111;
PORTB=z;
for (i=0;i<10;i++) continue;
z=y|0b11100000;
PORTB=z;
for (i=0;i<10;i++) continue;
}
}
/*********** Ejer5*******************
*si A1=1 entonces que se encienda todo PB
***********************************/
#include <pic.h>
main(){
char i;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
i=PORTA;
if((i&0b00010)!=0)
PORTB=0xff;
}
}
/************Ejer6**********************
*Secuenciamiento de luces por PB
*************************************/
#include <pic.h>
main(){
char i;
int j;
TRISB=0b00000000;
i=0b00000001;
for(;;){
PORTB=i;
i=i<<1;
if (i==0) i=1;
for (j=0;j<=10;j++) continue;
}
}
/* ********************
Ejer7
si A0=0 intermitente B0
si A0=1 intermitente B1
**********************/
#include <pic.h>
main(){
int i;
TRISA=0b11111;
TRISB=0b00000000;
luzB0: for(;;){
if
((PORTA&0b00001)!=0)
goto luzB1;
PORTB=0b00000000;
for (i=0;i<10;i++) continue;
PORTB=0b00000001;
for (i=0;i<10;i++) continue;
}
luzB1: for(;;){
if ((PORTA&0b00001)==0)
goto luzB0;
PORTB=0b00000000;
*****************************/
#include <pic.h>
main(){
unsigned char i;
TRISB=0b00000000;
for(;;){
PORTB=0b00000001;
for (i=1;i<=10;i++) continue;
PORTB=0b00000001;
}
}
Si no se
quiere utilizar transistores, hay que conectar un
altavoz de poca potencia, pues el PIC no tiene
mucha corriente de salida, por ejemplo, el
altavoz pequeo de un ordenador:
4 TARJETAS PIC
Las tarjetas PIC son muy usadas tanto para abrir puertas automticas como para descodificacin de
canales privados de televisin. Aqu podemos ver una foto de cmo han ido evolucionando, las tres llevan
un PIC 16F84A y una EEPROM 24XX (grabables con el TE-20):
En el caso de que sirvan para puertas automticas, se pueden copiar con nuestro IC-Prog, en el caso de la
decodificacin, a travs del codificador,
peridicamente se van cambiando los cdigos
para evitar el pirateo es lo que se denomina
ataque, por Internet existen numerosos
programas para grabar estas tarjetas, y en las
mismas pginas se pueden descargar los cdigos
para salvar los ataques, con el inconveniente de
que hay que hacerlo peridicamente.
En la figura se muestra la pantalla del programa
FunCard donde hay que suministrarle los
ficheros .hex que se deben de bajar de Internet
en cada ataque, sobre para la memoria Flash
interna del 16F84A y la Eeprom externa 24XX.
Pgina 118
11 Microprocesador P 8085
1.- INTRODUCCIN MICROPROCESADOR 8085
1.1.- El 8085 dentro de los tipos de microprocesadores que hay
Microfoto
grafia de
PentiumM
ver el
espacio de
L2
Nombre
PPS-4
4bits
Intl
4004
Mot
6500
8bits no
Zlg
Z80
PC
8085
DB
AB
1971
16
Actualmente en Automatas
1972 1 a 4 Antiguos Amstrad, Atary hoy en da en Gameboy
Actualmente en Automatas
8086
Rock
PC
Intel
286
386
486
8088
16
286
386SX
16
16
386DX
32
486SX
486DX
486DX2
20
24
32
32
486DX4
Pentium
32
Pentium
Intel
Pent PRO
ao
1993
1997
64
36
PentiumII
-1
1978 4.77
a
1979
8
1982 8-12
1988 16/20
20/2
1985
5/33
1991
33
1989
1991 66
75/
1992
100
1996
Pent MMX
MHz Observaciones
1997
Celeron
1997
Xeon
1997
Pentium III
1999
PC Actuales :
Fab
Intel
AMD
Tipo
Pentium
Athlon
Nombre
Pent IV
Pent M
64FX
DB
AB
64
36
ao GHz
2002
1-2
2004
1.3-1.6
2004
2.2
Observaciones
RDRAM Tecnologia 0.18 Instrucciones SSE2>MMX
L2=1M Vcore<1.5V Menor consumo, peso,espacio
Portatil Centrino=PentM+Chipset855+Wireless2100
Fext=400MHz Vcore=1.5V Socket940
L1=940K L2=M
4 Externamente igual que el 5 pero que tiene esas dos tensiones para aumentar el multiplicador
C
Fa
yri
b
x
Otros Fabricantes :
Tipo
Pent
386
Pentium
AMD
486
Nombre
C686
SX/DX
DX
DX2/DX4
DX4-100
DX5-133
AMDK5
AMDK6
K63DNOW
K6-III
K7
Athlon 4
DB AB
64 36
16/
32
32
ao
1986
1992
32
32
64
36
MHz
80 a 150
1995
1996
1995
1996
1997
1998
1999
2001
Observaciones
<<Pentium Fext=40 a 75MHz!!!
<386 de Intel con menos consumo
40
50/66/80
100
133
75 a 166
166 a 300
266 a 400
450 a 600
400 a 800
1.1GHz
>486DX a 33MHz
=486DX2 de Intel
<486DX4-100
<486DX4-100
=Pentium
>Pentium MMX con Socket 7
<=Pentium II tiene L1=64K
<PentiumIII
>PentiumIII Fext=200MHz L1=128K L2=1M
=>Pentium IV
1.2 En resumen
Tipos de micros:
Segn marca : Intel, AMD, Motorola, Zilog
Segn DB
:4bits (calculadoras) 8bits (autmatas) 16bits y 32bits (Antig. PC)
64bits (PC actuales)
16 bits => 386 (El SX era de 8 bits)
32 bits => 486 Tenan coprocesador (el SX no) y multiplicaban su frecuencia respecto a
la externa (33MHz) DX x1 DX2 x2 y DX4 x3 (No se tendra que llamar DX3?
64 bits => Pentium
Pentium Pro=>Tiene el cach L2 integrado =>Fext=66MHz
Socket 5
Pentium MMX=>Tiene instrucciones MMX
Socket 7
Pentium II = Pentium Pro +Pentium MMX
Slot1
Pentium III
=>Fext=100MHz
Socket/Slot
AMD k6 como un Pentium
Socket 7
AMD k6 3D NOW como Pentium II
A (8)
Acumulador
ALU
Unidad Aritmetico
S Z AC P CY ... Flag (8) Lgica
B (8)
C (8)
D (8)
E (8)
H (8)
L (8)
registros auxiliares
U.C.
Unidad
Control
RI (8)
reg. de instruciones
SP (16) stack pointer puntero de pila
PC (16) contador del programa
Todos estan conectados entre si, y el 8085 tiene exteriormente 3 buses como
todos los microprocesadores (pero con tamaos diferentes):
D.B.
A.B.
C.B.
Nombre
Bus de datos
(data bus)
Bus de direcciones
(Adrress Bus)
Bus de Control
bits comentarios
8
conectado al R.I. desde este registro la U.C. lee las
instrucciones y las procesa.
16 conectado al PC indica la direccin de memoria del
programa que se esta leyendo.
10 Conectado a la U.C. para controlar el sistema
Hay que sealar que el 8085 tiene el bus de direcciones multiplexado, es decir, tiene 8 pines AD0 .... AD7
que son bus de datos y bus de direcciones (la parte baja), para diferenciarlo tiene un pin llamadoALE que
cuando es 0 las lineas AD0...AD7 es bus de datos D0...D7, y cuando ALE=1, las lineas AD0...AD7 es
parte baja del bus de direcciones A0...A7.
En la pag 283 y 284 explica el funcionamiento de cada uno de los registros, unidades
etc.., seala brevemente el significado de cada uno de ellos:
Descripcin
A
B, C
D, E
H, L
Flag
S
Z
AC
P
CY
ALU
U.C.
R.I.
P.C.
S.P.
Funcio
namien
to de la
pila
Pgina 122
Nomenclatura:
r = un registro de 1 byte , puede ser cualquiera de estos : A, B,C,D,E,H,L.
(rs =registro origen de datos, source, rd = registro destino de los datos)
[1000] = el dato almacenado en la direccin 1000H
[HL] = el dato almacenado en la direccin contenida en el registro HL
M=
dato = un nmero de 1 byte, por ejemplo 4AH, suelen ser los datos.
addr = un nmero de 2 bytes, por ejemplo 10B2H, suelen ser las direcciones
H=hexadecimal, B=Binario, D = Decimal
3.1.- Instrucciones de transferencia de datos
MOV rd,rs
LDA addr
MOV rd,M
MOV M,rs
STA addr
MVI rd,dato
LXH H,addr
ejemplo de utilizacin :
7 Estas hojas son las que se permitirn en los exmenes. Copia descriptivamente lo que significan cada
una de las instrucciones, y si necesitas algun ejemplo de aclaracin, cpialo detrs.
Pgina 123
ADD rs
SUB rs
ADD M
SUB M
ADI dato
SUI dato
INR rs
DCR rs
INR M
DCR M
INX B
DCX B
INX D
DCX D
INX H
DCX H
STC
DAA
CMC
3.3.- Instrucciones lgicas
ANA rs
CMP rs
ANA M
CMP M
ANI dato
CPI dato
Pgina 124
RLC
RRC
RAL
RAR
3.5 Instrucciones de salto
JMP addr
Jcondicion addr
Z
NZ
P
M
C
NC
PO
PE
CALL addr
RET
3.7.-Instrucciones de control
HLT
IN puerto
NOP
OUT puerto
Pgina 125
LXI H,2002H, lo mueve a B, y para moverlo al 2003 podra haberse escrito LXI
H,2003H o como en este caso, incrementando lo que tena, movemos de B a M, y
para finalizar END.
b) despus de guardarlo ensamblarlo con la instruccin: ASM8085 PRUEBA.CCC
esto crea 3 ficheros, si salen errores hay que corregirlo en el prueba.asm:
PRUEBA.ERR = listado de errores de 1 pasada.
(A=argumento errneo, D=etiqueta no existe, L=etiqueta erronea, U=smbolo
indefenido, S= error sintaxis)
PRUEBA.LST = listado del programa, aqu salen los errores de 2 pasada.
PRUEBA.OBJ = listado en lenguaje mquina.
c) simularlo con el programa SIM8085 , una vez dentro pulsar F4 y cargar el
PRUEBA.OBJ, utilizar los siguientes comandos:
R=modificar los registros, en este caso pondremos el contador del programa PC en la
direccin de comienzo de nuestro programa: 1000H
V=ver memoria, en este caso nos interesa ver lo que hay en la 2000H y siguientes.
M=modificar memoria, para poner nmero en la memoria.
T=trazar o ejecutar paso a paso, ir pulsando y observar lo que ocurre en cada
instruccin.
Q=salir
F1 visualiza una ayuda
C=ver el cdigo
E=ejecutar entre dos direcciones, ESC para salir, I para interrupcin 7.5
Pgina 126
6- Realizar un programa que sume dos nmeros. Los sumando se proporcionarn de forma
inmediata en el programa y sern los valores 12H y A3H. El resultado se depositar en la
direccin 1500H (Resultado B5H)
7- Un programa que multiplique por 4 el dato contenido en la direccin 1500 y lo almacene en
la 1501. Para multiplicar nmeros por dos, se utiliza la instruccin RAL que desplaza los
bits a la izquierda y as queda multiplicado por 2.
Por ejem.- 6=00000110 =>RAL=> 00001100=12 =>RAL=> 00011000=18H=24D
9.3.1.3 Ejercicios de bucles
8.-Un programa que doble el n almacenado en 1500 tantas veces como lo diga el dato de 1501
y el resultado que se almacene en 1502. Es decir, si [1500]=6 y [1501]=4 entonces
[1502]=6*2*2*2*2=96D=60H
9.- Realizar un programa rellene los datos desde la [1000] hasta la [10FF] con el dato de la
[1500]
10.- Realizar un programa que borre tantos datos como lo diga la direccin [1500] a partir de la
1000, es decir si en 1500 hay un 13H entonces los datos de las siguientes direcciones se pondrn
a 00H : 1000 1001 1002 1003 ....1009 100A 100B 100C ... 100F 1010 1011 1012 1013.
9.3.1.4. Ejercicios con subrutinas y puertos
11.- Realizar un programa que haga una intermitencia por el puerto 00 en el bit de menor peso
12.- Hacer un programa que haga un secuenciamiento de leds es decir :10000000 01000000
00100000 00010000 00001000 00000100 00000010 00000001 10000000 ....
Pgina 127
;***********************************
;****
EJERCICIO 5
****
;************************************
ORG 2000H
;Mover datos memoria
;[1503]<=[1500] Direccionamiento indirecto
LXI H,1500H
MOV B,M
LXI H,1503H
MOV M,B
; [1504]<=[1501] Direccionamiento directo
LDA 1501H
STA 1504H
;***********************************
;****
EJERCICIO 6
****
;************************************
ORG 200H
MVI A,12H
;A=12H
MVI B,0A3H
;B=A3H
ADD B
;A=A+B
STA 1500H;
;[1500]<=A
END
;***********************************
;****
EJERCICIO 7
****
;************************************
ORG 2000H
LDA 1500H
RAL
RAL
STA 1501H
END
;***********************************
;****
EJERCICIO 8
****
;************************************
; Es un programa muy parecido al anterior, pero que
;se tiene que realizar tantas veces como el contenido
;de 1501 mediante un bucle
[1502]=[1500]*2*2*2 ... [1501].....*2*2
;Se puede probar poniendo un 6 en 1500 y un 4 en
;1501HEn nuestro caso se almacenar
;6*2*2*2*2=96D=60H
;Cuando se utilizan ;bucles, saltos o subrutinas,
inicializar la pila LXI SP,3000H
;Programa
ORG 2000H
LXI SP, 3000H
LXI H,1501H
MOV B,M
LDA 1500H
;B=[1501]
;Cargo el n de 1500
BUCLE: RAL
;x2
DCR B
;Decremento B
JNZ BUCLE
;Salto a bucle mientras no sea 0
STA 1502H
;Almaceno a 1502
END
;Borro [1500]
;Borro [1501]
;Borro [1502]
STA 1500H
Pgina 128
;***********************************
;****
EJERCICIO 9
****
;************************************
;
ORGANIGRAMA
;
C <=FF
;
B <=[1500]
;
HL <=1000
;
[HL]<=B
;
HL<=HL + 1
;
C <= C - 1
;
NO ES 0? S
;
N
;
FIN
;************************************
ORG 2000H
LXI SP, 3000H
MVI C,0FFH
LDA 1500H
LXI H,1000H
OUT 00H
CALL PAUSA
JMP BUCLE
;Surutina Pausa
;Esta pausa entretiene al 8085 contando FF
;hasta 0
ORG 2500H
PAUSA: MVI B,0FFH
OTRO: DCR B
;Es una pausa muy corta
JNZ OTRO
RET
;Volver al programa principal
END
;A=[1500]
;***********************************
;****
EJERCICIO 12
****
;************************************
secuenciamiento del leds
ORG 2000H
MVI A,00000001B
;Encender el bit de menor peso
BUCLE: OUT 00H
;Sacar por el puerto 00
CALL PAUSA
;Hacer una pausa
RLC
;Corre el bit <=
JMP BUCLE
;Surutina Pausa
;Esta pausa entretiene al 8085 contando FF hasta 0
ORG 2500H
PAUSA: MVI B,0FFH
OTRO: DCR B ;Es una pausa muy corta
JNZ OTRO
RET
;Volver al programa principal
END
Pgina 129
Enunciado:
Se realizar un programa que efecte la suma de los 10 primeros nmeros
hexadecimales, es decir 1+2+3+4+5+6+7+8+9+A, el resultado da 37H.
Solucin:
Programa:
ORG 0000H
ACUMDISPLAY
Direcc.Cod. Maq.
1000 31 FF 1F
1003 3E 00
1005 06 0A
1007 80 SUMAR:
1008 05
1009 C2 07 10
100C CD D5 04
100F 76
EQU 04D5H
Ensambl.
LXI SP,1FFFH
MVI A,00H
MVI B,0AH
ADD B
DCR B
JNZ SUMAR
CALL ACUMDISPLAY
END
Pgina 130
1.-Hacer el fichero texto con el EDIT que se llame por ejemplo PRUEBA.ASM
2.- Se podra ensamblar con ASM8085, pero no lo metera en el entrenador, el
ASM8085 slo sirve para el SIM8085, para ensamblarlo y grabarlo en el entrenador
ejecutar el fichero batch HACERHEX PRUEBA (todo en el directorio C:\8085).
3.- Ver si hay algn error, si hay alguno, estar en PRUEBA.LST, en ese caso abortar el
programa batch con CTRL+C, si no hay errores ir pulsando INTRO hasta que aparece
un men preguntndote en qu puerto de comunicaciones est el entrenador.
Normalmente estar en COM1, pulsar INIC en el entrenador para ver si responde. Si
quieres saber como estn conectados el PC y el entrenador mira el Apndice A.
4.- Cargar el programa con el comando L , a la pregunta OFFSET contestar INTRO
(offset significa si quieres incrementar an ms el ORG)
5.-Ejecutar con G1000 recordar que a pesar que hemos puesto ORG 0000H el
programa HacerHex lo incrementa automticamente en mil unidades.
6.- Para finalizar la comunicacin pulsar INIC en el entrenador y H en el PC
Para ver ms comandos desde el PC puedes ver el APENDICE B, por ejemplo se puede
ver el programa ejecutando D1000,1010
5.2.2.- Desde el entrenador (Conmutador Teclado/CRT en posicin Teclado)
Con la tecla SME/ANT 1000 se va metiendo los cdigos mquina en hexadecimal a partir de la direccin
1000, hay que pulsar POST despus de cada cdigo, y ejecutar con GO 1000 y EJEC.
Pgina 131
nombre8
04D5H
ACUMDISPLAY
044EH
TECLAACUM
041DH
MENSDISPLAY
04C9H
HLDISPLAY
descripcin
El contenido del acumulador se visualiza en el display,
DISPLAY<=A
Carcter de consola al acumulador A<=TECLADO
Un mensaje que esta en memoria, que comienza en la
direccin apuntada por HL se visualiza en el display 9
DISPLAY<=[HL]
Visualiza los contenidos de HL en el display
DISPLAY<=HL
Display
nombre
manuales
Datos
UPDDT
no procede
RDKBD
direcciones
OUTPT
direcciones
UPDAD
Estas son las ms importantes, en el Apndice D existen ms subrutinas que podis utilizar.
Para utilizar estas subrutinas, hay que utilizar el comando EQU, por ejemplo:
TECLAACUM
EQU 044EH
ACUMDISPLAY
EQU 04D5H
Estas direcciones pertenecen a la ROM y son inalterables, pues vienen de fbrica.
Las subrutinas utilizan saltos de direccin, y para que el micro sepa dnde
regresar cuando acabe la subrutina, almacena la direccin del programa en curso en la pila, la
pila tiene que estar en una direccin RAM, por lo que la primera instruccin de nuestro
programa tiene que ser inicializar la pila en una direccin entre la 1000 y la 2000H ejem:
LXI SP, 1700H
; inicializar la pila
Estas subrutinas utilizan interrupciones, para permitir desenmascararlas es necesario poner 08H
al Acumulador, y ejecutar SIM, y para habilitar el sistema de interrupciones EI, es decir:
MVI A,08H
SIM
EI
Una vez escrita las anteriores lneas podemos llamar a las subrutinas cuando queramos en
nuestro programa por ejemplo:
CALL ACUMDISPLAY
Lo malo que tienen es que alteran los registros, luego antes de llamarlas hay que
almacenar los datos importantes que se tienen en los registros, pues estas subrutinas las borran,
y despus cargar los datos previamente almacenados. Por ejemplo, supongamos que en A
tenemos datos importantes, y los queremos visualizar:
STA ALMACEN
; lo almaceno, al principio del programa ALMACEN EQU 1500H
CALL ACUMDISPLAY
; llamo a la subrutina
LDA ALMACEN
;recupero el acumulador, pues ACUMDISPLAY lo ha borrado
h
BB
Pgina 132
5.5 Interrupciones
10 Hay que tener en cuenta que HACERHEX incrementa todos los ORG mil unidades
Pgina 133
tipo
PARALELO
Input/Ouput
PARALELO
Input/Output
jumper
J5
J6
J7
J2
J3
J4 (4-7)
J4 (0-3)
puerto
PA
PB
PC
PA
PB
PCH
PCL
Anchura
8 bits
8 bits
6 bits
8 bits
8 bits
4bits
4 bits
chip
81555 *
ref
U14
8255 *
U15
O
O
I
03H
I
O
O
I
91
I
I
O
0CH
O
I
I
O
8A
I
I
O
O
92
O
I
O
0DH
O
I
I
I
8B
I
I
O
I
93
I
O
O
0EH
I
O
I
O
98
I
I
I
O
9A
O
O
O
0FH
I
O
I
I
99
I
I
I
I
9B
* Si quieres saber cmo funcionan los 8251 (pag 73) , 8155 (pag 157) y 8255 (pag 104) consulta el libro
Microprocesador 2000 manual de Harware, estos chips son tambin utilizados en los PC actuales.
Pgina 134
8155
20H
8255
3BH
8255
PA
21H
38H
PB
22H
39H
PC
23H
3AH
Por ejemplo OUT 21BH para enviar lo que hay en el acumulador al puerto A del 8155
(antes hay que poner algo en el acumulador)
o si queremos leer el puerto B del 8155 IN 22H
Ejemplo
MVI A,01H
;
OUT 20H
;8155 PAout PBin PCin
;si queremos escribir en los puertos
MVI A,01H
; Que se encienda la luz ms a la derecha por ejem
OUT 21H
; por el PA del 8155
;Si queremos leer los interruptores que hay en PB del 8155
IN 22H
; Podra haber sido tambin 23H del PC del 8155
Ejemplo con el 8255
MVI A,82H
OUT 3BH
;8255 PAout PBin PCout
;si queremos escribir en los puertos
MVI A,01H
; Que se encienda la luz ms a la derecha por ejem
OUT 38H
; por el PA del 8255
;Si queremos leer los interruptores que hay en PB del 8255
IN 39H
; Podra haber sido tambin 3AH del PC del 8255 pero slo 6
Pgina 135
8.- Realizar un programa que lea los interruptores del puerto A del 8155 y visualice en
el display el nmero en binario marcado.
9.-Realizar un programa que saque intermitente por todos los puertos en todos los leds
Pgina 136
;***********************************
;****
EJERCICIO 2
****
;************************************
;SUMA DOS NMEROS
; TECLA INT7.5 HACE LA SUMA ****
;**************************SUBRUTINAS
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
TECLAACUM EQU 044EH ;A<=TECLA
;****************************DATOS
***********************PROGRAMA
ORG 000H
LXI SP, 1FFFH
MVI A,08H
SIM
EI
BUCLE: CALL ACUMDISPLAY
STA 1500H
CALL TECLAACUM
CALL ACUMDISPLAY
STA 1501H
DAA
CALL TECLAACUM
JMP BUCLE
;Si no se pone, sin casi ver el 2 sumando
; pone el resultado
;se podra hacer con un pause
;, y as no utilizar la int7.5
;*******************SUMA
SUMA: LDA 1500H
MOV B,A
LDA 1501H
ADD B
DAA
CALL TECLAACUM
JMP BUCLE
;********************INT7.5
ORG 10CEH
JMP SUMA
END
;***********************************
;****
EJERCICIO 3
****
;************************************
;SUMA DOS NUMEROS
;, TECLA POST REALIZA SUMA*********
;*****************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
;***********PROGRAMA
ORG 000H
LXI SP, 1FFFH
MVI A,08H
SIM
EI
BUCLE:
CALL TECLAACUM
CPI 11H ;tecla post
JZ SUMA
STA 1500H
CALL ACUMDISPLAY
CALL TECLAACUM
CPI 11H
JZ SUMA
STA 1501H
CALL ACUMDISPLAY
JMP BUCLE
;Si no se pone, sin casi ver el 2 sumando
;pone el resultado
;*******************SUMA
SUMA: LDA 1500H
MOV B,A
LDA 1501H
ADD B
DAA
CALL ACUMDISPLAY
JMP BUCLE
END
;***********************************
;****
EJERCICIO 4
****
;************************************
;MENSAJE INTERMINTENTE
*;***********SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
MENSDISPLAY EQU 041DH ;DISPLAY<=[HL]
;****************************DATOS
ORG 0050H
MENSAJE:
DB 10H,00H,11H,0AH
;HOLA
BLANCO:
DB 15H, 15H, 15H, 15H
; **************************PROGRAMA
ORG 0000H
MVI A,08H
SIM
EI
BUCLE:
LXI H,MENSAJE
CALL MENSDISPLAY
CALL PAUSA
LXI H,BLANCO
CALL MENSDISPLAY
CALL PAUSA
JMP BUCLE
;******************************PAUSA
;Esta pausa tiene que ser larga
;porque sino no da tiempo a verse el mensaje
;Son dos bucles uno dentro del otro
;Bucle1 cuenta el C de A a 0
;Para cada cuenta del Bucle1 hay un ciclo del Bucle2
;que es el D que va de FF a 0
;Es decir A*FF=10*255=2550 cuentas
;***********************************
;
SUBRUTINA PAUSA
;***********************************
PAUSA:
MVI D,0FFH
BUCLE1:
MVI C,0A0H
BUCLE2:
DCR C
JNZ BUCLE2
DCR D
JNZ BUCLE1
RET;
;***********************************
;****
EJERCICIO 5
****
;************************************
; CONTADOR *************
;**************************SUBRUTINAS
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
TECLAACUM EQU 044EH
;A<=TECLA
;****************************DATOS
*********************PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,08H
;Antes del bucle habra que asegurarse que DATO
;Tiene cargado un 00, y realmente es as DB 00H
SIM
EI
BUCLE: LDA DATO
INR A
STA DATO
;Hay que almacenar A pues la subrutina lo borra
CALL ACUMDISPLAY
CALL PAUSA
JMP BUCLE
;Falta aadir la subrutina PAUSA y la
interrupcin 7.5 que seran igual que en el ejercicio 3
;***********************************
;****
EJERCICIO 6
****
;************************************
; DOS CONTADORES ************
;***************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
HLDISPLAY
EQU 04C9H
;DISPLAY<=HL
;************************PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,08H
SIM
EI
MVI A,00H
STA 1500H
LXI H, 0000H
SHLD 1501H
BUCLE: LDA 1500H
;A<=[1500]
INR A
;A=A+1
STA 1500H
;[1500]<=A ;almaceno el acumulador
; antes de llamar a la subrutina
CALL ACUMDISPLAY
LHLD 1501H ;H<=[1501]
L<=[1502]
INX H ;H=H+1
SHLD 1501H
; [1501]<=H [1502]<=L almaceno antes de llamar
CALL HLDISPLAY
CALL PAUSA
JMP BUCLE
;Falta aadir la subrutina PAUSA y la
interrupcin 7.5 que seran igual que en el ejercicio 3
Pgina 138
;**************************************
;* EJERCICIO 7 CONTADOR DECADAS *
;**************************************
;**************************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
;****************************DATOS
;************************PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,08H
SIM
BUCLE: EI
LDA 1500H
;A<=[1500]
INR A
;A=A+1
CPI 0AH
;Hace la resta A-0A
JNZ SIGUE
;Si A=0AH=10D entonces, borra A
;, si no sigue como estaba
MVI A,00H
SIGUE: STA 1500H
;[1500]<=A almaceno el acumulador
; antes de llamar ; a la subrutina
CALL ACUMDISPLAY
CALL PAUSA
JMP BUCLE
;Falta aadir la subrutina PAUSA y la
interrupcin 7.5 que seran igual que en el ejercicio 4
;***************************************
;*EJER 8 LEER INTERPTORES A DISPLAY*
;***************************************
;***************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
;****************************************
;*
PUERTOS
*
;****************************************
;**************** PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,02H
OUT 20H
BUCLE: IN 21H
STA 1500H
CALL ACUMDISPLAY
LDA 1500H
JMP BUCLE
END
;***********************************
;****
EJERCICIO 9
****
;************************************
;
;**************** PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,0FH
OUT 20H
MVI A,80H
OUT 3BH
BUCLE: MVI A,11111111B
OUT 21H
OUT 22H
OUT 23H
OUT 38H
OUT 39H
OUT 3AH
CALL PAUSA
MVI A,00000000B
OUT 21H
OUT 22H
OUT 23H
OUT 38H
OUT 39H
OUT 3AH
CALL PAUSA
JMP BUCLE
;***********************************
;
SUBRUTINA PAUSA
;***********************************
PAUSA:
MVI D,0FFH
BUCLE1:
MVI C,0A0H
BUCLE2:
DCR C
JNZ BUCLE2
DCR D
JNZ BUCLE1
RET
END
Pgina 139
6.- EL SEMFORO
Tiene el siguiente esquema de cruces:
Las esquinas se llaman S1, S2,
S3 y S4 con sus correspondientes
semforos Gx, Fx y Px
golpe de
1
reloj
S1 PUERTO C 8255
puerto
OUT 3AH
semfor
P1
G1
F1
o
bits
VR
VNR
VNR
S2 PUERTO A 8255
OUT 38H
S3 PUERTO B 8255
OUT 39H
P2
G2
F2
P3
G3
F3
P4
G4
F4
VR
VNR
VNR
VR
VNR
VNR
VR
VNR
VNR
El puerto A del 8155 (OUT 21H) se utilizar como entrada para poner los semforos en intermitencia.
Cmo se envan estos valores? Al inicio del programa hay que insertar el siguiente cdigo:
MVI A, 80H
;carcter de control del 8255
OUT 3BH
;salida al control 8255
MVI A, 02H
;carcter de control del 8155
OUT 20H
;salida al control 8155
Conexiones :
Existen ms instrucciones del P8085 que se han omitido por sencillez, este tema no se
dar en clase ni se exigir en los exmenes, slo est para tu propio aprendizaje si te ha
gustado el tema:
Instrucciones de mover datos
LDAX B
A<=[BC]
STAX B
[BC]<=A
LDAX D
A<=[DE]
STAX D
[DE]<=A
LHLD addr H<=[addr] L<=[addr+1]
SHLD addr [addr]<=H [addr+1]<=L
XCHG
intercambia DE con HL
LXY B,addr BC<=addr
LXI D,addr DE<=addr
Instrucciones aritmticas que suman y restan con acarreo
ADC r ADC M
ACI dato
SBB r SBB M SBI dato
Instrucciones aritmticas que suman con registros dobles
DAD B
HL=HL+BC
DAD D
HL=HL+DE
Instrucciones lgicas tipo XOR
XRA r XRA M XRA dato
Instrucciones de salto
PCHL
PC=HL
RSTn
PC=8*n
Instrucciones para las subrutinas pero de forma condicional
Ccondicion
Rcondicion
Instrucciones de Pila
PUSH B
apila BC
PUSH D
apila DE
POP B
desapila BC
POP D
desapila DE
XTHL
intercambia SP con HL
SPHL
SP<=HL
Instrucciones para el programa ensamblador
Estas son instrucciones no propias de ensamblador, pero sirven para realizar los
programas ms complejos, utilizando letras y no nmeros.
Ejem
N
EQU 20
N equivale a 20
ORG 1000H
X:
DB 08H
aqu X equivale a 1000 y se mete un dato de byte el 08H
Y:
DS 1
aqu Y equivale a 1001 y ha reservado espacio de 1byte
Ejercicios avanzados
1.- Confeccionar un programa que sume 3 nmeros. Los nmeros se proporcionarn de forma
inmediata en el propio programa. Sern los nmeros 25H, A4H, 05H. El resultado se
almacenar en la direccin 1500H (Resultado CEH)
2.- Realizar un programa que sume los datos contenidos en las direcciones 1000 y 1001 y que se
almacene en el 1002. Comprobar el resultado
3.-Hacer el mismo ejercicio que el problema anterior pero almacenando el acarreo posible en la
direccin 1003. Comprobar el resultado
Pgina 141
4.- Realizar un programa que sume los datos contenidos en las direcciones 1000 1001 y 1002
que se almacene en el 1003 almacenando el acarreo posible en la direccin 1004. Comprobar el
resultado
5.-Realizar un programa que sume dos nmeros de dos bytes:
El primer sumando estar almacenado en las direcciones
El segundo sumando estar almacenado en las direcciones
El resultado y acarreo se almacenar en las direcciones
Comprobar el resultado
[1001] [1000]
+
[1003] [1002]
[1006] [1005] [1004]
8.- Realizar un programa que multiplique dos nmeros, el 8085 como todos los P de 8
bits no tienen instrucciones especficas para la multiplicacin, luego se desea un
programa que multiplique los n contenidos en las direcciones 1000 y 1001 y los
almacene en la 1002. Es decir [1002=[1000]*[1001]
9.- Hacer un programa que haga una divisin de dos nmeros Dividendo en la 1000,
divisor en la 1001 Cociente en la 1002 y resto en la 1003.
Igual que el ejercicio 18 el 8085 no tiene instrucciones especficas para la divisin,
luego hay que realizarlos manualmente es decir, si en la multiplicacin era haciendo sumas,
aqu es haciendo restas.
10.-Realizar un programa que sume los N primeros nmeros y el resultado almacenarlo en la
direccin 1001, el nmero N estar almacenado en la direccin 1000, es decir, si [1000]=6
entonces [1001]=1+2+3+4+5+6=21D=15H
11.- Este ejercicio trata de realizar un programa con varias decisiones. Supongamos dos
variables X almacenado en la direccin 1000 y la variable Y almacenado en la direccin 1001, y
otra variable Z almacenado en 1002. Realizar:
Si X<Y entonces Z=X+Y
Si X>Y entonces Z=X-Y
Si X=Y entonces Z=Y
12.-En el ejercicio 13 realizamos una suma de dos nmeros hexadecimales, y el resultado se
convirti en BCD, pero Y si los nmeros sumandos ya estn escritos en BCD? Habra que
convertirlos a HEX y aplicar el programa del problema 13.
El objetivo de este ejercicio se trata de convertir un nmero BCD en HEX. El nmero est
almacenado en tres posiciones de memoria, [1000][1001][1002] = Centenas, Decenas y
Unidades, el nmero resultante se almacenar en un slo byte, luego no tiene que pasar de
255D. Almacenar el resultado en 1003.
Pgina 142
Soluciones.
;***********************************
;****
EJERCICIO 1
****
;************************************
ORG 2000H
MVI A,25H
MVI B, A4H
ADD B
MVI B,05H
ADD B
STA 1500H
END
***********************************
;****
EJERCICIO 2
****
;************************************
;Datos
ORG 1000H
X
DB 12H
Y
DB 0A6H
RES
DB 45H
;Resultado : 68H
;Programa
ORG 2000H
LDA X
; A<=[1000]
;Equivale a LDA 1000H o LXI H,X
MOV A,M
LXI H,Y
; M<=[1001] Equivale a LXI H,1001H
ADD M
;A<=A+M
STA RES
;Equivale a STA 1002 o LXI H,RES MOV M,A
END
;***********************************
;****
EJERCICIO 3
****
;************************************
Sera aadir en los datos :
ACARR
DB 00H
y en el programa las siguientes lneas :
MVI A,0H
;A<=0 tambin con XRA A
ACI 0
;A<=A+0+CY Se carga el acarreo
STA ACARR
;Almacena el acarreo
;Probarlo con los nmeros E6+CA = 160
;(1 de acarreo)
;***********************************
;****
EJERCICIO 4
****
;************************************
; [1003]= [1000]+ [1001]+ [1002] [1004]=Acarr
;Datos
ORG 1000H
DAT
DB 0C5H, 0A4H, 0C5H;Los sumandos
RES
DB 00H
;El resultado= 22EH
ACAR DB 00H ;El acarreo es 2 (22EH)
;Programa
ORG 2000H
STC
;con estas dos instrucciones
CMC
;borramos el acarreo CY=0
LXI H,DAT
;o LXI H,1000H ahora HL apunta al primer
;sumando
MOV A,M
;A=[1000]
INX H
;HL apunta al segundo sumando
ADD M
;A=A+[1001]
STA RES
;Guarda el resultado
MVI A,0
;A<=0 o XRA A
ACI 0
;A<=CY
STA ACAR
;***********************************
;****
EJERCICIO 5
****
;************************************
;
[1001] [1000]
;
+
[1003] [1002]
;
[1006]
[1005] [1004]
;Datos
ORG 1000H
XH
DB 0D5H
XL
DB 0B6H;Primer sumando D5B6H
YH
DB 3AH
YH
DB 5CH ;Segundo sumando 3A5CH
SUMH DB 00H
SUML DB 00H ;Resultado de la suma que en este
;caso ser D5 B6+3A5C=1 10 12
ACAR DB 00H ;Acarreo (en nuestro caso ser 01)
;Programa
ORG 2000H
STC
CMC
;CY=0
LDA XL ;A=XL
LXI H,YL
;M=YL
ADD M
;A=XL+YL
STA SUML
LDA XH ;A=XH
LXI H,YH
;M=YH
ADC M
;A=XH+YH aqu se suma con el acarreo
;posible de la anterior suma XL+YL
STA SUMH
MVI A,0 ;A=0
ACI 0
;A=CY
STA ACAR
END
;***********************************
;****
EJERCICIO 6
****
;************************************
****con registros dobles*****
;
[1001] [1000]
;
+
[1003] [1002]
;
[1006]
[1005] [1004]
;Datos
ORG 1000H
X
DB 0D5H, 0B6H ;Primer sum. D5B6H
Y
DB 3AH,5CH
;Segundo sum. 3A5CH
SUM
DB 00H, 00H
;Resultado de la suma
;en este caso ser D5 B6+3A5C=1 10 12
ACAR DB 00H ;Acarreo (en nuestro caso ser 01)
;Programa
ORG 2000H
LHLD X
XCHG ;DE=[1001] [1000]
LHLD Y ;HL=[1003] [1002]
DAD D ;HL=HL+DE
Pgina 143
SHLD SUM
; [1005] [1004]=HL
MVI A,0
RAL
;Otra forma de cargar el
;acarreo, tambin podra haber sido ACI 0
STA ACAR
END
;***********************************
;****
EJERCICIO 7
****
;************************************
; en BCD [1002]=[1000]+[1001] [1003]=CY
;Datos
ORG 1000H
X
DB 58H
;En decimal =88
Y
DB 63H
;En decimal = 99
SUM
DB 00H
;En nuestro caso 58+63=66H que en decimal es 187
;luego se grabar 87
ACAR DB 00H ;En nuestro caso un 1 (187)
;Programa
ORG 2000H
STC
CMC
;CY=0
LDA X
;A=[1000]
LXI H,Y ;M=[1001]
ADD M
;A=[1000]+[1001]
DAA
;Ajuste a BCD
STA SUM
;Guardarlo en 1002
MVI A,0
ACI 0
STA ACAR
;Guardando el acarreo
END
;***********************************
;****
EJERCICIO 8
****
;************************************
; [1002]=[1000]*[1001]
;Para multiplicar lo que hay que hacer es ;sumar
tantas veces el n Y
; ORGANIGRAMA
;
C <=[1000]
;
B <=[1001]
;
A <=0
;
A<= A+B
;
HL<=HL + 1
;
C <= C - 1
;
NO ES 0? S
;
N
; ALMACENAR RESULADOS FIN
; ejemplo :
;
C
B
A
;
3
4
0
;
2
4
;
1
8
;
0
12
;************************************
;Datos
ORG 1000H
X
DB 03;
; como lo diga X, se
;meter en C y el A acumular las sumas
Y
DB 06 ;
C=3
A=0
PROD DB 00 ;
C=2
A=6
;Programa
C=1
A=12D=0CH
LXI SP, 3000H; C=0
A=18D=12H
LDA X ;
FIN
CPI 0
;Compralo con el 0
JZ FIN
;Si es 0 que vaya a fin
MOV C,A
;C tiene el n de veces que hay que sumar
Pgina 144
;***********************************
;****
EJERCICIO 10
****
;************************************
;Suma de N primeros nmeros
;el acumulador va sumando mientras lo mande N
;Datos
ORG 1000H
N
DB 6H
RES
DB 0
;A=0
C=6
;Programa
;A=06H=06D
C=5
ORG 2000H
;A=0BH=11D
C=4
LXI SP,3000H
;A=0FH=15D
C=3
LDA N
;A=12H=18D
C=2
MOV C,A
;A=14H=20D
C=1
MVI A,0
;A=15H=21D
C=0
FIN
BUCLE: ADD C
DCR C
JNZ BUCLE
STA RES
END
;***********************************
;****
EJERCICIO 11
****
;************************************
; Si X<Y entonces Z=X+Y Si X>Y entonces Z=X-Y
;Si X=Y entonces Z=Y
;Datos
ORG 1000H
X
DB 12H
Y
DB 22H
Z
DB 00H
;En este caso en Z se almacenar 12H+22H=34H
;Programa
ORG 2000H
LDA X
;A=X
LXI H,Y ;M=Y
CMP M ;Hace la comparacin A-M =X-Y
JZ CASO3
JP CASO2
CASO1: ADD M
;A=A+M=X+Y
JMP FIN
CASO2: SUB M
;A=A-M=X-Y
JMP FIN
CASO3: MOV A,M
;A=M=Y
FIN:
STA Z
END
;***********************************
;****
EJERCICIO 12
****
;************************************
;Convertir BCD a HEX
;Datos
ORG 1000H
BCD
DB 01D,06D,04D
;El nmero BCD es el 164D que en Hex es A4H
HEX
DB 00
;Programa
ORG 2000H
MVI A,0
LXI BCD
MOV C,M
CENT: DCR C
JM FINCENT
;Si es negativo, que salte a hacer las decenas
ADI 64H ;A=A+100 pues 64H=100D
JMP CENT
FINCENT:INX H
MOV C,M
DEC:
DCR C
JM FINDEC
ADI 0AH
;suma 0AH=10D
JMP DEC
FINDEC: INX H
MOV C,M
UNI:
DCR C
JM FINUNI
ADI 01H
;suma 1
JMP UNI
FINUNI: STA HEX
;Almacenar el resultado
END
Pgina 145
Para utilizar el micro 8085 desde el PC, se debe de poner el conmutador Teclado/CRT en la posicin
CRT. En el fichero CONFIG.SYS del PC debe de existir la lnea DEVICE=ANSI.SYS. Y tambin tener
conectado un cable conexin serie de tres hilos de la siguiente forma:
En el micro (tres hilos)
TX ------------------------RX ------------------------GND -----------------------
En el PC (macho de 25 pines)
RX (3)
TX (2)
RTS (4) con CTS (6)
GNE (5)
DSR (7) con DTR (8)
Ejecutar el fichero DDT85 he indicar en qu puerto esta COM1 COM2 etc..., de esta forma se consigue
una comunicacin de 2400 baudios cada dato de 8 bits, con 2 de stop. Pulsar INIC antes de utilizar los
comandos.
HACERHEX PRUEBA, es un fichero BATH hecho en MS-DOS que ensambla y ejecuta a la vez el
DDT85, para ver los comandos de este programa ver Apendice B.
Gdireccin comienzo
=ejecuta el programa desde la direccin comienzo, si no se pone, ejecuta desde
donde apunta el registro PC.
N
I direccin
Mdireccin baja, direccin alta, destino = mueve la memoria, ejem M1E00,1E06,1F00 = mueve el
bloque de memoria desde la 1E00 hasta 1E06 a la 1F00
Sdireccin
Xregistro
=Visualiza y modifica los registros, ejem XA, si no se pone el registro, los visualiza en
este orden: A B C D E F H L M P S
L
nombre del programa offset = carga un programa desde el ordenador a partir de la
direccin 1000H, el offset es el nmero de posiciones de memoria que se incrementa el programa, ejem
offset=10, entonces lo carga en la 1010, luego es aconsejable utilizar en vuestros programas ORG 0000H
o ORG 0500H
H
= fin de la comunicacin
Pgina 146
CI111
CO1
PRIMES
0AB7
04C9
0B74
037D
ADRD
UPDAD
DELAY
GTHEX
02BF
TODIR
retraso de 1 mseg
n hex de 2 bytes ejem A725 desde el teclado, al display y
al registro DE
Idem que el anterior, pero sin visualizarlo
F
AF
AHLF
ABCF
TODOS
Leer:
Posicionar la cinta en la posicin que se dej, para esto se tiene que llevar la cuenta.
Pulsar E, con CODE (Comienzo destino) introducir la direcin de comienzo, pulsar EJEC
con PrO introducir un n de programa entre la 00 hasta la FF
poner Play, y pulsar EJEC, si sale . es que esta en lectura, si sale - es que ha acabado,
volumen medio alto.
SMANT=13H
EREG=14H
EJEC=15H
Pgina 147
int i;
for(i=0;i<=10;i++)
printf ("Hola");
Ensamblador para PC
push
ebp
mov
ebp,esp
push
ecx
Mquina para PC
00401010
00401011
00401013
mov
00401014
jmp
main(0x00401026)+16h
0040101B
mov
0040101D
add
eax,1
00401020
mov
00401023
cmp
00401026
jg
main(0x0040103b)+2Bh
0040102A
push
offset ___xt_z(0x00411a30)+104h
0040102C
call
printf(0x00401060)
00401031
add
esp,4
00401036
jmp
main(0x0040101d)+0Dh
00401039
mov
esp,ebp
0040103B
pop
ebp
0040103D
ret
0040103E
En realidad el cdigo mostrado es de 32 bits, luego este programa slo puede runear en PC con
Win9x, un 8086/88 no podra resistirlo, pero si 486 hacia delante sin Win3.x pues es de 16 bits.
Pgina 148
Pgina 149
INDICE DE GLOSARIOS
[
A 122
bacos ............................................................ 57
AC................................................................. 122
555 .................................................................. 55
ACUMDISPLAY.......................................... 130
7400 .................................................................. 6
7402 .............................................................. 6, 7
alarma ............................................................... 7
7404 ................................................................ 14
74121 .............................................................. 54
74122 .............................................................. 54
74123 .............................................................. 54
74138 .............................................................. 16
74139 .............................................................. 16
ampliacin de MUX........................................ 24
7414 ................................................................ 56
AND ................................................................ 76
74150 .............................................................. 17
74151 .............................................................. 17
API .................................................................. 69
74166 .............................................................. 29
74190 .............................................................. 38
74191 .............................................................. 38
74192 .............................................................. 38
74194 .............................................................. 29
74221 .............................................................. 54
Autmatas ........................................ 69
7447 ................................................................ 17
B 122
7475 ................................................................ 29
BCD 16, 20, 22, 25, 27, 28, 38, 49, 50, 142, 144,
145
7483 ................................................................ 25
7485 ................................................................ 17
7490 ................................................................ 38
7491 ................................................................ 29
7493 ................................................................ 38
7494 ................................................................ 29
7495 ................................................................ 29
74LS139 ....................................................... 100
Pgina 150
Biestable RS ................................................... 29
CY................................................................. 122
D 122
Biestable T...................................................... 29
biestables ........................................................ 29
Boole ................................................................ 6
Booleana ........................................................... 5
bucles............................................................ 127
Decodificadores .............................................. 19
DEMUX .......................................................... 21
detector ............................................................. 7
C 122
E 122
CO CONECTORES ..................................... 76
contactores ...................................................... 75
Generador de pulsos........................................ 76
Grafcet ........................................................... 74
contadores....................................................... 38
H 122
CPU................................................................ 70
cronogramas ................................................... 30
MOV............................................................. 123
msi................................................................... 16
IN ................................................................. 125
MUX de 4 canales........................................... 18
NAND ............................................................. 76
J 125
JMP.............................................................. 125
K7 ................................................................. 120
NOT ................................................................ 76
L 122
off...................................................................... 7
on ...................................................................... 7
OR ................................................................... 76
OUT.............................................................. 125
P 122
LOGO ............................................................. 75
panificadora .................................................... 83
M 123
PAUSA........................................................... 129
Siemens ........................................................... 92
simplificando .................................................. 13
SIPO ................................................................ 29
SISO ................................................................ 29
STA............................................................... 123
STC............................................................... 124
SUB............................................................... 124
registros .......................................................... 29
RET.............................................................. 125
retardadores .................................................... 56
TECLAACUM.............................................. 132
Telerruptor ...................................................... 76
trigers .............................................................. 56
U.C................................................................ 122
S 122
semisumador................................................... 25
Z 122
Pgina 153