Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Digital Problems
Digital Problems
Profesor :
J. Javier Quintana Peiró
Registro Legal de propiedad de autor :
AB-482-2002
CDU: 621.3 (076)
1
Indice :
2
6.3 Soluciones a los problemas_______________________________________________ 58
6.3.1 Soluciones monoestables con puertas lógicas y 74121 74221 74122 y 74123 _____________ 58
6.3.2 Soluciones a los problemas con el 555 ___________________________________________ 59
6.3.3 Soluciones a los problemas con trigerr y retardadores _______________________________ 60
7 ALARMA AIN 302 __________________________________________________ 61
8.1.- ¿Qué es un autómata programable? ______________________________________ 69
8.2 Partes de un autómata programable_______________________________________ 70
8.3.- Lenguajes de programación ____________________________________________ 73
8.4 Caso práctico Autómata LOGO! 230RC ___________________________________ 75
8.5 Programación del LOGO! _______________________________________________ 76
8.8 Ejercicios con el LOGO! ________________________________________________ 78
8.8.1 Ejercicios manejo funciones generales ___________________________________________ 78
8.8.1 Ejercicios manejo funciones específicas__________________________________________ 79
8.8.3 Ejercicios globales funciones generales+funciones especiales GF+SF teóricos ___________ 80
8.8.4 Ejercicios GF+Sf casos prácticos _______________________________________________ 82
8.9 Soluciones ejercicios del LOGO __________________________________________ 84
8.9.1 Soluciones a los ejercicios de funciones generales GF _______________________________ 84
8.9.2 Soluciones a los ejercicios LOGO funciones especiales _____________________________ 86
8.9.3 Soluciones a los ejercicios GF+SF teóricos _______________________________________ 87
8.9.4 Soluciones a los ejercicios GF+SF casos prácticos _________________________________ 90
8.10 Ejemplos prácticos del LOGO___________________________________________ 93
8.10.1 Pulsador de Confort ________________________________________________________ 93
8.10.2.-Puerta automática _________________________________________________________ 94
8.10.3.- Instalación de ventilación ___________________________________________________ 94
8.10.3.- Instalación de ventilación ___________________________________________________ 95
8.10.4.- Portón corredizo __________________________________________________________ 96
8.10.5.- Cadenas luminosas ________________________________________________________ 97
8.10.6.- Bomba de aguas residuales__________________________________________________ 98
9 Problemas de memorias.______________________________________________ 99
9.1 Enunciados ejercicios de memorias _______________________________________ 99
9.2 Soluciones ejercicios de memorias _______________________________________ 101
10 Microcontroladores CPIC16F84 ____________________________________ 107
1 Introducción a los microcontroladores _____________________________________ 107
1.1 Tipos de PIC _______________________________________________________________ 108
1.2 Características del PIC 16X84 __________________________________________________ 108
1.3 Herramientas para la compilación _______________________________________________ 109
1.4 ¿Cómo se hace con lenguaje ensamblador? ________________________________________ 110
1.5 ¿Cómo se hace con Basic?_____________________________________________________ 110
1.6 ¿Cómo se hace en C? _________________________________________________________ 110
1.7 Simulación SIMUPIC ________________________________________________________ 111
1.8 ¿Cómo se programa el PIC? ___________________________________________________ 112
1.9 Placa TE20 ________________________________________________________________ 113
2 Breve repaso al lenguaje C _______________________________________________ 113
3 Ejercicios _____________________________________________________________ 115
3.1 Enunciados ________________________________________________________________ 115
3.2 Soluciones _________________________________________________________________ 116
4 tarjetas PIC ___________________________________________________________ 118
11 Microprocesador P 8085 __________________________________________ 119
3
1.- INTRODUCCIÓN Microprocesador 8085 _________________________________ 119
1.1.- El 8085 dentro de los tipos de microprocesadores que hay ___________________________ 119
1.2 En resumen ________________________________________________________________ 120
2.- Hardware del 8085 ____________________________________________________ 121
3.- Instrucciones del 8085 __________________________________________________ 123
3.1.- Instrucciones de transferencia de datos __________________________________________ 123
3.2.- Instrucciones aritméticas _____________________________________________________ 124
3.3.- Instrucciones lógicas ________________________________________________________ 124
3.4 Instrucciones de desplazamiento ________________________________________________ 125
3.5 Instrucciones de salto ________________________________________________________ 125
3.6 Instrucciones para las subrutinas ________________________________________________ 125
3.7.-Instrucciones de control ______________________________________________________ 125
4.- Manejo del simulador 8085 SIM8085 _____________________________________ 126
4.1 EJERCICIOS CON EL SIMULADOR 8085 ______________________________________ 127
9.3.1.1.-Ejercicios de transferencia de datos ________________________________________ 127
9.3.1.2 Ejercicios de operaciones aritméticas _______________________________________ 127
9.3.1.3 Ejercicios de bucles _____________________________________________________ 127
9.3.1.4. Ejercicios con subrutinas y puertos ________________________________________ 127
4.2 Soluciones ejercicios sim8085. _________________________________________________ 128
5.- Manejo entrenador 8085 ________________________________________________ 130
5.1 Prácticas para el manejo del entrenador __________________________________________ 130
5.2.- ¿Cómo grabar y ejecutar el programa en el entrenador? _____________________________ 131
5.3 Hardware y Mapa de memoria en el entrenador ____________________________________ 131
5.4.- Subrutinas prediseñadas de fábrica _____________________________________________ 132
5.5 Interrupciones ______________________________________________________________ 133
5.6.- Entrada y salida ____________________________________________________________ 134
9.4.6.1.-Periféricos del entrenador 8085 ___________________________________________ 134
9.4.6.2.-¿Cómo programar los puertos?____________________________________________ 134
5.7 EJERCICIOS CON EL P 8085 ________________________________________________ 136
9.4.7.1 EJERCICIOS DE RUTINAS DE CONSOLA ________________________________ 136
9.3.7.2 EJERCICIOS DE PUERTOS _____________________________________________ 136
5.8 EJERCICIOS CON EL P8085 ________________________________________________ 137
6.- El semáforo __________________________________________________________ 140
7.- pROGRAMACIÓN AVANZADA 8085 ___________________________________ 141
Soluciones. ___________________________________________________________________ 143
APENDICE A CONEXIÓN ENTRE 8085 Y EL PC ___________________________ 146
APENDICE B COMANDOS ENTRE 8085 Y EL PC ___________________________ 146
APENDICE C COMANDOS ENTRENADOR 8085 ___________________________ 147
APENDICE D SUBRUTINAS PREDISEÑADAS ______________________________ 147
APENDICE E GRABAR Y LEER DESDE CASSETTE ________________________ 147
APENDICE F LENGUAJE ALTO NIVEL, ENSAMBLADOR Y MÁQUINA ______ 148
Apendice G Problemas Digital Mc Graw _____________________________________ 149
Indice de glosarios _______________________________________________________ 150
4
1 Problemas puertas lógicas, karnaugh ...
1.1 ENUNCIADOS
1. Pasar el circuito formado por puertas lógicas o circuito combinacional a función lógica o Booleana
3.- Pasa la función lógica de los circuitos combinacionales siguientes a tabla lógica o tabla de verdad
a) F = A'BC'+A'BC+AB'C'+ABC'
b)
5. Convierte las siguientes tablas a funciones lógicas utilizando el método de los MINitérminos y
MAXitérminos
Tabla a)
a b c F
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
5
Tabla b)
nº a b c d F
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
9. Supongamos un sistema de alarma de tres interruptores a b y c, cuando esten los tres en Off, o sólo el b
On tiene que activarse la alarma, el caso contrario también, es decir cuando esten los tres On o sólo el b
Off. Realizar el circuito en puertas NAND.
10. Supongamos una alarma de tres interruptores que se tiene que activar cuando esté sólo b en Off o sólo
el b en On. Si sólo esta el interruptor c en On o sólo esta en Off es indiferente la activación del sistema.
También si están todos en Off es indiferente.
11. Teniendo en cuenta sólo las entradas I1 I2 I3 e I4 realizar un programa que Q1=1 si el número de
interruptores activados superan o igualan al número de interruptores desactivados. Realizarlo con puertas
NAND de dos entradas 7400.
12. Teniendo en cuenta sólo las entradas I1 I2 I3 e I4, hacer un programa que si hay dos interruptores
contíguos activados, entonces Q1=1. Si I1=0 e I4 =0 entonces la salida Q1 es indiferente. Realizarlo con
puertas NAND de dos entradas 7400.
6
13. Diseñar un circuito de apertura de un garaje de coches, existen 4
entradas, mirando la figura:
a = detector de coche en la entrada
b = llave de entrada
c = detector de coche que quiere salir
d = llave de abrir dentro del garaje
Se tienen 5 salidas en el circuito :
M = Motor de la puerta. 0 = cierra. 1 = abrir.
R1 V1 = Luces roja y verde a la entrada del garaje
R2 V2 = Luces roja y verde dentro del garaje.
Se tiene que abri si se hay coche en la entrada y acciona la llave de entrada y no hay nadie dentro o si
hay alguien dentro y acciona la llave de abrir.
La luz roja R1 se tiene que encender si hay alguien dentro que quiere salir. La luz V1 se tiene que
encender si hay alguen fuera, y dentro no hay nadie.
La luz roja R2 se tiene que encender si hay alquien fuera que quiere entrar, y la luz V2 se tiene que
encender si hay alguien dentro y fuera no hay nadie.
Si hay dos coches en la entrada y dentro y los dos accionan la llave a la vez, las luces deben de indicar
que tiene preferencia el de dentro, la puerta se abre.
Diseñar el circuito con el mínimo de circuitos integrados. No diseñar los finales de carrera, sistemas de
seguridad y el sistema automático de cierre de la puerta. Realizarlo con puertas NAND de 2 ent
14. Diseñar un circuito lógico de un sistema de alarma de 3 interruptores a b y c, que se active si hay
sólo dos interruptores encendidos, si sólo esta el b tiene que estar apagado, y el resto de combinaciones es
indiferente la salida. Realizarlo con puertas NAND de 2 ent 7400
15. Diseñar un circuito lógico de un sistema de alarma de 4 interruptores a b c y d , que se active si hay 3
o 4 interruptores activados, se desactive si hay uno o ninguno activado y es indiferente si hay 2 activados.
Realizarlo con puertas NOR 7402
16. Realizar un circuito lógico de 4 interruptores a b c y d de tal manera que se active si b y c estan en
sólos en "on" o a y c estan en sólos en "on" o b y a estan en sólos en "on" o sólo c esta en "off".
Si esta sólo c en "on" o el a sólo en "on" o el d sólo en "off" o todos en "on" entonces la activación del
sistema es indiferente. El resto de estados 0. Utilizar el mínimo de puertas lógicas.
7
1.2 SOLUCIÓN A LOS PROBLEMAS DE PUERTAS LÓGICAS,
KARNAUGH ...
1. a) ( a·b) ( c d )
8
b) Se realiza operando en cada una de las combinaciones resultando :
a b c F
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 0
4.- a) El primer ejercicio, tiene de tabla de verdad la siguiente, que se puede hacer calculandolos de uno
en uno, o viendo que al ser una puerta OR saldrá los unos de cada puerta, que en un caso en cuando A y B
sean a la vez 0 y 0 y en el otro caso será cuando c y d sean a la vez 0 y 0
nº a b c d F
0 0 0 0 0 1
1 0 0 0 1 1
2 0 0 1 0 1
3 0 0 1 1 1
4 0 1 0 0 1
5 0 1 0 1 0
6 0 1 1 0 0
7 0 1 1 1 0
8 1 0 0 0 1
9 1 0 0 1 0
10 1 0 1 0 0
11 1 0 1 1 0
12 1 1 0 0 1
13 1 1 0 1 0
14 1 1 1 0 0
15 1 1 1 1 0
b) En este ejercicio tan
complejo, lo mejor es hacer
combinaciones pero de cada uno de
los subcircuiotos
9
5. a) En MINitérminos tenemos : F a·b·c a·b·c a·b·c a·b·c
En MAXitérminos : F ( a b c )·( a b c )·( a b c )·( a b c )
b) En MINitérminos
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 a·b·c·d a·b·c·d a·b·c·d a·b·c·d
En MAXitérminos
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 b·a a a a 1
b) F a·b·c a·b·c a·b·c·d ac ac abc ac abc ac
c) F a·b·( a·b·c a·b·c ) a·b( ab ab) ab·ab ab
d) F a b c a 1 b c 1
e) F a·b·c a·b·c a·(bc ) a·(bc ) a
f) F a·b·c a (Teorema 2 llamando ab B ) aB a a B a bc
7. Haciendo MORGAN
10
c) Bueno, y este mucho más ....
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 sería de la siguiente forma ...
11
b)
( a b)( c d )b(b c( c ( d e)) ( a b)( c d )b(b c( c ( d e))
( a b) ( c d ) b ( b c ( c ( d e ) ) ( a b) ( c d ) b ( b c ( c ( d e ) ) )
( a b) ( c d ) b ( b c ( c ( d e ) ) )
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 solución 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 Q1 I1 I2\I3 I4 00 01 11 10
0000 0 00 0 0 1 0
0001 0 01 0 1 1 1
0010 0 11 1 1 1 1
0011 1 10 0 1 1 1
0100 0 La función es simplificando
0101 1 F=I3I4+I1I2+I2I3+I2I4+I1I3+I1I4
0110 1
0111 1
1000 0
1001 1
1010 1
1011 1
1100 1
1101 1
1110 1
1111 1
12 Aquí lo que hay que hacer es una tabla de verdad con su correspondiente tabla de karnaugh :
I1I2 I3 I4 Q1
0000 x
0001 0
0010 x
0011 1
0100 0
0101 0
0110 1
0111 1
1000 x
1001 0
1010 x
1011 1
1100 1
1101 1
1110 1
1111 1
I1 I2\I3 I4 00 01 11 10
00 X 0 1 X
01 0 0 1 1
11 1 1 1 1
10 X 0 1 X
La función es simplificando
Q1=I3 + I1I2
13
13. La tabla de verdad y las funciones de karnaugh ya simplificadas y pasadas a puertas NAND es
15. La función simplificada queda F=ab+cd pero para pasarla a puertas NOR hay que hacer Morgan :
14
17. El circuito tiene como solución F a * c b * d que al pasar en puertas NAND queda el circuito
de la derecha, pero usando la lógica negativa, nos ahorramos 4 puertas NOT con el circuito de la derecha.
15
2 Problemas de códigos y circuitos msi.
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 sólo el b
On tiene que activarse la alarma, el caso contrario también, es decir cuando esten los tres On o sólo 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 genérico de 4 canales a 1
9. Teniendo en cuenta sólo las entradas a b c y d realizar un programa que F=0 si el número de
interruptores activados superan o igualan al número 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
10 Diseñar un circuito de apertura de un garaje de coches, existen 4 entradas, mirando la figura:
a = detector de coche en la entrada
b = llave de entrada
c = detector de coche que quiere salir
d = llave de abrir dentro del garaje
Se tienen 5 salidas en el circuito :
M = Motor de la puerta. 0 = cierra. 1 = abrir.
Se tiene que abrir si se hay coche en la entrada y acciona la llave de entrada y no hay nadie dentro o si
hay alguien dentro y acciona la llave de abrir. Si son los dos, se abre, existirá una luz de aviso para este
caso.
Diseñar de apertura del motor el circuito con el mínimo de circuitos integrados. No diseñar los finales de
carrera, sistemas de seguridad y el sistema automático de cierre de la puerta. Realizarlo con 74151.
12. Deducir la tabla de verdad del circuito combinacional msi de la figura (fijarse bien) :
Problema 12
Problema 13
Problema 15
18
2.3 ESQUEMA DE LOS DECODIFICADORES
Decodificador 74138 de 3 a 8
Decodificador 74159 de 4 a 16
19
2.4 SOLUCIONES A LOS PROBLEMAS DE CÓDIGOS
1.- Rellena la siguiente tabla :
20
5.- El bit más alto activo en la entrada del codificador 74148 es el 3 = 011, que
negado es el 100=4 este número lo recibe el decodificador a displays 7447 que
visualizará el nº4.
6. El 74151 es un MUX de 8 canales, y como se puede ver la selección 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 selección 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
selección CBA=001=1 sólo 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
8. Las soluciones a los ejercicios son
9. a) Para hacerlo con el Decodificador 74159 tenemos que poner en las entradas la tabla de verdad del
problema, y los pines de seleccción ponerlo según 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 selección, como en la tabla de verdad el 'd' es el de menor peso, le corresponde el pin 'A'
de selección :
La salida es negada, por eso se ha añadido una puerta NOT en la entrada, si se quiere ahorar esa puerta
NOT se puede pero poniendo la tabla de verdad al revés :
d) Con el 74151 al ser un MUX de 8 canales, en cada canal hay que poner la relación que tiene la función
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 función se tiene que
construir según la relación con la variable de menor peso de la tabla de verdad ('D'), y ponerlo en los
canales de entrada, las variables de selección se ponen según 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 sólo 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 cómo 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 saldrán invertidos, por eso se enseña la
columna F negada que es la de los canales de entrada y F sin negar, que es la negación de ésta última.
13 En este caso es un decodificador décadas, como las salidas estan negadas, y la puerta lógica 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)
15 Para realizar una ampliación de MUX el de abajo (que tiene la parte alta de la selección) seleccióna el
canal de salida de los
MUX de arriba que
tienen la selección
más baja.
24
3. Problemas de aritmética binaria
3.1 ENUNCIADOS DE EJERCICIOS DE SUMA BINARIA
1. Realiza la siguiente suma de forma binaria : 6+8+10+9+14+3 = 50
25
3.5 SOLUCIONES EJERCICIOS SUMA BINARIA
1. Pasamos los sumandos a binario, se suma, y se comprueba el resultado :
111
1111
6 0110
8 1000
10 1010
9 1001
14 1110
+ 3 0011
50 110010
2 Pasamos los sumandos a binario, se suma, y se comprueba el resultado :
111111
725 1011010101
60 0000111100
785 1100010001
3. Es muy fácil, se realiza la tabla de verdad de la suma, y se pasa a puertas lógicas, ésto es lo que tiene
un semisumador :
6. Hay que fijarse en añadir 0 en el número más pequeño para igualarse con el más grande, poner los bits
de signo y pasar el número negativo a complemento uno
111 111
725 1011010101 01011010101
-60 0000111100 11111000011
665 1 01010011000
1
01010011001
26
7. Hay que fijarse en añadir 0 en el número más pequeño para igualarse con el más grande, poner los bits
de signo y pasar el número 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 añadir 0 en el número más pequeño para igualarse con el más grande, poner los bits
de signo y pasar el número 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 añadir 0 en el número más pequeño para igualarse con el más grande, poner los bits
de signo y pasar el número negativo a complemento uno y despues sumarle un uno
60 0000111100 00000111100
725 1011010101 0100101010 10100101011
-665 0 10101100111
pasandolo a C1 ===>> -1010011000
y sumándole 1=> 1010011001 = - 665
10.- Se pasa el número a BCD y se suma cifra a cifra teniendo en cuenta que si es 1010 o mayor hay que
hacer la corrección (+0110) :
1 1
1725 0001 0111 0010 0101
8860 1000 1000 0110 0000
10585 1010 1111 1000 0101
0110 0110
1 0000 0101 => 1085
11.- Hay que pasar los números a BCD y el número negativo hacer el C9 con el bit de signo
correspondiente : 1
14 14 0 0001 0100
- 04 => C9 => - 95 1 1001 0101
10 1 0 1010 1001
0110
0000
+1
0 0001 1010
0110
0000 = +10
12. Hay que pasar los números a BCD y el número negativo hacer el C9 con el bit de signo
correspondiente : 1
04 04 0 0000 0100
- 14 => C9 => - 85 1 1000 0101
-10 0 1 1000 1001
0
1 1000 1001 = 89 =>C9 => -10
27
13. Hay que pasar los números a BCD y el número 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 números a BCD y el número 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
17 - Lo mejor es pasarlo a binario, y realizar la resta en binario, elegimos hacer en C2 aunque se puede
hacer en C1
28
4 Problemas de biestables y registros
4.1 RESUMEN DE BIESTABLES Y REGISTROS
BIESTABLES
R S Qn J K Qn
0 0 Qn-1 0 0 Qn-1
0 1 1 0 1 0
1 0 0
1 0 1
1 1 x
1 1 Q
T Qn
D Qn
0 Qn
0 0
1 Q
1 1
REGISTROS
29
4.2 ENUNCIADOS DE PROBLEMAS DE CRONOGRAMAS DE
BIESTABLES
2.- Dibujar la forma de onda de salida del siguiente Biestable RS síncrono por nivel
3.- Dibujar la forma de onda de salida del siguiente Biestable RS síncrono 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 Sínclono por flanco de subida
6.- Dibuja la forma de onda de salida del siguiente biestable JK síncrono 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 síncrono por los dos flancos (master-
slave)
8.- Dibuja la forma de onda de salida del siguiente biestable T síncrono por flanco de subida
30
10 Dibuja la forma de salida del siguiente biestable D síncrono por flanco de subida
31
17.- Rellenar la siguiente tabla de un 7494
32
19 Rellena la siguiente tabla de funcionamiento de un 7495
entrada salida
CLK1 CLK2 MC SI ABCD QA QB QC QD comentarios
1 1 0 0101
0 0 0 0100
1 0 1 0100
0 0 1011
1 0 0 1010
x 0 0 1110
0 1 0 1111
x 1 1 Qb Qc Qd 0
0 1 0 Qb Qc Qd 0
x 0 0 0000
1 1 0 Qb Qc Qd 1
1 0 1 1 Qb Qc Qd 1
0 1 0 0010
21 ¿Cómo harías un juego de luces con el 74194 de tal manera que un 1 siempre circulase?
33
4.4 SOLUCIONES A LOS PROBLEMAS DE CRONOGRAMAS DE
BIESTABLES
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í sólo tiene que hacer caso al nivle del reloj, si R=S=1 no esta definido, se ha representado en vacío
por simplicidad.
3.- Igualmente la solución es como el ejercicio anterior, pero ahora hay estados que son más pequeños
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 indeterminación 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 sólo cuando lo permite el reloj
34
10 La salida es ya diferente respecto al otro ejercicio :
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, según las órdenes del reloj en flanco
de bajada pues la entrada CLK de cada biestables esta negado :
16 La solución es :
35
17 La solución es :
ENTRADAS estado interno salida
CL PE1 PE2 P1A P1B P1C P1D P2A P2B P2C P2D SI clk QA QB QC QD Out
1 0 1 0111 1110 1 0000 0
0 1 0 0101 1101 0 X 0101 1
0 0 0 0101 1100 1 1010 0
0 0 0 1111 0010 0 0101 1
0 0 0 0101 1101 1 0 0101 1
0 0 0 1101 1111 0 0010 0
0 0 0 0011 1100 0 0001 1
0 0 0 0011 0011 1 1 0001 1
0 0 0 0000 0000 0 0000 0
0 0 1 0000 1001 1 X 1001 1
0 0 0 0000 0000 0 0100 0
0 0 0 0110 1111 1 1010 0
0 0 0 0101 1111 0 0 1010 0
0 0 0 0000 0000 0 0101 1
18 La solución es :
Entrada estado interno out
cl' clk S/L' S.I. ABCDEFGH QA QB QC QD QE QF QG QH Q comentarios
1 X 0 1 01000101 01000101 1 carga
1 1 0 01011100 00100010 0
1 1 0 11010101 00010001 1
1 1 1 00110011 00010001 1 quieto
1 1 1 00001100 10001000 0
1 1 0 01001100 01000100 0
1 0 1 0 01100001 00100010 0 quieto
0 1 0 00110101 00000000 0 clear
1 0 1 00110011 00110011 1 carga
1 1 1 00001100 10011001 1
19 La solución es :
entrada Salida
CLK1 CLK2 MC SI ABCD QA QB QC QD comentarios
1 1 0 0101 0101 carga
0 0 0 0100 0010
1 0 1 0100 1001
0 0 1011 0100
1 0 0 1010 0100 quieto
x 0 0 1110 0010
0 1 0 1111 0010 quieto
x 1 1 Qb Qc Qd 0 0100
0 1 0 Qb Qc Qd 0 1000
x 0 0 0000 0100
1 1 0 Qb Qc Qd 1 1001
1 0 1 1 Qb Qc Qd 1 1001 quieto
0 1 0 0010 0010 carga
36
20 La solución es
21 La solución 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
1 Diseña un contador Down con JK módulo 8 (de 7 a 0)
2 Diseña un contador Up con JK módulo 32 (de 0 a 31)
3 Diseña un contador Up con JK módulo 10 (de 0 a 9)
4 Diseña un contador Up con JK módulo 6 (de 0 a 5)
5 Diseña un contador Down con JK (de 15 a 3)
6 Diseña un contador Down con JK (de 7 a 2)
7 Diseña un contador Up con JK (de 2 a 12)
8 Diseña un contador Down con JK (de 14 a 3)
9 Diseña un contador Up con JK (de 7 a 10)
10 Diseña un contador Up con JK (de 7 a 17)
11 Diseña un contador mod9 con el 7490
12 Diseña un contador mod3 con el 7490
13 Diseña un divisor por 7 con el 7490
14 Diseña un contador BCD mod 20 es decir de 00 a 19 con el 7490
15 Diseña un contador BCD mod50 (00 a 49) con el 7490
16 Diseña un contador BCD mod80 (00 a 79) con el 7490
17 Diseña un contador BCD mod100 (00 a 99) con el 7490
18 Diseña un contador BCD mod100 (00 a 99) con el 7493
19 Diseña un divisor 13 con el 7493
20 Diseña un divisor 12 con el 7493
21 Diseña un divisor 72 con el 7493
22 Diseña un divisor 80 con el 7493
23 Diseña un divisor 30 con el 7493
24 Diseña un divisor 35 con el 7493
25 Diseña un contador Up 3 a 6 con el 74190/1
26 Diseña un contador Down 6 a 3 con el 74190/1
27 Diseña un contador Up 5 a 12 con el 74190/1
28 Diseña un contador Up 5 a 15 con el 74190/1
29 Diseña un contador Down 8 a 0 con el 74190/1
30 Diseña un contador Up 2 a 17 con el 74190/1 binario
31 Diseña un contador Up 2 a 17 con el 74190/1 BCD
32 Diseña un contador Down 18 a 11 con el 74190/1 BCD
33 Diseña un contador Up 13 a 79 con el 74190/1 BCD
34 Diseña un contador Up modulo 50 con el 74192 (en BCD)
35 Diseña un contador Up 13 a 73 con el 74192 (en BCD)
36 Diseña un contador Up 27 a 39 con el 74192 (en BCD)
37 Diseña un contador Up modulo 40 con el 74192 (en BCD)
38 Diseña un contador Down modulo 40 con el 74192 (en BCD)
39 Diseña un contador Down 45 a 25 con el 74192 (en BCD)
40 Diseña un contador que cuente o descuente según se accione al pulsador A o B
respectivamente, el contador puede llegar como máximo a 999, existirá un pulsador C
de puesta a 0 y un pulsador D que si se pulsa carga el nº 500
38
5.2 SOLUCIONES A LOS PROBLEMAS DE CONTADORES1
1 Serían 3 biestables JK
Biestable J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock externo Salida Q0 A clk 2º 1 Aut
2º 1 1 Q0neg Salida Q1 A clock 3º 1 Aut
3º 1 1 Q1neg Salida Q2 n.c. 1 Aut
Aut = Resistencia a Vcc de 10k Condensador a masa de 1 por ejemplo
2 Serían 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 Serían 4 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 y clk 2º n.c. 1 Salida pta
2º 1 1 Q0 Salida Q1 y clk 3º n.c. 1 Salida pta
1 Todas las salidas Q3 Q2 Q1 Q0 pueden conectarse a un 7448 y a un display para poder visualizar los
números
39
3º 1 1 Q1 Salida Q2 y clk 4 n.c. 1 Salida pta
4º 1 1 Q2 Salida Q3 n.c. 1 Salida pta
Salida pta= Puerta NAND entrada Q3 y Q1
Detecta el 10 =1010 y carga el 0=0000
4 Serían 3 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 y clk 2º n.c. 1 Salida pta
2º 1 1 Q0 Salida Q1 y clk 3º n.c. 1 Salida pta
3º 1 1 Q1 Salida Q2 n.c. 1 Salida pta
Salida pta= Puerta NAND entrada Q2 y Q1
Detecta el 6 =110 y carga el 0=0000
5 Serían 4 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 Clk 2º Salida pta 1
2º 1 1 Q0neg Salida Q1 Clk 3º Salida pta 1
3º 1 1 Q1neg Salida Q2 Clk 4º Salida pta 1
4º 1 1 Q2neg Salida Q3 n.c. Salida pta 1
Salida pta= Puerta OR entrada Q3 Q2 y Q0
Detecta el 2 =0010 y carga el 15=1111
40
6 Serían 3 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 Clk 2º Salida pta 1
2º 1 1 Q0neg Salida Q1 Clk 3º Salida pta 1
3º 1 1 Q1neg Salida Q2 n.c. Salida pta 1
Salida pta= Puerta OR entrada Q2 y Q1
Detecta el 1 =001 y carga el 7=111
7 Serían 4 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 y clk 2º n.c. 1 Salida pta
2º 1 1 Q0 Salida Q1 y clk 3º n.c. Salida pta 1
3º 1 1 Q1 Salida Q2 y clk 4 n.c. 1 Salida pta
4º 1 1 Q2 Salida Q3 n.c. 1 Salida pta
Salida pta= Puerta NAND entrada Q3 y Q2 y Q0
Detecta el 13 =1010 y carga el 2=0010
41
8 Serían 4 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 Clk 2º 1 Salida pta
2º 1 1 Q0neg Salida Q1 Clk 3º Salida pta 1
3º 1 1 Q1neg Salida Q2 Clk 4º Salida pta 1
4º 1 1 Q2neg Salida Q3 n.c. Salida pta 1
Salida pta= Puerta OR entrada Q3 Q2 y Q0
Detecta el 2 =0010 y carga el 14=1110
9 Serían 4 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 y clk 2º n.c. Salida pta 1
2º 1 1 Q0 Salida Q1 y clk 3º n.c. Salida pta 1
3º 1 1 Q1 Salida Q2 y clk 4 n.c. Salida pta 1
4º 1 1 Q2 Salida Q3 n.c. 1 Salida pta
Salida pta= Puerta NAND entrada Q3 Q1 y Q0
Detecta el 11 =1011 y carga el 7=0111
10 Serían 5 biestables JK
J K CLK Q QNEG PRneg CLneg
1º 1 1 Clock ext Salida Q0 y clk 2º n.c. Salida pta 1
2º 1 1 Q0 Salida Q1 y clk 3º n.c. Salida pta 1
3º 1 1 Q1 Salida Q2 y clk 4 n.c. Salida pta 1
4º 1 1 Q2 Salida Q3 y clk 5º n.c. 1 Salida pta
5º 1 1 Q4 Salida Q4 n.c. 1 Salida pta
Salida pta= Puerta NAND entrada Q3 Q1 y Q0
Detecta el 17 =10001 y carga el 7=00111
42
12 En este caso tenemos que resetear en 3=0011
Clk A Clk B Qa Qb Qc Qd Resets
Clk externo Qa Salida Q0 Salida Q1 Salida Q2 Salida Q3 Q1 y Q0
y clkB
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 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 20=0010 0000 Puerta = Q1decenas (ninguna puerta)
En los resets del 7490 unidades se podrían 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 podrían poner a 0 pues realmente él solo se pone a 0 cuando pasa de 9
2 También 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 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 80=1000 0000 Puerta = Q3decenas
En los resets del 7490 unidades se podrían 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 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
En este caso no hay que resetear, él sólo pasa a 00 después del 99
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 sólo 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 sólo 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
21 Como 72=8*9 luego hay que montar dos 7493: 8 y 9
7493 Clk A Clk B Qa Qb Qc Qd R01 R02
Clk ClkA
83 Qa clkB n.c. R02 0 Qd
externo del 9
Qc del
9 Qa ClkB n.c. n.c. Salida Qa Qd
8
Para el 8=1000 luego hay que resetear con Qd Para el 9=1001 luego hay que resetear con Qd y Qa
3 También 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
22 Como 80=8*10 luego hay que montar dos 7493: 8 y 10
7493 Clk A Clk B Qa Qb Qc Qd R01 R02
Clk ClkA
82 Qa clkB n.c. n.c. 0 Qd
externo del 10
Qc del
10 Qa ClkB n.c. n.c. Salida Qb Qd
8
Para el 8=1000 luego hay que resetear con Qd
Para el 10=1010 luego hay que resetear con Qd y Qb
Observar que el reloj de un divisor a otro es el bit más alto que sale, por ejem en un divisor de 8 los
números que salen son del 0 al 7, luego el bit más alto que sale es el Qc (Qd no aparece pues el 8 aparece)
23 Como 30=3*10 luego hay que montar dos 7493: 3 y 10
7493 Clk A Clk B Qa Qb Qc Qd R01 R02
Clk ClkA
3 Qa clkB n.c. n.c. Qa Qb
externo del 10
Qd del
10 Qa ClkB n.c. n.c. Salida Qb Qd
3
Para el 3=0011 luego hay que resetear con Qa y Qb
Para el 10=1010 luego hay que resetear con Qd y Qb
24 Como 35=5*7 luego hay que montar dos 7493: 5 y 7
7493 Clk A Clk B Qa Qb Qc Qd R01 R02
Clk ClkA
5 Qa clkB n.c. n.c. Qa Qc
externo del 7
Qd del Salida
7 Qa ClkB n.c. Salida n.c. Qa
5 puerta
Para el 5=0101 luego hay que resetear con Qa y Qc
Para el 7=0111 luego hay que resetear con Qa Qb y Qc luego una puerta AND a Qb y Qc
25 Puede ser el 74190 como el 74191
Hay que detectar el 7=0111 y cargar el 3=0011
Max/
Qa Qb Qc Qd D C B A Rco G CLK D/U´ Load
Min
Sal Sal Sal Sal Clk Ent
0 0 1 1 n.c. 0 0 n.c
Q0 Q1 Q2 Q3 ext pta
Entrada pta NAND= Q2 Q1 Q0
47
26 Puede ser el 74190 como el 74191
Hay que detectar el 2=0010 y cargar el 6=0110
Max/
Qa Qb Qc Qd D C B A Rco G CLK D/U´ Load
Min
Sal Sal Sal Sal Clk Ent
0 1 1 0 n.c. 0 1 n.c
Q0 Q1 Q2 Q3 ext pta
Entrada pta OR= Q3 Q2 Q0
48
29 Puede ser el 74190 como el 74191
Hay que detectar el final y cargar el 8=1000
Max/
Qa Qb Qc Qd D C B A Rco G CLK D/U´ Load
Min
Sal Sal Sal Sal Clk
1 0 0 0 Load 0 1 Rco n.c
Q0 Q1 Q2 Q3 ext
También se puede conectar el Load a la salida de una puerta NOT de Max/Min
49
32 Tienen que ser dos 74190
Hay que detectar el 10=0001 0000 y cargar el 18=0001 1000 (en BCD)
Max/
Chip Qa Qb Qc Qd A B C D Rco G CLK D/U´ Load
Min
Sal Sal Sal Sal Clk Sal
1º 0 0 0 1 n.c. 0 1 n.c
Q0 Q1 Q2 Q3 ext pta
Sal Sal Sal Sal Sal
2º 1 0 0 0 n.c. 0 Q3 1 n.c.
Q4 Q5 Q6 Q7 pta
Pta= OR de Q7 Q6 y Q5 (no es necesario hacer OR de Q3 Q2 Q1 Q0 pues del 18 al 10
no hay nadie que tenga Q7 Q6 y Q5 = 0 0 0, pero si se hace no pasa nada)
CLK del 2º puede ser el RCO del 1º
50
34 Son dos chips, 1º el de unidades y el 2º el de decenas
Tiene que detectar el 50=0101 0000 y resetear
Chip Qa Qb Qc Qd A B C D UP DW CO BO Load Clear
Up Sal
1º Q0 Q1 Q2 Q3 n.c. n.c. n.c. n.c. Clk n.c. n.c. n.c.
2º pta
Co Sal
2º Q4 Q5 Q6 Q7 n.c. n.c. n.c. n.c. n.c. n.c. n.c. n.c.
1º pta
Pta = NAND Q4 y Q6
El reloj UP del 2º chip se podría hacer con la salida Q3
51
36 Son dos chips, 1º el de unidades y el 2º el de decenas
Tiene que detectar el 40=0100 0000 y cargar el 27=0010 0111
Chip Qa Qb Qc Qd A B C D UP DW CO BO Load Clear
Up Sal
1º Q0 Q1 Q2 Q3 1 1 1 0 Clk n.c. n.c. 0
2º pta
CO Sal
2º Q4 Q5 Q6 Q7 0 1 0 0 n.c. n.c. n.c. 0
1º pta
Pta = NOT de Q6 El reloj UP del 2º chip se podría 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 A B C D UP DW CO BO Load Clear
Up
1º Q0 Q1 Q2 Q3 n.c. n.c. n.c. n.c. clk n.c. n.c. n.c. Q6
2º
2º Q4 Q5 Q6 Q7 n.c. n.c. n.c. n.c. CO1 n.c n.c. n.c. n.c. Q6
Aquí no hace falta realizar ninguna función lógica
El reloj UP del 2º chip se podría hacer con la salida Q3
38 Son dos chips, 1º el de unidades y el 2º el de decenas
Tiene que llegar a 0 y cargar el 40 = 0100 0000
Chip Qa Qb Qc Qd A B C D UP DW CO BO Load Clear
Dwn BO
1º Q0 Q1 Q2 Q3 0 0 0 0 n.c. Clk n.c. 0
2º 2º
BO BO
2º Q4 Q5 Q6 Q7 0 0 1 0 n.c. n.c. n.c. 0
1º 2º
Aquí no hace falta realizar ninguna función lógica, se podría 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 podría hacer con la salida Q3
52
40 Son tres chips, 1º el de unidades y el 2º el de decenas 3º centenas
Todos conectados en cascada Tiene cargar el 500= 0101 0000 0000
Chip Qa Qb Qc Qd D C B A UP DW CO BO Load Clear
1º Q0 Q1 Q2 Q3 0 0 0 0 A B Up 2 Dwn 2º D C
2º Q4 Q5 Q6 Q7 0 0 0 0 CO1 BO 1 CO3 BO3 D C
3º Q8 Q9 Q10 Q11 0 1 0 1 CO2 BO2 n.c. n.c. D C
53
6 Problemas de astables, retardadores y
monoestables digitales
6.1 ENUNCIADOS DE PROBLEMAS
6.1.1 Problemas de monoestables con puertas lógicas y 74121 74221 74122 y 74123
1 Diseña un monoestable con puertas NAND con un tiempo de activación de 3 seg. Elegir C=1F
2 Diseña un monoestable con el 74121 para un tiempo 0.1mseg y R=10k usando fórmulas.
3 Diseña un monoestable con el 74121 para un tiempo 0.1mseg y R=10k usando ábacos.
4 Diseña un monoestable con el 74121 para un tiempo 3seg y C=1nF usando fórmulas.
5 Diseña un monoestable con el 74121 para un tiempo 3seg y C=1nF usando ábacos.
12 Diseña un astable con el 74123 con un tiempo bajo de 7seg y un tiempo alto de 0.4seg. Utilizar
resistencias de 50k
54
6.1.2 Problemas con 555
13 Diseña un monoestable con 555 que responda al siguiente esquema del osciloscopio, R=1M, por cierto
¿Cuál sería la tensión Vcc? Intenta hacerlo en el EWB
14 Supongamos que R = 1M y C=3F Dibuja en el osciloscopio anterior cual sería la forma de onda.
16 Supongamos que queremos conseguir la siguiente onda, diséñalo con un 555 C=3F
55
6.1.3 Problemas con trigers y retardadores
17 Calcular la frecuencia de la onda del siguiente circuito 7414
18 Diseña un astable con el 7414 que responda a la siguiente señal de osciloscopio C=1nF
56
6.2 ÁBACOS Y FÓRMULAS 74122 74123 74121 Y 555
74122 y 74123
T = 0.28RC(1+700/R)
57
6.3 SOLUCIONES A LOS PROBLEMAS
6.3.1 Soluciones monoestables con puertas lógicas y 74121 74221 74122 y 74123
Problema 1
Problema 3
Problema 5
Problema 6
R=3/3*0.69=1.4M
7 Igualmente
R=2m/100n*0.69=29k Problema 7
8 El primer monoestable
hace un retardo a la
conexión de 3seg y el
segundo monoestable
hace que dure el impulso Problema 8
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 sería
de 300n
58
9 En este caso tenemos que despejar la despejar el
condensador pues nos dan la resistencia :
C=4/0.69*600k=9.6F
Problema 9
10 Usando la fórmula:
Como sale más grande 1nF no tenemos por qué usar ábaco.
El primer condensador: C =
T/R(1+700/R = 7/0.32*50k(1+700/50k) = 431pF =>Como
sale <1nF tenemos que usar el ábaco y sale C=400pF
13 Observando el osciloscopio, tenemos 2.2DIV*1SEG/DIV = 2.2seg luego para una R=1M tenemos
C=T/1.1*R=2. La Vcc=2.4Div*5V/Div=12V
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
60
7 ALARMA AIN 302
61
62
63
64
65
66
67
68
8. Autómatas programables
8.1.- ¿QUÉ ES UN AUTÓMATA PROGRAMABLE?
Hasta no hace mucho tiempo el control de procesos industriales se venia haciendo de forma cableada
por medio de contactores y relés. Al operario que se encontraba a cargo de este tipo de instalaciones, se le
exigía tener altos conocimientos técnicos para poder realizarlas y posteriormente mantenerlas. Además
cualquier variación en el proceso suponía modificar físicamente gran parte de las conexiones de los
montajes, siendo necesario para ello un gran esfuerzo técnico y un mayor desembolso económico.
En la actualidad no se puede entender un proceso complejo de alto nivel desarrollado por técnicas
cableadas. El ordenador y los autómatas programables ha intervenido de forma considerable para que este
tipo de instalaciones se hayan visto sustituidas por otras controladas de forma programada. El Autómata
Programable Industrial (API) nació como solución al control de circuitos complejos de automatización.
Por lo tanto se puede decir que un API no es más que un aparato electrónico que sustituye los circuitos
auxiliares o de mando de los sistemas automáticos. A él se conectan los captadores (finales de carrera,
pulsadores,...) por una parte, y los actuadores (bobinas de contactores, lámparas, peque os receptores,...)
por otra.
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 técnica cableada. Sin embargo, el de mando será sustituido por un
autómata programable, al cual se unen eléctricamente los pulsadores y las bobinas de los contactores. La
maniobra de arranque la realizara el programa que previamente se ha transferido al autómata.
Contactor
Contactor Contactor estrella
línea triángulo
Interruptores
Fusible térmico de paro y
marcha
fusible térmico
70
8.2.4 Modulo de salidas
El modulo de salidas del autómata es el encargado de activar y desactivar los actuadores (bobinas de
contactores, lámparas, motores peque os, etc).
La información enviada por las entradas a la CPU, una vez procesada, se envía al módulo de salidas
para que estas sean activadas y a la vez los actuadores que en ellas están conectados.
Según el tipo de proceso a controlar por el autómata, podemos utilizar diferentes módulos de salidas.
Existen tres tipo bien diferenciados:
- A relés.
- A triac.
- A transistores.
8.2.4.1 Módulos de salidas a relés.
Son usados en circuitos de corriente continua y alterna. Están basados en la conmutación mecánica, por
la bobina del relé, de un contacto eléctrico normalmente abierto .
.
Un relé es un componente eléctrico formado por un electroimán y varios interruptores. Cuando es
recorrido por la corriente eléctrica, el electroimán genera un campo magnético que abre o cierra los
interruptores dependiendo de su estructura interna. En el sistema de control digital como es el caso
de los autómatas 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 través de aperturas y cierres de interruptores podemos obtener un código binario que puede
ser entendido por cualquier microprocesador.
Su acción puede ser directa o a través de algún elemento interpuesto. Lo más habitual es que el relé abra o
cierre un circuito eléctrico.
Las características de la carga que ha de soportar (tensión, corriente, etc.) influyen sobre el tiempo de vida
útil de los relés.
Por todo ello para alargar la vida de los relés y proporcionar una mejor señal de salida se interponen
circuitos de protección de relé interno que permiten suprimir el ruido eléctrico.
Estos circuitos nos muestras que cuando conectamos el interruptor del circuito donde se encuentra la pila
pasa una corriente a través que es capaz de disparar la acción del relé que se encargará de cerrar el
circuito para conectar la bombilla. El relé se conectará cuando la corriente que pasé a través del primer
circuito sea la necesaria (viene determinada según las características 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 más corriente como 220 V. Esto es lo que hace el
autómata con los motores que es capaz de conectar.
71
8.2.4.2 Módulos de salidas a Triacs
Se utilizan en circuitos de corriente continua y corriente alterna que necesiten maniobras de
conmutación muy rápidas.
72
8.2.6 PERIFÉRICOS
Los periféricos no intervienen directamente en el funcionamiento del autómata, pero sin embargo
facilitan la labor del operario. Los más utilizados son: - Grabadoras a cassettes. - Impresoras. -
Cartuchos de memoria EEPROM. - Visualizadores y paneles de operación OP
73
8.3.3 Grafcet. (SFC)
Es el llamado Gráfico de Orden Etapa Transición. Ha sido especialmente diseñado para resolver
problemas de automatismos secuenciales. Las acciones son asociadas a las
etapas y las condiciones a cumplir a las transiciones. Este lenguaje resulta
enormemente sencillo de interpretar por operarios sin conocimientos de
automatismos eléctricos.
Muchos de los autómatas que existen en el mercado permiten la
programación en GRAFCET, tanto en modo gráfico o como por lista de
instrucciones.
También podemos utilizarlo para resolver problemas de automatización
de forma teórica y posteriormente convertirlo a plano de contactos.
Según este diagrama podemos ver la gran similitud entre ordenadores y autómatas, la
gran diferencia entre ambos radica en el tipo y características de la información con la
que trabaja cada uno.
En el primer caso de los autómatas las entradas responden a señales 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 información viene en forma de ficheros
incluidos en soportes como disquetes, discos compactos, etc.
74
8.4 CASO PRÁCTICO AUTÓMATA LOGO! 230RC
Aquí tienes un esquema de la conexión del logo, en este dibujo puedes observar tres cosas:
Tensión de alimentación L1, N
AC 115V/230V 50/60Hz: esto lo hace muy versátil para poder utilizarlo en muchos
países donde las estructuras eléctricas sean diferentes.
L1 = 85 ...264V AC: es la tensión que puede llevar la línea L1, necesaria para que
funcionen los interruptores de las entradas.
6 Entradas
I1, I2, I3, I4, I5, I6: son los códigos que vamos a asignar a cada entrada y a las que
llegarán las señales del exterior, bien por sensores, transductores, motores, etc.
Estado de la señal 1 con > 79 V AC
Estado de la señal 0 con 40 V AC
4 Salidas
Q1, Q2, Q3, Q4 son salidas de interruptor., luego necesitan una línea de fuerza
L1, que es la que le suministra la fuerza para conectarse y desconectarse.
La máxima potencia que aguantan los relés internos son de 2000W, suficientes para
hacer funcionar motores de muchas máquinas, pero hay veces que la potencia
requerida es mayor y se hace necesario el uso de contactores.
¿Qué son los contactores? son unos dispositivos que tienen la estructura de un relé.
Su función aquí consiste en poner en contacto dos circuitos que trabajan a potencia
diferentes sin que se dañe ninguno de ellos.
ENTRADAS
SALIDAS
(Tipo Relé)
Señal de salida en forma de
luces que simulan la
conexión a un motor
75
8.5 PROGRAMACIÓN DEL LOGO!
El LOGO se programa con lenguaje FPB es decir, que su lenguaje es gráfico es decir mediante
logigramas, por lo que no necesita grandes conocimientos de programación, y no se borran al
suspender la alimentación ¿Qué tipo de memoria tendrá interna?
¿Según el tipo de salida que tiene el autómata, puede ser analógica?
CO CONECTORES
Los conectores que puedes usar en las entradas de los bloques son:
Nada conectado = x
Entradas = I1 I2 I3 I4 I5 I6
Salidas = Q1 Q2 Q3 Q4
Fijas 1/ 0 = hi lo (high= alto=1, low=bajo=0).
GF FUNCIONES BÁSICAS INTEGRADAS
OR NOR
AND NAND
XOR
NOT
(diferentes = 1 )
SF FUNCIONES ESPECIALES
Cuando se pulsa la entrada hay un tiempo
Retardo a la de retardo T en que se conecte la salida. La
conexión salida termina cuando termina la acción de
la entrada.(interruptor).
Cuando se pulsa la entrada, se conecta la
Retardo a la salida que tardará un tiempo en
desconexión desconectarse tomado desde que la entrada
se desconecta. (pulsador). Existe el reset.
Esta función tiene una entrada que cuando
se activa inmediatamente se activa la salida
que estará activada hasta que vuelva a
Telerruptor
aparecer una nueva entrada.
Existe la función reset que anula la
información previa.
Esta función tiene tres entradas en las que
Interruptor
se puede programar tres franjas horarias
horario, (Reloj
diferentes, siendo la salida la suma de
no disponible
todas ellas.
en el modelo
La salida actuará a la primera entrada que
230R)
le diga algo.
Relé con Esta función hace uso de la entrada set que
autorretención hace que la salida se accione, estando así
(Biestable RS) hasta que actúe el reset.
Ante una entrada (En) que estará activada
Generador de durante un tiempo T, la salida generada
pulsos será en forma de impulsos.
76
Es un retardo a la conexión igual que en la
Retardo a la primera función pero al ser memorizado,
conexión esta función no se desconecta, y además la
memorizado entrada es en forma de conector y no de
interruptor.
Es una función que tiene la propiedad de
contar (Cnt) y actuar cuando se llega a un
determinado número (Par) o superior a
Contador este. La función puede ir en la dirección de
adelante/atrás aumentar el número ó disminuir (Dir).
Dispone de reset (R ). La salida será 1
cuando lleguemos al número del par o
superior y 0 cuando sea menor.
EJERCICIO: Rellena la 3ª columna dibujo explicativo, en forma de diagrama de
estados:
Retardo a la
conexión
Retardo a la
desconexión
Telerruptor
Interruptor horario
Relé con
autorretención
(Biestable RS)
Generador de
pulsos
Retardo a la
conexión
memorizado
Contador
adelante/atrás
77
8.8 EJERCICIOS CON EL LOGO!
8 Si I1=1 I2=1 I3 =0 I4=1 I5=0 I6=1 entonces Q1=1 será 0 en otro caso
11 Teniendo en cuenta sólo las entradas I1 I2 I3 e I4, hacer un programa que si hay dos
interruptores contíguos activados, entonces Q1=1.
12 Teniendo en cuenta sólo las entradas I1 I2 I3 e I4, hacer un programa que si hay dos
interruptores contíguos activados, entonces Q1=1. Si I2=0 e I4 =0 entonces la salida Q1
es indiferente.
78
8.8.1 Ejercicios manejo funciones específicas
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 cómo se enciende un teléfono móvil, podemos ver que es un
interruptor de pulsación prolongada, es decir, que hay que hacer una pulsación larga en
la tecla correspondiente y entonces se conecta el movil. Realizar un programa con el
LOGO de manera que con una pulsación prolongada en I1 de 6 segundos entonces la
máquina conectada en Q1 se active.
15 En una habitación 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 más de 2 la solución 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 eléctrica, que con un pulsador o célula fotoeléctrica se abre
la puerta. Realizar un programa que con un pulso en I1 se active Q1 ¿Cuándo 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 añadir a la puerta del ejercício anterior un cierre automático, de tal manera
que exista un pulso en I1, después de 10 segundos tiene que activar el sentido de giro de
cerrar Q2 hasta llegar al final de carrera I3 que por simplificación será NA. En un
problema posterior se tratará más profundamente del cambio de sentido de giro de un
motor.
18 Para completar más aún la puerta automática, se pide en este ejercicio añadir un
aviso intermitente por Q3 de 0.5 segundos cuando se este cerrando la puerta Q2
21 Supongamos una máquina 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 sólo sea un solo pulsador I1
79
8.8.3 Ejercicios globales funciones generales+funciones especiales GF+SF teóricos
23.- Cuando se active I1 o I2, que se encienda la lampara Q1 tardando 7 segundos
en desconectarse. I1e I2 pulsadores.
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
28.- Hacer un programa que cuando se active I1 se encienda Q1 durante 5
segundos, y si se activa I2 que haga una intermitencia de 1 segundo cada periodo,
siendo I1 un pulsador e I2 un interruptor.
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
35.- Realizar un secuenciamiento de luces, en bucle.
37 El mismo ejercicio que 36, pero que la luz amarilla haga intermitencia
38 Se desea abrir una puerta con dos pulsadores I1=Abrir, (fin de carrera I2) I3=Cerrar (fin de
carrera I4). Para abrir se utilizará la salida Q1, y para cerrar Q2. Para invertir el giro se utilizan 4
relés emparejados según el esquema de la figura:
Q1 Q2 Motor
0 0 Parado
0 1 Cerrar
1 0 Abrir
1 1 CORTO
40 La puerta de los ascensores se diferencian de las puertas automáticas en que se pueden cerrar
automáticamente, o bien porque se acciona algun botón interior de subir/bajar pisos.
Supongamos un ascensor, la entrada I1 acciona la apertura de puertas (que puede ser la salida de una
puerta AND con el pulsador de llamada junto con el de posicionamiento del ascensor) con el pulso
se abren las puertas Q1 (fin de carrera I2) espera 10 segundos, y se cierran las puertas Q2 (fin de
carrera I3) pero se puede adelantar el cierre de la puerta del ascensor si se da un pulso en cualquiera
de los pisos I4 I5 I6.
82
41 En una serrería, 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 tablón 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 sólo
funciona si además esta activo un interruptor de mover tablón I6
43.- Imagina el caso del problema anterior pero que un dia fuese festivo y
tuviésemos que considerarlo como fin de semana, propón un programa para este
caso, que sea facil la alteración del programa, con sólo entrar en la parametrización
del logo, y no en la edición del programa.
83
8.9 SOLUCIONES EJERCICIOS DEL LOGO
9 Aquí lo que hay que hacer es una tabla de verdad con su correspondiente tabla de
karnaugh :
I1I2 I3 I4 Q1 I1 I2\I3 I4 00 01 11 10
0000 0 00 0 0 1 0
0001 0 01 0 1 1 1
0010 0 11 1 1 1 1
0011 1 10 0 1 1 1
0100 0
0101 1
0110 1 La función es simplificando
0111 1
1000 0 Q1=I3I4+I1I2+I2I3+I2I4+I1I3+I1I4
1001 1
1010 1
84
1011 1
1100 1
1101 1
1110 1
1111 1
10 En este caso podríamos optar por hacer una solución como la anterior,
camibando la tabla de verdad, o de una manera más intuitiva y perspicaz
fijándonos en la puerta XOR, que si son diferentes (impar) sale 1 y si son
iguales (par) sale 0
I1I2 I3 I4 Q1 I1 I2\I3 I4 00 01 11 10
0000 0 00 0 0 1 0
0001 0 01 0 0 1 1
0010 0 11 1 1 1 1
0011 1 10 0 0 1 0
0100 0
0101 0
0110 1 La función es simplificando
0111 1
1000 0 Q1=I3I4+I1I2+I2I3
1001 0
1010 0
1011 1
1100 1
1101 1
1110 1
1111 1
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 1
11 1 1 1 1
10 X 0 1 X
La función es simplificando
Q1=I3 + I1I2
85
8.9.2 Soluciones a los ejercicios LOGO funciones especiales
7.13 Será un retardo a la desconexión T=40seg. La entrada Trg será I1, la salida Q1 y R puede
estar desconectada X
21 La solución es un biestable
86
8.9.3 Soluciones a los ejercicios GF+SF teóricos
23
24
25
26
27
28
29
30
87
31 Una solución podría ser esta, donde I2
hace de reset al contador que cuenta 4 (que
es el que hace de reset a los demás) En
este ejercicio hay que tener cuidado cómo
se conectan, el primer bloque Par=1 es
B01, el de Par=4 es B02 el de Par=2 es
B03 y el de Par=3 es B04.
88
o de otra forma mucho más fácil, los tiempos son el primero 3 seg y el segundo 2
segundo
La fácil
La dificil :
89
8.9.4 Soluciones a los ejercicios GF+SF casos prácticos
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. También 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 añadir la acción de los pulsadores I4 I5 I6, se ha optado por un
retardo a la conexión memorizado
41 Para esta solución hay que jugar con los biestables RS, y los finales de carrera.
91
43 En este caso lo mejor es poner tantos programas como dias tiene la semana, y así
sólo habría que entrar en la parametrización:
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 más que el ejercicio anterior.
BIBLIOGRAFÍA
Tecnología industrial II, Manuel Murgui Izquierdo, Juan José Vela Rozalén.
Editorial Edebé, 1999.
Curso Completo de Automatización Industrial Moderna, Victoriano Angel
Martínez Sánchez, Editorial Ra-ma, 1992.
Tecnología Industrial II, Sonia Val, Jose Luis Huertas, Editorial McGraw-Hill,
1996.
Manual de instrucciones del autómata Logo de Siemens.
Autómatas programables, A. Porrás, A.P. Montanero. Editorial McGraw-Hill,
1990.
Internet
http://www.siemens.es/ps/logo.htm De Siemens España.
En ella puedes encontrar información sobre los diferentes modelos de LOGO!, además del software
LogoSoft con 14 ejemplos de programación en castellano.
http://www.ad.siemens.de/logo/index_78.htm De Siemens Alemania.
Página distinta a la española disponible en varios idiomas, entre ellos el español.
92
8.10 EJEMPLOS PRÁCTICOS DEL LOGO
Se desea realizar en la luz de la escalera de una finca un circuito que sea capaz de cumplir los siguientes
requisitos:
93
8.10.2.-Puerta automática
Se desea hacer una puerta autonática que abra la puerta cuando algun sensor detecte presencia, y lo cierre
al cabo de 10 minutos
Programa a realizar :
Reto:
94
8.10.3.- Instalación de ventilación
Se desea mantener un recinto con ventilación mantenida, hay dos ventiladores, uno de evacuación, y otro
de insuflación, cada ventilador es supervisado or un controlador de corriente, en el recinto nunca debe
producirse sobrepresión, y solo se puede activar el ventilador de insuflación cuando se notifique el
correcto funcionamiento del ventilador de evacuación. una lámpara indica si falla alguno de los dos
ventiladores.
Solución:
95
8.10.4.- Portón corredizo
Se desea hacer un portón que se abra automáticamente al accionar el pulsador I1 ABRIR y que se cierre
con el pulsador I2 CERRAR, tiene un pulsador NC de emergencia I3 de paro , un pulsador NC de presión
de seguridad I5, un conmutador de posición ABIERTO I3 y otro de CERRADO I4.
Programa
Reto:
2.- I2 sobra
96
8.10.5.- Cadenas luminosas
Las distintas cadenas luminosas se activan diréctamente en el recinto, cuando sea suficiente la luz natural,
las cadenas que esten cercanas a las ventanas se desconectan automáticamente, la luz se apagará
automáticamente a las 8 de la tarde, siempre se podrán conectar a mano en el recinto
Solución
I1 a I4 serán 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
8.10.6.- Bomba de aguas residuales
El agua de lluvia se deposita en un depósito que puede servir para lavar la ropa, regar jardines, regar
flores, limpiar automóviles, enjuagar el WC.... desde ésta puede tomarse el agua de lluvia igual que
sucede con el agua potable, Si llegara a vaciarse el depósito, es posible rellenarlo con agua potable.
Para controlar la bomba se requiere un interruptor de presión I1, los interuptores de flotador I2, I3, I4. Q1
es el contactor que acciona la bomba y Q2 la válvula magnética para suministrar el agua potable.
Esquema
98
9 Problemas de memorias.
9.1 ENUNCIADOS EJERCICIOS DE MEMORIAS
1.- Calcular el Bus de datos, Bus de direcciones, nº de células 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
células de memoria, dibujo de la estructura de la matriz.
CHIP B
CHIP
CHIP A
3.- En el circuito de la figura, rellena los siguientes campos: ¿Qué pasa en el pulso A?
Pulso qué dato se escribe en qué dirección
B
C
D
E
y ahora estos:
Pulso dirección salida
F
G
H
I
99
Ejercicios de apliación de memorias, no se darán en clase, sólo son para propio aprendizaje
4.- Partiendo del AB de un microprocesador de 16 bits AB, realizar el circuito de selección 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 selección de un chip de memoria
RAM de 2kx8 situada en las direcciones más 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 más bajas. Utilizar decodificadores y puertas lógicas. Indicar las direcciones que
corresponden a cada circuito integrado.
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 DIRECCIÓN 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
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 lógicas
100
9.2 SOLUCIONES EJERCICIOS
DE MEMORIAS
1 a) Memoria 128x8
DB=8 D7 a D0
Como 128=27 luego AB=7 A6 a A0
Número de células 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
Número de células 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
Número de células 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 más cercano superandose es
16k=16x1024=16384 ¿Dónde están el resto
de las 100 palabras? O están reservadas, o
dañadas, nosotros lo consideraremos 16k
=24210 =214 luego AB=13 A12 a A0
Número de células 16384*16=262144
Estructura de la matriz 262144=512 es
exacta
matriz cuadrada =512x512
Dibujo
101
2.- El chip A tiene señal WR en el pin W/R luego es RAM y por las señales RAS y CAS es
inequívocamente 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 líneas de AB = 212=22210=4K, y como sólo
hay una línea de datos DIN y DOUT parecen dos, pero son la misma, sólo que una de entrada y otra de
salida, luego línea de datos =1 entonces: DRAM 4Kx1
El chip B no vemos ninguna señal WR luego es ROM, tampoco vemos ningún pin Program luego el
único chip ROM que no se programa es la MASKROM programada de fábrica. Tamaño A0-A9 y D0-D7
luego 210x8 = MASKROM 1Kx8
El chip C no tiene ninguna señal de WR luego es ROM, tiene una señal de Program (Pin 18) luego es
Programable, puede ser PROM EPROM EEPROM, como no tiene ningún 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 Tamaño 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é dirección
B 1111 0000
C 1110 0001
D 1101 0010
E 1100 0011
y ahora estos:
Pulso dirección salida
F 0000 1111
G 0001 1110
H 0010 1101
I 1111 ????
102
5.- Una memoria 2Kx8 tiene 11 pines el resto seleccionan
al chip:
Direcciones de memoria más bajas:
A15A12 A11 A8 A7 A4 A3 A0
0000 0111 1111 1111
0000 0000 0000 0000
serán :
A11 A8 A7 A4 A3 A0
CHIP A 0 1 1 1 1111 1111
0100 0000 0000
CHIP B 0 0 1 1 1111 1111
0000 0000 0000
El chip A será Problema 7
CS A11 * A10
El chip B se seleccionará con
CS A11 * A10 A11 A10
8.-El dibujo sería el siguiente
Problema 8
103
Sería una ampliación del número de bits de la palabra, y de la direcciones. El CS habría que activarlo
según las direcciones de memoria que tuviera cada uno:
chip dirección chip dirección
0000 0000 0000 0000 0000 0100 0000 0000
AB CD
0000 0011 1111 1111 0000 0111 1111 1111
0000 1000 0000 0000 0000 1100 0000 0000
EF GH
0000 1011 1111 1111 0000 1111 1111 1111
9.- Pasando los números hexadecimales a binario tenemos (A y B junto con C y D van a pares pues sólo
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
0000 0 0 0 0 0 0 0 0 0000
AB
0000 0011 1111 1111
0000 0100 0000 0000
CD
0000 0111 1111 1111
1010 0000 0000 0000
E
1010 1111 1111 1111
1110 0000 0000 0000
F
1110 1111 1111 1111
1111 0000 0000 0000
G
1111 1111 1111 1111
Los bits A15 a A12 son siempre los mismos, luego pueden seleccionar al circuito decodificador, y el
circuito decodificador según las órdenes de A10 y A11 deciden qué chip de memoria tiene que activarse.
Problema 9
104
10.- Pasando los números hexadecimales a binario tenemos .
chip A15 A12 A11 A8 A7 A4 A3 A0
1111 1111 1111 1111
A
1111 1000 0000 0000
1111 0111 1111 1111
B
1111 0000 0000 0000
1010 1111 1111 1111
C
1010 0000 0000 0000
1001 1111 1111 1111
D
1001 0000 0000 0000
0000 1111 1111 1111
E
0000 1000 0000 0000
0000 0111 1111 1111
FG
0000 0000 0000 0000
Los chips F y G van en paralelo para formar palabras de 8 bits
105
12.- Pasando los números hexadecimales a binario tenemos .
Los bits A15 a A12 son siempre los mismos, luego pueden seleccionar al circuito decodificador, y el
circuito decodificador según las órdenes de A10 y A11 deciden qué chip de memoria tiene que activarse.
106
10 Microcontroladores CPIC16F84
1 INTRODUCCIÓN A LOS MICROCONTROLADORES
Los microcontroladores están presentes en muchos electrodomésticos y aparatos
electrónicos comunes: Teléfonos, teclados de ordenadores, electrodomésticos, hornos
microondas, cámaras, videos, TV, impresoras, modem... cualquier dispositivo
electrónico que tenga que controlar un proceso. Antes se realizaba con lógica
combinacional, discreta, hoy en día se realiza todo en un solo chip, que tiene los
elementos indispensables para decir que se trata de un ordenador integrado en un solo
circuito integrado.
Tiene integrado las siguientes partes : Automoción
10% Periféricos de
Unidad Central de Proceso UCP Industria
PC
33%
Memoria RAM para contener los datos 16%
Memoria ROM para contener el programa
Reloj que sincroniza la velocidad del
Telecom
sistema.
16%
Periféricos de Entrada y Salida: líneas Electrodom
E/S, puertas serie/paralelo, A/D D/A... 25%
107
1.1 Tipos de PIC
Familia Baja PIC 16C5X con 18 y 28 pines, más prestaciones que la enana.
Y aquí esta el esquema del conexionado del PIC16X84 para cualquier tipo de aplicación:
108
Para osciladores tipo RC más baratos pero más inestables, se varia el anterior esquema
de acuerdo con la siguiente figura:
Ejemplos de frecuencias
625kHz R=10k C=20pF
80kHz R=10k C=220pF
80Hz R=10k C=0.1F
Otra forma de programar el PIC es con un lenguaje de alto nivel, puede ser con BASIC
y compilarlo para convertirlo a lenguaje máquina con el PICBASIC.
Otro lenguaje de alto nivel para programar el PIC es con C y compilarlo con el
compilador PICCLITE. Todos estos programas puedes conseguirlos utilizando la
página del Departamento http://centros4.pntic.mec.es/ies.de.caudete/DepElect.htm
Un pequeño ejemplo
109
1.4 ¿Cómo se hace con lenguaje ensamblador?
110
+- Select Midrange processor... ---------------------------------+
¦ |
¦ ( ) 16C84 |
¦ ( ) 16F84 |
¦ (*) 16F84A ¦
| ¦
¦ [ OK - Enter ] < Cancel - Esc > < Help - F1 > |
+----------------------------------------------------------------+
Lo correcto sería pasar a la simulación del fichero antes de pasarlo al PIC real.
Entramos en el programa SIMUPIC
111
1.8 ¿Cómo se programa el PIC?
Antes de nada hay que subir el tiempo de nuestro programa, pues el PIC va muchísimo
más rápido 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 botón de abrir
Y buscamos nuestro Prueba.hex
Una vez cargado apretamos al botón 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
112
1.9 Placa TE20
Aquí tienes un esquema del programador TE20, lo puedes construir tú mismo, o
comprarlo (18)
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(;;){......}
También se puede utilizar las sentencias do{...}while(condición) y while(condición){..}
Es muy útil utilizar la sentencia goto etiqueta para saltarnos a algún lugar del programa.
Con la sentencia continue el programa continua a la siguiente iteración, 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.- ¿Cómo queda el puerto A con la instrucción TRISA=0b00111;?
114
3 EJERCICIOS
3.1 Enunciados
1.- Realizar un intermitente por todo el puerto A.
3.- Realizar un programa que el Puerto B sea la inversa de la lectura del puerto A
4.- Realizar un programa que el puerto B sea la inversa del puerto A, los leds que sobran
(B5..B7) que hagan intermitencia.
6.- Realizar un programa que sea un secuenciamiento de luces hacia la izquierda del
puerto B, es decir: PB=00000001 00000010 00000100 00001000...10000000 00000001
7.- Realizar un programa de tal manera que si A0=0 hay un intermitente por B0 su
A0=1 hay intermitente por B1
9.- Realizar un programa que sea alarma de coche, el led B0 indica que esta en
funcionamiento, hay dos sensores en A0 y en A1, si alguno de los dos se pone a 1,
entonces se dispara la alarma , la alarma es un intermitente en todos los B, la alarma se
apaga poniendo A2=1
11.- Realizar un programa que “pilles la luz” . El puerto A será entrada, y el puerto B
será salida, que realizará la siguiente secuencia:
00000001 00000010 00000100.... 100000000 00000001
y si el interruptor que acciones en A es igual a la luz que se visualiza por B, entonces se
iluminan todas las luces del puerto B
115
z=y&0b00011111;
3.2 Soluciones PORTB=z;
/********************************** for (i=0;i<10;i++) continue;
* Ejer1 intermitente por el puerto A z=y|0b11100000;
* PORTB=z;
**********************************/ for (i=0;i<10;i++) continue;
#include <pic.h> }
main(void) }
{ /*********** Ejer5*******************
unsigned int i; *si A1=1 entonces que se encienda todo PB
TRISA = 0b00000; ***********************************/
for(;;) { #include <pic.h>
PORTA = 0b00000; main(){
for(i = 0;i<10;i++) continue; char i;
PORTA = 0b11111; TRISA=0b11111;
for(i = 0;i<10;i++) continue; TRISB=0b00000000;
} for(;;){
} i=PORTA;
/********************************** if((i&0b00010)!=0)
* Ejer2 PB=PA PORTB=0xff;
**********************************/ }
#include <pic.h> }
main(){ /************Ejer6**********************
char i; *Secuenciamiento de luces por PB
TRISA=0b11111; *************************************/
TRISB=0b00000000; #include <pic.h>
for(;;){ main(){
i=PORTA; char i;
PORTB=i; int j;
} TRISB=0b00000000;
} i=0b00000001;
/************************* for(;;){
Ejer3 PORTB=i;
PORTB que sea la ~PORTA i=i<<1;
**************************/ if (i==0) i=1;
#include <pic.h> for (j=0;j<=10;j++) continue;
main(){ }
char x,y; }
TRISA=0b11111; /* ********************
TRISB=0b00000000; Ejer7
for(;;){ si A0=0 intermitente B0
x=PORTA; si A0=1 intermitente B1
y=~x; **********************/
PORTB=y; #include <pic.h>
} main(){
} int i;
/************************* TRISA=0b11111;
Ejer4 TRISB=0b00000000;
PORTB que sea la ~PORTA luzB0: for(;;){
B5 B6 y B7 intermitentes if ((PORTA&0b00001)!=0)
**************************/ goto luzB1;
#include <pic.h> PORTB=0b00000000;
main(){ for (i=0;i<10;i++) continue;
int i; PORTB=0b00000001;
char x,y,z; for (i=0;i<10;i++) continue;
TRISA=0b11111; }
TRISB=0b00000000; luzB1: for(;;){
for(;;){ if ((PORTA&0b00001)==0)
x=PORTA; goto luzB0;
y=~x; PORTB=0b00000000;
Problemas electrónica Digital Profesor Javier Quintana
Página 117
Problemas electrónica Digital Profesor Javier Quintana
4 TARJETAS PIC
Las tarjetas PIC son muy usadas tanto para abrir puertas automáticas como para descodificación de
canales privados de televisión. Aquí podemos ver una foto de cómo 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 automáticas, se pueden copiar con nuestro IC-Prog, en el caso de la
decodificación, a través del codificador,
periódicamente se van cambiando los códigos
para evitar el “pirateo” es lo que se denomina
“ataque”, por Internet existen numerosos
programas para grabar estas tarjetas, y en las
mismas páginas se pueden descargar los códigos
para salvar los ataques, con el inconveniente de
que hay que hacerlo periódicamente.
Página 118
11 Microprocesador P 8085 Microfoto
grafia de
PentiumM
1.- INTRODUCCIÓN MICROPROCESADOR 8085 ver el
espacio de
L2
1.1.- El 8085 dentro de los tipos de microprocesadores que hay
En esta tabla tienes un resumen de los tipos de microprocesadores que existen
386 20/2
386DX 32 1985 “
5/33
486SX 1991 1.2M transistores sin coprocesador Soket3
32 33
486DX 1989 Con Coprocesador incluido Soket3
486 486DX2 32 1991 66 “ Obligatorio uso del ventilador
75/
486DX4 1992 Tecnología 3.3V x3 (fext=33.3MHz) L1=16K
100
3M transistores integrados Soket5
75 a
Pentium 32 1993 Fexterna=66MHz multiplicación =x1.5/x2/x2.5/x3
200
Voltios 3.3 -3.52V L1=16K
150 Volt=3.3 x2.5/x3
Pent PRO 1996 a L1 = 16K L2=256k a 1M
200 L2 en el mismo encapsulado
166 Instrucciones MMX Multimedia con reg. Esp.
Pentium
PC Actuales :
4 Externamente igual que el 5 pero que tiene esas dos tensiones para aumentar el multiplicador
Problemas electrónica Digital Profesor Javier Quintana
Otros Fabricantes :
x
16/
386 SX/DX 32
32 1986 <386 de Intel con menos consumo
DX 40 >486DX a 33MHz
1992
DX2/DX4 50/66/80 =486DX2 de Intel
486 32 32
DX4-100 1995 100 <486DX4-100
DX5-133 1996 133 <486DX4-100
AMD
1.2 En resumen
Tipos de micros:
Según marca : Intel, AMD, Motorola, Zilog
Según DB :4bits (calculadoras) 8bits (autómatas) 16bits y 32bits (Antig. PC)
64bits (PC actuales)
16 bits => 386 (El SX era de 8 bits)
32 bits => 486 Tenían coprocesador (el SX no) y multiplicaban su frecuencia respecto a
la externa (33MHz) DX x1 DX2 x2 y DX4 x3 (¿No se tendría 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 “
AMD k7 como Pentium III (mejor) =>Fext=200MHz Socket/Slot
PC rico PC pobre
En paralelo con el mercado de micros, existen otros paralelamente que eran más
económicos, en comparación con su omólogo, y por supuesto más lentos. Por ejemplo:
PC Rico PC pobre
386DX con DB=32 386SX con DB=16 (286)
486DX con coprocesador mat. Incluido 486SX sin coprocesador mat. (386)
Pentium II con L2=256k Celeron sin L2 (PMMX)
Actualmente tenemos :
Intel AMD Características Parecido
5
Celeron 1,2GHz Duron 1,1GHz 103$ 0,13 Socket A PIII
L1=32k/128k L2=256k/64k
5
PC Word Nov 2001 pag 253
Página 120
Problemas electrónica Digital Profesor Javier Quintana
Todos estan conectados entre si, y el 8085 tiene exteriormente 3 buses como
todos los microprocesadores (pero con tamaños diferentes):
Hay que señalar 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.
Página 121
Problemas electrónica Digital Profesor Javier Quintana
En la pag 283 y 284 explica el funcionamiento de cada uno de los registros, unidades
etc.., señala brevemente el significado de cada uno de ellos:
Descripción
A
B, C
D, E
H, L
Flag
S
AC
CY
ALU
U.C.
R.I.
P.C.
S.P.
Funcio
namien
to de la
pila
Página 122
Problemas electrónica Digital Profesor Javier Quintana
MOV rd,M
MVI rd,dato
LXH H,addr
ejemplo de utilización :
7 Estas hojas son las que se permitirán en los exámenes. Copia descriptivamente lo que significan cada
una de las instrucciones, y si necesitas algun ejemplo de aclaración, cópialo detrás.
Página 123
Problemas electrónica Digital Profesor Javier Quintana
ADD rs SUB rs
ADD M SUB M
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 lógicas
ANA rs CMP rs
ANA M CMP M
ORA M
ORI dato
CMA
Página 124
Problemas electrónica Digital Profesor Javier Quintana
RLC
RRC
RAL
RAR
Jcondicion addr Z
NZ
P
M
C
NC
PO
PE
3.6 Instrucciones para las subrutinas
3.7.-Instrucciones de control
HLT IN puerto
Página 125
Problemas electrónica Digital Profesor Javier Quintana
LXI H,2002H, lo mueve a B, y para moverlo al 2003 podría haberse escrito LXI
H,2003H o como en este caso, incrementando lo que tenía, movemos de B a M, y
para finalizar END.
Página 126
Problemas electrónica Digital Profesor Javier Quintana
3- Utilizando el direccionamiento directo (LDA, STA) realizar un programa que grabe el dato
de la dirección 1500H en la dirección 1501H
5- Realizar un programa que borre los datos [1500] [1501] [1502] pero antes de borrarlos que
grabe esos datos en la [1503] [1504] [1505] respectivamente.
9.3.1.2 Ejercicios de operaciones aritméticas
6- Realizar un programa que sume dos números. Los sumando se proporcionarán de forma
inmediata en el programa y serán los valores 12H y A3H. El resultado se depositará en la
dirección 1500H (Resultado B5H)
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 dirección [1500] a partir de la
1000, es decir si en 1500 hay un 13H entonces los datos de las siguientes direcciones se pondrán
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 ....
Página 127
Problemas electrónica Digital Profesor Javier Quintana
;***********************************
4.2 Soluciones ejercicios sim8085. ;**** EJERCICIO 6 ****
;************************************
;***********************************
ORG 200H
;**** EJERCICIO 1 ****
MVI A,12H ;A=12H
;************************************
MVI B,0A3H ;B=A3H
ORG 2000H
ADD B ;A=A+B
MVI A,3FH ;A<=3F
STA 1500H; ;[1500]<=A
STA 1500H
END
;***********************************
;**** EJERCICIO 2 ****
;***********************************
;************************************
;**** EJERCICIO 7 ****
ORG 2000H
;************************************
LXI H,1500H ;
ORG 2000H
MVI M,3FH ;[1500]<=3F
LDA 1500H
END
RAL
;***********************************
RAL
;**** EJERCICIO 3 ****
STA 1501H
;************************************
END
ORG 2000H
LDA 1500H ;A<=1500
;***********************************
STA 1501H ;1501<=A
;**** EJERCICIO 8 ****
END
;************************************
;***********************************
; Es un programa muy parecido al anterior, pero que
;**** EJERCICIO 4 ****
;se tiene que realizar tantas veces como el contenido
;************************************
;de 1501 mediante un bucle
ORG 2000H
[1502]=[1500]*2*2*2 ... [1501].....*2*2
LXI H,1500H ;M=1500
;Se puede probar poniendo un 6 en 1500 y un 4 en
MOV B,M ;B<=M
;1501HEn nuestro caso se almacenará
; Podría ser cualquier registro
;6*2*2*2*2=96D=60H
LXI H,1501H ;M=1501
MOV M,B ;M<=B
;Cuando se utilizan ;bucles, saltos o subrutinas,
END
inicializar la pila LXI SP,3000H
;Programa
;***********************************
ORG 2000H
;**** EJERCICIO 5 ****
LXI SP, 3000H
;************************************
LXI H,1501H
ORG 2000H
MOV B,M ;B=[1501]
;Mover datos memoria
LDA 1500H ;Cargo el nº de 1500
;[1503]<=[1500] Direccionamiento indirecto
BUCLE: RAL ;x2
LXI H,1500H
DCR B ;Decremento B
MOV B,M
JNZ BUCLE
LXI H,1503H
;Salto a bucle mientras no sea 0
MOV M,B
STA 1502H ;Almaceno a 1502
END
; [1504]<=[1501] Direccionamiento directo
LDA 1501H
STA 1504H
Página 128
Problemas electrónica Digital Profesor Javier Quintana
ORG 2000H
LXI SP, 3000H
MVI C,0FFH
LDA 1500H ;A=[1500]
LXI H,1000H
Página 129
Problemas electrónica Digital Profesor Javier Quintana
Solución:
Programa:
ORG 0000H
Página 130
Problemas electrónica Digital Profesor Javier Quintana
1.-Hacer el fichero texto con el EDIT que se llame por ejemplo PRUEBA.ASM
3.- Ver si hay algún 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ú preguntándote 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 están conectados el PC y el entrenador mira el Apéndice A.
5.-Ejecutar con G1000 recordar que a pesar que hemos puesto ORG 0000H el
programa HacerHex lo incrementa automáticamente en mil unidades.
Para ver más comandos desde el PC puedes ver el APENDICE B, por ejemplo se puede
ver el programa ejecutando D1000,1010
Con la tecla SME/ANT 1000 se va metiendo los códigos máquina en hexadecimal a partir de la dirección
1000, hay que pulsar POST después de cada código, y ejecutar con GO 1000 y EJEC.
Para ver los comandos del entrenador, consultar el APENDICE C
El 8085 como tiene los buses de datos y el de direcciones multiplexado, el 74373 los
demultiplexa, 8085 ------ AB y DB (8) ------- 74373 ----- ABL (8) ----- DB(8)
Tiene un reloj de cuarzo de 4.915 MHz, un dedodificadro de 3 a 8 canalies
74138 y puertas and 7408 para la realización del mapa de memoria, que es la siguiente:
Direcciones chip, mapa hardware descripción, mapa software
0000 EPROM 4k Programa monitor de la consola y
0FFF 2732 subrutinas anteriores
1000 2x RAM 2k Programas de usuario
1FFF 4016
2000 RAM 256 bytes Utilizado por la consola
20FF 8155 U17
Página 131
Problemas electrónica Digital Profesor Javier Quintana
nombre
Dirección nombre8 descripción Display
manuales
El contenido del acumulador se visualiza en el display,
04D5H ACUMDISPLAY DISPLAY<=A
Datos UPDDT
044EH TECLAACUM Carácter de consola al acumulador A<=TECLADO no procede RDKBD
Un mensaje que esta en memoria, que comienza en la
041DH MENSDISPLAY dirección apuntada por HL se visualiza en el display 9 direcciones OUTPT
DISPLAY<=[HL]
Visualiza los contenidos de HL en el display
04C9H HLDISPLAY DISPLAY<=HL
direcciones UPDAD
Estas son las más importantes, en el Apéndice D existen más subrutinas que podéis 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 fábrica.
Las subrutinas utilizan saltos de dirección, y para que el micro sepa dónde
regresar cuando acabe la subrutina, almacena la dirección del programa en curso en la pila, la
pila tiene que estar en una dirección RAM, por lo que la primera instrucción de nuestro
programa tiene que ser inicializar la pila en una dirección 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 líneas 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 después cargar los datos previamente almacenados. Por ejemplo, supongamos que en A
tenemos datos importantes, y los queremos visualizar:
Página 132
Problemas electrónica Digital Profesor Javier Quintana
5.5 Interrupciones
Supongamos que un periférico quiere comunicarse con el P, ¿Tiene que estar
viendo el P si se pulsa una tecla en un bucle sin fin, o debe de ser el P libre, y cuando
el teclado quiere comunicarse con el interrumpirlo? Evidentemente la respuesta es la
segunda opción, los periféricos se comunican con los P a través de unas líneas
especiales que se llaman Interrupciones, y cuando necesitan comunicarles algo lo hacen
por esas líneas, el P acepta la interrupción y salta a una subrutina que atiende la
petición. En los PC existen desde el 16 líneas de interrupciones conectadas a distintos
periféricos, puedes verlos en Mi PC· Propiedades Administrador de dispositivos · PC·
Propiedades y en la misma ventana pinchando en Entrada/Salida las direcciones donde
están las subrutinas que las atienden.
El entrenador sólo deja la RST6.5 RST7.5, como la 6.5 la utiliza el teclado vamos a
utilizar será la RST7.5, (una tecla que está en la esquina superior izquierda).
En las interrupciones tipo hardware, es necesario que para que no tengan máscara, para
quitarles las máscara se puede modificar el registro I, o con la instrucción SIM y
también hay que validarlas con la instrucción EI, o sea, hay que poner al principio de
nuestro programa las instrucciones que se señalaron en el apartado 4.
En la interrupción 7.5 el 8085 salta a la dirección 003CH, que en este entrenador esta en
la ROM, y tiene grabado la siguiente tabla:
003C C3
003D CE
003E 20
Es decir JMP 20CE, lo que significa que vuelve a saltar a la dirección 20CE y que
pertenece a la RAM pequeña 8155, que sólo tienes 3 sitios libres, donde se puede poner
un salto a otra dirección de tu programa entre la 1000 y la 1FFF
Conclusión: si pulsas la tecla INT7.5 el programa salta a la dirección 20CE y sólo tienes
3 bytes libres para poner lo que desees, lo más cómodo otra JMP ... (que ocupa 3 bytes)
Ejemplo: ..... (el final de tu programa)
;*******************************
;* Interrupción 7.5 *
;*******************************
INTER: .... (lo que quieres que haga cuando se pulsa Int7.5)
JMP INICIO
ORG 10CEH10
JMP INTER
END
10 Hay que tener en cuenta que HACERHEX incrementa todos los ORG mil unidades
Página 133
Problemas electrónica Digital Profesor Javier Quintana
POR EJEMPLO MVI A,01H ;el 8155 su PA como salida, PB y PC como entradas
* Si quieres saber cómo funcionan los 8251 (pag 73) , 8155 (pag 157) y 8255 (pag 104) consulta el libro
Microprocesador 2000 manual de Harware, estos chips son también utilizados en los PC actuales.
Página 134
Problemas electrónica Digital Profesor Javier Quintana
8155 8255
REGISTRO DE CONTROL 20H 3BH
8155 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 más 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 ; Podría haber sido también 23H del PC del 8155
MVI A,82H
OUT 3BH ;8255 PAout PBin PCout
;si queremos escribir en los puertos
MVI A,01H ; Que se encienda la luz más 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 ; Podría haber sido también 3AH del PC del 8255 pero sólo 6
Página 135
Problemas electrónica Digital Profesor Javier Quintana
2.- Se trata de realizar un programa que sume como una calculadora, primero se teclea
el primer sumando, luego el segundo y la tecla INT7.5 será la que ejecute la suma y lo
visualice por pantalla.
3.- El mismo programa, pero que en vez de ser la tecla INT.5 que lo haga la tecla POST
4.- Realizar un programa que haga un mensaje intermitente por el display, el mensaje
puede ser por ejemplo HOLA
5.- Realizar un programa que haga un contador en el display por el campo de “datos”:
00 01 02 ... FE FF 00 01 ...
6.- Realizar un programa que visualiza por el campo de “direcciones” del display un
contador de 0000 a FFFF y por el campo de “datos” un contador de 00 a FF
8.- Realizar un programa que lea los interruptores del puerto A del 8155 y visualice en
el display el número en binario marcado.
9.-Realizar un programa que saque intermitente por todos los puertos en todos los leds
Página 136
;***********************************
5.8 EJERCICIOS CON EL P8085 ;**** EJERCICIO 3 ****
;************************************
;SUMA DOS NUMEROS
;***********************************
;, TECLA POST REALIZA SUMA*********
;**** EJERCICIO 1 ****
;************************************
;CAPTAR Y VISUALIZAR UNA LETRA
; Las teclas especiales tienen el siguiente código :
;*******************SUBRUTINAS
; TECLA CODIGO
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
; EJEC PASO 15H
TECLAACUM EQU 044EH ;A<=TECLA
; POST 11H
;*****************PROGRAMA
; EJEC 10H
ORG 0000H
; E REG 14H
;al traspasar el programa al P se incrementará en ; GO 12H
;1000 automáticamente ; SM 13H
LXI SP,10C8H
MVI A,08H
SIM ;*****************SUBRUTINAS
EI ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
BUCLE: CALL TECLAACUM TECLAACUM EQU 044EH ;A<=TECLA
CALL ACUMDISPLAY
JMP BUCLE ;***********PROGRAMA
END ORG 000H
LXI SP, 1FFFH
MVI A,08H
;*********************************** SIM
;**** EJERCICIO 2 **** EI
;************************************ BUCLE: CALL TECLAACUM
;SUMA DOS NÚMEROS CPI 11H ;tecla post
; TECLA INT7.5 HACE LA SUMA **** JZ SUMA
;**************************SUBRUTINAS STA 1500H
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A CALL ACUMDISPLAY
TECLAACUM EQU 044EH ;A<=TECLA CALL TECLAACUM
;****************************DATOS CPI 11H
***********************PROGRAMA JZ SUMA
ORG 000H STA 1501H
LXI SP, 1FFFH CALL ACUMDISPLAY
MVI A,08H JMP BUCLE
SIM ;Si no se pone, sin casi ver el 2º sumando
EI ;pone el resultado
BUCLE: CALL ACUMDISPLAY
STA 1500H
CALL TECLAACUM ;*******************SUMA
CALL ACUMDISPLAY SUMA: LDA 1500H
STA 1501H MOV B,A
DAA LDA 1501H
CALL TECLAACUM ADD B
JMP BUCLE DAA
;Si no se pone, sin casi ver el 2º sumando CALL ACUMDISPLAY
; pone el resultado JMP BUCLE
;se podría hacer con un pause END
;, 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
Problemas electrónica Digital Profesor Javier Quintana
;*********************************** ;***********************************
;**** EJERCICIO 4 **** ;**** EJERCICIO 5 ****
;************************************ ;************************************
;MENSAJE INTERMINTENTE ; CONTADOR *************
;**************************SUBRUTINAS
*;***********SUBRUTINAS ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A TECLAACUM EQU 044EH ;A<=TECLA
TECLAACUM EQU 044EH ;A<=TECLA ;****************************DATOS
MENSDISPLAY EQU 041DH ;DISPLAY<=[HL] *********************PROGRAMA
ORG 0000H
;****************************DATOS LXI SP,1FFFH
ORG 0050H MVI A,08H
MENSAJE: DB 10H,00H,11H,0AH ;HOLA ;Antes del bucle habría que asegurarse que DATO
BLANCO: DB 15H, 15H, 15H, 15H ;Tiene cargado un 00, y realmente es así DB 00H
SIM
; **************************PROGRAMA EI
ORG 0000H BUCLE: LDA DATO
MVI A,08H INR A
SIM STA DATO
EI ;Hay que almacenar A pues la subrutina lo borra
BUCLE: LXI H,MENSAJE CALL ACUMDISPLAY
CALL MENSDISPLAY CALL PAUSA
CALL PAUSA JMP BUCLE
LXI H,BLANCO ;Falta añadir la subrutina PAUSA y la
CALL MENSDISPLAY interrupción 7.5 que serían igual que en el ejercicio 3
CALL PAUSA
JMP BUCLE ;***********************************
;**** EJERCICIO 6 ****
;******************************PAUSA ;************************************
;Esta pausa tiene que ser larga ; DOS CONTADORES ************
;porque sino no da tiempo a verse el mensaje ;***************SUBRUTINAS
;Son dos bucles uno dentro del otro ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
;Bucle1 cuenta el C de A a 0 TECLAACUM EQU 044EH ;A<=TECLA
;Para cada cuenta del Bucle1 hay un ciclo del Bucle2 HLDISPLAY EQU 04C9H ;DISPLAY<=HL
;que es el D que va de FF a 0 ;************************PROGRAMA
;Es decir A*FF=10*255=2550 cuentas ORG 0000H
LXI SP,1FFFH
MVI A,08H
;*********************************** SIM
; SUBRUTINA PAUSA EI
;*********************************** MVI A,00H
PAUSA: MVI D,0FFH STA 1500H
BUCLE1: MVI C,0A0H LXI H, 0000H
BUCLE2: DCR C SHLD 1501H
JNZ BUCLE2 BUCLE: LDA 1500H ;A<=[1500]
DCR D INR A ;A=A+1
JNZ BUCLE1 STA 1500H
RET; ;[1500]<=A ;almaceno el acumulador
; antes de llamar a la subrutina
CALL ACUMDISPLAY
LHLD 1501H ;H<=[1501] L<=[1502]
INX H ;H=H+1
;******** INTERRUPCION 7.5******** SHLD 1501H
;Esta interrupción hace parar el micro ; [1501]<=H [1502]<=L almaceno antes de llamar
ORG 10CEH CALL HLDISPLAY
EI ; tambien HLT CALL PAUSA
END JMP BUCLE
;Falta añadir la subrutina PAUSA y la
interrupción 7.5 que serían igual que en el ejercicio 3
Página 138
Problemas electrónica Digital Profesor Javier Quintana
;**************************************
;* EJERCICIO 7 CONTADOR DECADAS * ;***********************************
;************************************** ;**** EJERCICIO 9 ****
;**************************SUBRUTINAS ;************************************
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A ;
TECLAACUM EQU 044EH ;A<=TECLA ;**************** PROGRAMA
;****************************DATOS ORG 0000H
;************************PROGRAMA LXI SP,1FFFH
ORG 0000H MVI A,0FH
LXI SP,1FFFH OUT 20H
MVI A,08H MVI A,80H
SIM OUT 3BH
BUCLE: EI
LDA 1500H ;A<=[1500] BUCLE: MVI A,11111111B
INR A ;A=A+1 OUT 21H
CPI 0AH ;Hace la resta A-0A OUT 22H
JNZ SIGUE OUT 23H
;Si A=0AH=10D entonces, borra A OUT 38H
;, si no sigue como estaba OUT 39H
MVI A,00H OUT 3AH
SIGUE: STA 1500H CALL PAUSA
;[1500]<=A almaceno el acumulador MVI A,00000000B
; antes de llamar ; a la subrutina OUT 21H
CALL ACUMDISPLAY OUT 22H
CALL PAUSA OUT 23H
JMP BUCLE OUT 38H
;Falta añadir la subrutina PAUSA y la OUT 39H
interrupción 7.5 que serían igual que en el ejercicio 4 OUT 3AH
CALL PAUSA
JMP BUCLE
;***********************************
;*************************************** ; SUBRUTINA PAUSA
;*EJER 8 LEER INTERPTORES A DISPLAY* ;***********************************
;*************************************** PAUSA: MVI D,0FFH
;***************SUBRUTINAS BUCLE1: MVI C,0A0H
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A BUCLE2: DCR C
;**************************************** JNZ BUCLE2
;* PUERTOS * DCR D
;**************************************** JNZ BUCLE1
;**************** PROGRAMA RET
ORG 0000H END
LXI SP,1FFFH
MVI A,02H
OUT 20H
BUCLE: IN 21H
STA 1500H
CALL ACUMDISPLAY
LDA 1500H
JMP BUCLE
END
Página 139
6.- EL SEMÁFORO
golpe de
1º 2º 3º 4º
reloj
S1 PUERTO C 8255 S2 PUERTO A 8255 S3 PUERTO B 8255 S4 PTO B DEL 8155
puerto
OUT 3AH OUT 38H OUT 39H OUT 22H
semáfor
P1 G1 F1 P2 G2 F2 P3 G3 F3 P4 G4 F4
o
bits VR VNR VNR VR VNR VNR VR VNR VNR VR VNR VNR
El puerto A del 8155 (OUT 21H) se utilizará como entrada para poner los semáforos en intermitencia.
¿Cómo se envían estos valores? Al inicio del programa hay que insertar el siguiente código:
MVI A, 80H ;carácter de control del 8255
OUT 3BH ;salida al control 8255
MVI A, 02H ;carácter de control del 8155
OUT 20H ;salida al control 8155
Conexiones :
Problemas electrónica Digital Profesor Javier Quintana
Ejercicios avanzados
1.- Confeccionar un programa que sume 3 números. Los números se proporcionarán de forma
inmediata en el propio programa. Serán los números 25H, A4H, 05H. El resultado se
almacenará en la dirección 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
dirección 1003. Comprobar el resultado
Página 141
Problemas electrónica Digital Profesor Javier Quintana
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 dirección 1004. Comprobar el
resultado
7.- Realizar un programa que sume dos números almacenados en las direcciones [1000] y
[1001] , estos números no serán mayores que 99, el resultado expresarlo en BCD en la dirección
[1002] y el acarreo en la [1003]
8.- Realizar un programa que multiplique dos números, el 8085 como todos los P de 8
bits no tienen instrucciones específicas para la multiplicación, 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 división de dos números 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 específicas para la división,
luego hay que realizarlos manualmente es decir, si en la multiplicación era haciendo sumas,
aquí es haciendo restas.
11.- Este ejercicio trata de realizar un programa con varias decisiones. Supongamos dos
variables X almacenado en la dirección 1000 y la variable Y almacenado en la dirección 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
Página 142
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Página 143
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Página 144
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
;***********************************
;**** EJERCICIO 10 ****
;************************************
;Suma de N primeros números
;el acumulador va sumando mientras lo mande N
;Datos
ORG 1000H
N DB 6H ;***********************************
RES DB 0 ;A=0 C=6 ;**** EJERCICIO 12 ****
;Programa ;A=06H=06D C=5 ;************************************
ORG 2000H ;A=0BH=11D C=4 ;Convertir BCD a HEX
LXI SP,3000H ;A=0FH=15D C=3 ;Datos
LDA N ;A=12H=18D C=2 ORG 1000H
MOV C,A ;A=14H=20D C=1 BCD DB 01D,06D,04D
MVI A,0 ;A=15H=21D C=0 ;El número BCD es el 164D que en Hex es A4H
FIN HEX DB 00
BUCLE: ADD C ;Programa
DCR C ORG 2000H
JNZ BUCLE MVI A,0
STA RES LXI BCD
END MOV C,M
CENT: DCR C
;*********************************** JM FINCENT
;**** EJERCICIO 11 **** ;Si es negativo, que salte a hacer las decenas
;************************************ ADI 64H ;A=A+100 pues 64H=100D
; Si X<Y entonces Z=X+Y Si X>Y entonces Z=X-Y JMP CENT
;Si X=Y entonces Z=Y FINCENT:INX H
;Datos MOV C,M
ORG 1000H DEC: DCR C
X DB 12H JM FINDEC
Y DB 22H ADI 0AH ;suma 0AH=10D
Z DB 00H JMP DEC
;En este caso en Z se almacenará 12H+22H=34H FINDEC: INX H
;Programa MOV C,M
ORG 2000H UNI: DCR C
LDA X ;A=X JM FINUNI
LXI H,Y ;M=Y ADI 01H ;suma 1
CMP M ;Hace la comparación A-M =X-Y JMP UNI
JZ CASO3 FINUNI: STA HEX ;Almacenar el resultado
JP CASO2 END
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
Página 145
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Para utilizar el micro 8085 desde el PC, se debe de poner el conmutador Teclado/CRT en la posición
CRT. En el fichero CONFIG.SYS del PC debe de existir la línea DEVICE=ANSI.SYS. Y también tener
conectado un cable conexión serie de tres hilos de la siguiente forma:
Ejecutar el fichero DDT85 he indicar en qué puerto esta COM1 COM2 etc..., de esta forma se consigue
una comunicación 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.
D dirección baja,dirección alta =Visualiza la memoria desde la dirección alta hasta la baja, ejem
D1009,2A50
Gdirección comienzo =ejecuta el programa desde la dirección comienzo, si no se pone, ejecuta desde
donde apunta el registro PC.
Mdirección baja, dirección alta, destino = mueve la memoria, ejem M1E00,1E06,1F00 = mueve el
bloque de memoria desde la 1E00 hasta 1E06 a la 1F00
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
H = fin de la comunicación
Página 146
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Página 147
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Aquí tienes un ejemplo real de un programa escrito en lenguaje alto nivel, cómo se traduce en
ensamblador y en lenguaje máquina.
Fíjate cómo una instrucción de Alto nivel son muchas en ensamblador, pero una instrucción en
ensamblador equivale a una en lenguaje máquina.
También puedes ver como el lenguaje alto nivel sirve para cualquier P pero el ensamblador es exclusivo
de cada P, concretamente para P del 8086 hacia delante por eso se llaman COMPATIBLES.
En realidad el código mostrado es de 32 bits, luego este programa sólo puede “runear” en PC con
Win9x, un 8086/88 no podría resistirlo, pero si 486 hacia delante sin Win3.x pues es de 16 bits.
Página 148
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Página 149
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
INDICE DE GLOSARIOS
[ 8
[1000] ........................................................... 123 8085 .............................................................. 119
[HL] ............................................................. 123 8086 .............................................................. 119
3 A
386 ................................................................ 119 A 122
4 A.B. ............................................................... 121
486 ................................................................ 119 Ábacos ............................................................ 57
5 AC................................................................. 122
555 .................................................................. 55 ACUMDISPLAY.......................................... 130
6 Acumulador .................................................. 121
6500 .............................................................. 119 ADD .............................................................. 124
7 addr .............................................................. 123
7400 .................................................................. 6 ADI ............................................................... 124
7402 .............................................................. 6, 7 alarma ............................................................... 7
7404 ................................................................ 14 ALU ...................................................... 121, 122
74121 .............................................................. 54 AMD ............................................................. 120
74122 .............................................................. 54 AMDK5 ........................................................ 120
74123 .............................................................. 54 AMDK6 ........................................................ 120
74138 .............................................................. 16 ampliación de Decodificadores ....................... 24
74139 .............................................................. 16 ampliación de MUX........................................ 24
7414 ................................................................ 56 ANA .............................................................. 124
74148 ........................................................ 16, 17 AND ................................................................ 76
74150 .............................................................. 17 ANI ............................................................... 124
74151 .............................................................. 17 API .................................................................. 69
74166 .............................................................. 29 aritmética binaria ............................................ 25
74190 .............................................................. 38 arrancador Estrella/Triángulo ......................... 69
74191 .............................................................. 38 ASM ............................................................. 126
74192 .............................................................. 38 ASM8085 ..................................................... 126
74194 .............................................................. 29
74221 .............................................................. 54
Autómatas ........................................ 69
7442 .......................................................... 16, 17 B
7447 ................................................................ 17 B 122
7475 ................................................................ 29 BATH ........................................................... 146
7476 ...................................... Véase Biestable JK BCD 16, 20, 22, 25, 27, 28, 38, 49, 50, 142, 144,
145
7483 ................................................................ 25
Biestable a partir de puertas lógicas ................ 31
7485 ................................................................ 17
Biestable D...................................................... 29
7490 ................................................................ 38
biestable D síncrono por flanco de subida ...... 31
7491 ................................................................ 29
biestable D síncrono por nivel ........................ 30
7493 ................................................................ 38
Biestable JK .................................................... 29
7494 ................................................................ 29
biestable JK síncrono por flanco de bajada ..... 30
7495 ................................................................ 29
biestable JK síncrono por los dos flancos ....... 30
74LS139 ....................................................... 100
Biestable JK sincrono por nivel ...................... 30
Página 150
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Página 151
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
I MOV............................................................. 123
IL............. Véase Lenguaje lista de instrucciones msi................................................................... 16
IN ................................................................. 125 MUX 74150 .................................................... 17
INR .............................................................. 124 MUX 74151 .................................................... 17
Instalación de ventilación ............................... 95 MUX de 4 canales........................................... 18
INT7.5 .......................................................... 133 MUX genérico ................................................ 17
Interrupciones ............................................... 133 MVI .............................................................. 123
Interruptor horario .......................................... 76 N
INX .............................................................. 124 NAND ............................................................. 76
J NAND de 2 ent ................................................. 7
J 125 NAND de dos entradas ..................................... 6
JMP.............................................................. 125 NOP .............................................................. 125
K NOR .......................................................... 14, 76
K7 ................................................................. 120 NOT ................................................................ 76
karnaugh ....................................5, 12, 13, 14, 85 O
L OBJ ............................................................... 126
L 122 off...................................................................... 7
la lógica negativa ............................................ 15 on ...................................................................... 7
LD ........................ Véase Lenguaje de contactos OR ................................................................... 76
LDA ............................................................. 123 ORA ............................................................. 124
Lenguaje a contactos .................................... 73 Ordenadore Compatibles .............................. 148
Lenguaje alto nivel ....................................... 148 Ordenadores Compatibles ............................. 119
Lenguaje C ................................................... 148 ORG ............................................................. 126
Lenguaje ensamblador .................................. 148 ORI ............................................................... 124
Lenguaje máquina ........................................ 148 OUT.............................................................. 125
Lenguaje por Lista de Instrucciones........... 73 P
lógica negativa ............................................... 14 P 122
LOGO ............................................................. 75 P.C. ............................................................... 122
LST .............................................................. 126 panificadora .................................................... 83
M pasar a puertas NAND .................................... 12
M 123 pasar en puertas NAND .................................. 15
mapa de memoria ......................................... 100 PAUSA........................................................... 129
Mapa de memoria ......................................... 131 Pent III .......................................................... 119
máscara ......................................................... 133 Pentium .................................................. 119
MASKROM ................................................ 102
PentiumII ...................................................... 119
master-slave .................................................... 30
Periféricos ..................................................... 134
MAXitérminos............................................ 5, 10
pila ................................................................ 122
memorias ........................................................ 99
PIPO ................................................................ 29
MENSDISPLAY .......................................... 132
PISO ................................................................ 29
microprocesadores ........................................ 119
Plano de funciones ........................................ 74
MINitérminos ............................................. 5, 10
Portón corredizo .............................................. 96
monoestable con puertas NAND .................... 54
PROM .......................................................... 102
monoestables .................................................. 54
puerta automática ...................................... 79, 82
Morgan ........................................................... 14
Puerta automática ............................................ 94
MORGAN ...................................................... 10
puerta OR .......................................................... 9
Página 152
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh
Página 153