Está en la página 1de 153

Problemas de Electrónica Digital

para los Ciclos Formativos de Electricidad-Electrónica

Profesor :
J. Javier Quintana Peiró
Registro Legal de propiedad de autor :
AB-482-2002
CDU: 621.3 (076)

1 Problemas puertas lógicas, karnaugh ...


2 Problemas de códigos y circuitos msi.
3. Problemas de aritmética binaria
4 Problemas de biestables y registros
5 Problemas de contadores
6 Problemas de astables, retardadores y monoestables digitales
7 ALARMA AIN 302
9 Problemas de memorias.
10 Microcontroladores CPIC16F84
11 Microprocesador P 8085

1
Indice :

1 Problemas puertas lógicas, karnaugh ... __________________________________ 5


1.1 Enunciados ____________________________________________________________ 5
1.2 Solución a los problemas de puertas lógicas, karnaugh ... ______________________ 8
2 Problemas de códigos y circuitos msi. ___________________________________ 16
2.1 Enunciados de problemas de códigos ______________________________________ 16
2.2 Enunciados de problemas circuitos msi ____________________________________ 16
2.3 Esquema de los Decodificadores __________________________________________ 18
2.3 Esquema de los Decodificadores __________________________________________ 19
2.4 Soluciones a los problemas de códigos _____________________________________ 20
2.5 Soluciones a los problemas de circuitos msi _________________________________ 20
3. Problemas de aritmética binaria _______________________________________ 25
3.1 Enunciados de ejercicios de suma binaria __________________________________ 25
3.2 Enunciados de ejercicios de resta binaria __________________________________ 25
3.3 Enunciados de ejercicios de suma y resta BCD ______________________________ 25
3.4 Enunciados de ejercicios de suma y resta en HEX ___________________________ 25
3.5 Soluciones ejercicios suma binaria ________________________________________ 26
3.6 SolUciones ejercicios resta binaria ________________________________________ 26
3.7 Soluciones ejercicios suma y resta en BCD _________________________________ 27
3.8 Solciones ejercicios suma y resta en HEX __________________________________ 28
4 Problemas de biestables y registros _____________________________________ 29
4.1 Resumen de biestables y registros _________________________________________ 29
4.2 Enunciados de problemas de cronogramas de biestables ______________________ 29
4.2 Enunciados de problemas de cronogramas de biestables ______________________ 30
4.3 Enunciados de problemas de registros _____________________________________ 31
4.4 Soluciones a los problemas de cronogramas de biestables _____________________ 34
4.5 Soluciones a los problemas de biestables ___________________________________ 35
5 Problemas de contadores _____________________________________________ 38
5.1 Enunciados de ejercicios de contadores ____________________________________ 38
5.2 Soluciones a los problemas de contadores __________________________________ 39
6 Problemas de astables, retardadores y monoestables digitales ________________ 54
6.1 Enunciados de problemas _______________________________________________ 54
6.1.1 Problemas de monoestables con puertas lógicas y 74121 74221 74122 y 74123 ___________ 54
6.1.2 Problemas con 555 __________________________________________________________ 55
6.1.3 Problemas con trigers y retardadores ____________________________________________ 55
6.1.3 Problemas con trigers y retardadores ____________________________________________ 56
6.2 Ábacos y fórmulas 74122 74123 74121 y 555 ________________________________ 57

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

2. Pasar a puertas lógicas las funciones booleanas siguientes :


a) F= (((AB)'(C'+D'))+(A+B'))'
b) F = (((A+B)'+(C'D'))')+(A'+B')'(C(A+B)')'

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)

4. Realizar la tabla de verdad de los circuitos del ejercicio 1

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

6. Simplificar por el método de álgebra de Boole


a) F  a  b·a  a
b) F  a·b·c  a·b·c  a·b·c·d
c) F  a·b·( a·b·c  a·b·c )
d) F  a  b  c  a
e) F  a·b·c  a·b·c
f) F  a·b·c  a
7.- Pasar a puertas NAND de 2 puertas 7400
a) F  a  bc  ( a  b)
b) F  ab  ab( c  d )  ac d
c) F  ( a  b)( c  da )  cd  ( c  d )( a  b( c  d ))
8. Pasar las siguientes funciones a puertas NOR7402
a) F  abc  b( c  d )
b) ( a  b)( c  d )b(b  c( c  ( d  e))
c) F  a bc  (b  c )( a  b( c  d ) )

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.

17. Diseñar un circuito lógico de un sistema de alarma de 4 interruptores a b c y d , que se desactive si


hay 3 o 4 interruptores activados, se active si hay uno o ninguno activado y es indiferente si hay 2
activados. Realizarlo con puertas NAND

7
1.2 SOLUCIÓN A LOS PROBLEMAS DE PUERTAS LÓGICAS,
KARNAUGH ...

1. a) ( a·b)  ( c  d )

b) F  (( a  b)  (( a  b)·(b·c )))·( ((b·c )  ( c·d ))

2. a) La función lógica que responde a la ecuación (((AB)'(C'+D'))+(A+B'))' es

b) ) La función lógica que responde a la ecuación (((A+B)'+(C'D'))')+(A'+B')'(C(A+B)')'

3 a) Se realiza operando en cada una de las combinaciones resultando :


a b c F
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0

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

nº a b c d 1 (a+b)' 2 a+b 3 bc 4 nand 1 3 5 or 2 4 6 cd' 7nor 6 3 F nand 5 7


0 0 0 0 0 1 0 0 1 1 1 0 1
1 0 0 0 1 1 0 0 1 1 1 0 1
2 0 0 1 0 1 0 0 1 1 1 0 1
3 0 0 1 1 1 0 0 1 1 0 1 0
4 0 1 0 0 0 1 0 1 1 1 0 1
5 0 1 0 1 0 1 0 1 1 1 0 1
6 0 1 1 0 0 1 1 1 1 1 0 1
7 0 1 1 1 0 1 1 1 1 0 0 1
8 1 0 0 0 0 1 0 1 1 1 0 1
9 1 0 0 1 0 1 0 1 1 1 0 1
10 1 0 1 0 0 1 0 1 1 1 0 1
11 1 0 1 1 0 1 0 1 1 0 1 0
12 1 1 0 0 0 1 0 1 1 1 0 1
13 1 1 0 1 0 1 0 1 1 1 0 1
14 1 1 1 0 0 1 0 1 1 1 0 1
15 1 1 1 1 0 1 0 1 1 0 1 0

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

a) F  a  bc  ( a  b)  a  bc  ( a  b)  a·bc·( a  b)  a·bc·( a·b)

b ) Este ya es más complejo ...

F  ab  ab( c  d )  ac d  ab  ab( c  d )  acd 

ab * ab( c  d ) * ac d  ab * ab( c  d ) * ac d  ab * ab( c * d ) * ac d

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 ...

8. a) F  abc  b( c  d )  abc  b( c  d )  abc  b( c  d )  a  b  c  b  ( c  d )


El dibujo sería :

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 ))

9. La tabla de verdad, karnaugh y pasar a puertas NAND :

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

14. La tabla de verdad y el circuito pasado a puertas nand de dos entradas es

15. La función simplificada queda F=ab+cd pero para pasarla a puertas NOR hay que hacer Morgan :

F  ab  cd  a  b  c  d como podemos ver, las variables de entrada están negadas, luego


podemos utilizar en vez de lógica positiva que nos obligaría a unilizar puertas NOT para negarlas, utilizar
lógica negativa y así ahorarnos las puertas NOT 7404 de las variables de entrada :

16. En este caso la simplificación por karnaugh da F  ab  c d  ab  c d  ab * c d


si utilizamos la lógica positiva nos sale el circuito de la izquierda, pero con la lógica negativa aplicada
sólo en d el circuito de la derecha, sin una puerta NOT.

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.

2.1 ENUNCIADOS DE PROBLEMAS DE CÓDIGOS

1.- Rellena la siguiente tabla :

BINARIO DECIMAL HEXADECIMAL BCD


35
100100011
BC
11111011
74
101000111
2748
110110100100
5D
101000000

2.- Pasar a decimales


BINARIO 0.1 0.1111 0.0101
DECIMAL 0.808 0.616 0.587 0.1

2.2 ENUNCIADOS DE PROBLEMAS CIRCUITOS MSI


3.- Dibujar la salida del los siguientes chips 74148 7442 :

4.- Dibujar la salida de los siguientes chips 74138 74139

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

6.- Dibujar el estado de los leds 74151 74150

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.

11. Deducir la tabla de verdad del siguiente circuito combinacional msi

12. Deducir la tabla de verdad del circuito combinacional msi de la figura (fijarse bien) :

Problema 12

Problema 13

13. Deducir la tabla de verdad del circuito combinacional msi de la figura

14 ¿A qué equivale este circuito?

15. Con varios MUX de 4 canales, Problema 14


realiza un MUX de 16 canales

Problema 15

18
2.3 ESQUEMA DE LOS DECODIFICADORES

Decodificador 74138 de 3 a 8

Decodificador 74159 de 4 a 16

Decodificador 74139 2x de 2 a 4 Decodificador BCD 7442 de 4 a 10

19
2.4 SOLUCIONES A LOS PROBLEMAS DE CÓDIGOS
1.- Rellena la siguiente tabla :

BINARIO DECIMAL HEXADECIMAL BCD


100011 35 23 0011 0101
1111011 123 7B 0001 0010 0011
1011100 188 BC 0001 1000 1000
11111011 251 FB 0010 0101 0001
1001010 74 4A 0111 0100
10010011 147 93 101000111
101010111100 2748 ABC 0010 0111 0100 1000
110110100100 13492 DA4 1 0011 0100 1001 0010
1011101 93 5D 1001 0011
10001100 140 8C 101000000

Hay que recordar el siguiente esquema :

2.- Pasar a decimales

BINARIO 0.1 0.1100 0.1111 0.1001 0.0101 0.1001 0.0011


DECIMAL 0.5 0.808 0.9375 0.616 0.3125 0.587 0.1

2.5 SOLUCIONES A LOS PROBLEMAS DE CIRCUITOS MSI


3.- El primer chip es un decodificador 74148, que si vemos las entradas, la más alta activada es el 4 (las
entradas son activas a nivel bajo del 74148) leugo el número a salir será el 4 = 100 pero como las salidas
son también a nivel bajo, sale 001
El 7442 decodificador tiene en su entrada DCBA=1001 = 9 luego la salida 9 estará activa (como es a

nivel bajo, todos estan encendidos y sólo el 9 apagado)


4.- El 74138 es un codificador que vemos que la entrada es CBA=110 = 6 luego la salida 6 es la que esta
activa.El 74139 son 2 DEC 2 a 4, el primero tiene el nº 3 (1B1A=11) y el segundo el nº 1 (2B2A=01).
(Como las salidas son a nivel bajo, todos estan encendidos exceptos las salidas activas).

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.

b) Con el 7442, a pesar de ser un Decodificador BCD y sólo tiene 10 salidas,


desde la 0 hasta la 9, se puede utilizar en este problema, pues las salidas
10 al 15 no se utilizan, con sólo que uno de ellos fuese
distinto en la tabla de verdad ya no puede
utilizarse.

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)

14 Se trata de una ampliación de


Decodificadores, con decodificador de 2 a 4 se
ha ampliado a Dedodificador de 8 a 16, el
primero tiene la selección más alta, y habilita
cual de los 4 decodificadores de abajo funciona
y realiza la decodificación.

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

2. Realiza la siguiente suma de forma binaria : 725 + 60 = 785

3. ¿Cómo realizarias con puertas lógicas un semisumador?

4. ¿Cómo realizarías un sumador de 3 bits con el sumador completo ?

5 Realiza un circuito capaz de sumar números de 1 byte (8 bits) con el


7483 y señala con '1' y '0' los pines para el caso concreto de la suma
101101 + 11100110

3.2 ENUNCIADOS DE EJERCICIOS DE RESTA BINARIA

6. Realiza la resta 725-60=665 en forma binaria representando los números negativos en C1

7. Realiza la resta 60-725=-665 en forma binaria representando los números negativos en C1

8 Realiza la resta 725-60=665 en forma binaria representando los números negativos en C2

9. Realiza la resta 60-725=-665 en forma binaria representando los números negativos en C2

3.3 ENUNCIADOS DE EJERCICIOS DE SUMA Y RESTA BCD

10. Realiza la suma siguiente en forma BCD 1725 + 8860 = 10585

11.Realiza la siguiente resta en forma BCD: 14 - 4 = +10

12 Realiza la siguiente resta en forma BCD: 4 - 14 = -10

13.Realiza la siguiente resta en forma BCD: 6257 - 5356 = +901

14.Realiza la siguiente resta en forma BCD: 5356 - 6257 = - 901

3.4 ENUNCIADOS DE EJERCICIOS DE SUMA Y RESTA EN HEX

15 Realiza la siguiente suma 19AC + FB8

16. Realiza la siguiente resta 4AFC - 4ACF

17 Realiza la siguiente resta 68 - FB8

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 :

4. Se conectan los acarreos de salida con los de la entrada del bit


siguiente de más peso. Con 4 semisumadores completos se tendría
un 7483

5 La suma 101101 + 11100110 da 100010011 un acarreo entre el


bit 4º y 5º y un acarreo el el bit 8º

Número A = 0010 1101 = 45 Número B = 1110 0110 = 230


Resultado = 1 0001 0011 = 275

3.6 SOLUCIONES EJERCICIOS RESTA BINARIA

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

3.7 SOLUCIONES EJERCICIOS SUMA Y RESTA EN BCD

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

3.8 SOLCIONES EJERCICIOS SUMA Y RESTA EN HEX


15.- Lo mejor es pasarlo a binario, y realizar la suma en binario:

19AC => 0001 1001 1010 1100


0FB8 => 0000 1111 1011 1000
2964 <= 0010 1001 0110 0100

16 - Lo mejor es pasarlo a binario, y realizar la resta en binario, elegimos hacer en C2 aunque se puede
hacer en C1

4AFC => 0 0100 1010 1111 1100


- 4ACF => 0100 1010 1100 1111 =>C2=> 1 1011 0101 0011 0001
+ 002D <= <= <= 0 0000 0000 0010 1101

17 - Lo mejor es pasarlo a binario, y realizar la resta en binario, elegimos hacer en C2 aunque se puede
hacer en C1

068 => 0 0000 0110 1000


- FB8 => 1111 1011 1000 =>C2=> 1 0000 0100 1000
- F50 <= 1111 0101 0000 <=C2<= 1 0000 1011 0000

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 1
1 Q

REGISTROS

29
4.2 ENUNCIADOS DE PROBLEMAS DE CRONOGRAMAS DE
BIESTABLES

1 Dibujar la forma de onda de salida del siguiente Biestable RS asíncrono

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

9. Dibuja la forma de salida del siguiente biestable D síncrono por nivel

30
10 Dibuja la forma de salida del siguiente biestable D síncrono por flanco de subida

11 A partir de puertas lógicas:


a) ¿Cómo se construye un biestable RS ?
b) ¿Y un biestable RS con las entradas negadas?

12. A partir de un biestable RS y puertas lógicas ¿Cómo se construye un biestable JK?

13 A partir los biestables construidos en los anteriores ejercicios


a) ¿Como construyes un biestable T?
b) ¿Cómo construyes un biestable D?

4.3 ENUNCIADOS DE PROBLEMAS DE REGISTROS


14 Dibuja el cronograma de salida del registro 7475 de la figura

15 Dibuja el cronograma de salida de los siguientes registros

16. Dibuja el cronograma de salida de un 7491 con esta entrada

31
17.- Rellenar la siguiente tabla de un 7494

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 
0 1 0 0101 1101 0 X
0 0 0 0101 1100 1 
0 0 0 1111 0010 0 
0 0 0 0101 1101 1 0
0 0 0 1101 1111 0 
0 0 0 0011 1100 0 
0 0 0 0011 0011 1 1
0 0 0 0000 0000 0 
0 0 1 0000 1001 1 X
0 0 0 0000 0000 0 
0 0 0 0110 1111 1 
0 0 0 0101 1111 0 0
0 0 0 0000 0000 0 

18 Rellena la siguiente tabla de funcionamiento de un 74166

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
1  1 0 01011100
1  1 0 11010101
1  1 1 00110011
1  1 1 00001100
1  1 0 01001100
1 0 1 0 01100001
0  1 0 00110101
1  0 1 00110011
1  1 1 00001100

S.I. = Serial Input = SER

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

20 Rellenar la siguiente tabla de funcionamiento de un 74194

cl' CLK S0 S1 SR A B C D SL QA QB QC QD comentario


0  01 1 0111 1
1  11 0 0010 0
1  01 0 0100 0
1  01 0 0101 0
1  10 0 0101 1
1  10 0 0101 1
1  10 0 0101 0
1 0 10 0 0101 0
1  10 0 0101 0
1  01 1 0101 0
1  00 1 0101 0
0  11 1 0111 1
1  10 1 0101 1
1  11 1 0101 1
1  01 1 1111 1
1  01 1 1111 1

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:

6.- Ahora es por flanco de bajada:

7.- Ahora por los dos

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 :

11 12 y 13 las soluciones son :

4.5 SOLUCIONES A LOS PROBLEMAS DE BIESTABLES


14 La solución del cronograma es :

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

cl' CLK S0 S1 SR A B C D SL QA QB QC QD comentario


0  01 1 0111 1 0000 clear
1  11 0 0010 0 0010 carga
1  01 0 0100 0 0001 
1  01 0 0101 0 0000 
1  10 0 0101 1 0001 
1  10 0 0101 1 0011 
1  10 0 0101 0 0110 
1 0 10 0 0101 0 0110 quieto
1  10 0 0101 0 1100 
1  01 1 0101 0 1110 
1  00 1 0101 0 1110 quieto
0  11 1 0111 1 0000 clear
1  10 1 0101 1 1101 
1  11 1 0101 1 0101 carga
1  01 1 1111 1 0101 quieto
1  01 1 1111 1 1010 

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

11 En este caso tenemos que resetear en 9=1001


Clk A Clk B Qa Qb Qc Qd Resets
Clk externo Qa Salida Q0 Salida Q1 Salida Q2 Salida Q3 Q3 y Q0
y clkB

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

También se podría haber hecho utilizando sólo 3 bits :


Clk A Clk B Qa Qb Qc Qd Resets
n.c. Clk externo n.c. Salida Q0 Salida Q1 Salida Q2 Q1y Q0

13 Hay que hacer simplemente un contador mod7 y tomar como salida el bit de mayor
peso : Hay que resetar en el 7=0111
Clk A Clk B Qa Qb Qc Qd Resets
Clk externo Qa clkB N.C. Salida N.C. puerta
Puerta = AND con entrada a Q2, Q1 y Q0

43
14 Hay que utilizar dos 7490 uno para las unidades y otro para las decenas
7490 Clk A Clk B Qa Qb Qc Qd 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

27 Esta vez tiene que ser el 74191


Hay que detectar el 13=1101 y cargar el 5=0101
Max/
Qa Qb Qc Qd D C B A Rco G CLK D/U´ Load
Min
Sal Sal Sal Sal Clk Ent
0 1 0 1 n.c. 0 0 n.c
Q0 Q1 Q2 Q3 ext pta
Entrada pta NAND= Q3 Q2 Q0

28 Esta vez tiene que ser el 74191


Hay que detectar el final y cargar el 5=0101
Max/
Qa Qb Qc Qd D C B A Rco G CLK D/U´ Load
Min
Sal Sal Sal Sal Clk
0 1 0 1 Load 0 0 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

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

30 Tienen que ser dos 74191


Hay que detectar el 18=00010010 y cargar el 2=00000010
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 1 0 0 n.c. 0 0 n.c
Q0 Q1 Q2 Q3 ext pta
Sal Sal Sal Sal Sal
2º 1 0 0 0 n.c. 0 Q3 0 n.c.
Q4 Q5 Q6 Q7 pta
Pta= NAND Q1 y Q4 CLK del 2º puede ser el RCO del 1º

31 Tienen que ser dos 74190


Hay que detectar el 18=0001 1000 y cargar el 2=00000010 (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 1 0 0 n.c. 0 0 n.c
Q0 Q1 Q2 Q3 ext pta
Sal Sal Sal Sal Sal
2º 0 0 0 0 n.c. 0 Q3 0 n.c.
Q4 Q5 Q6 Q7 pta
Pta= NAND Q3 y Q4 CLK del 2º puede ser el RCO del 1º

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º

33 Tienen que ser dos 74190


Hay que detectar el 80=1000 0000 y cargar el 13=0001 0011 (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º 1 1 0 0 n.c. 0 0 n.c
Q0 Q1 Q2 Q3 ext pta
Sal Sal Sal Sal Sal
2º 1 0 0 0 n.c. 0 Q3 0 n.c.
Q4 Q5 Q6 Q7 pta
Pta = NOT que tiene de entrada Q7 ( desde el 13 al 79 no hay nadie que tenga Q7=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

35 Son dos chips, 1º el de unidades y el 2º el de decenas


Tiene que detectar el 74=0111 0100 y cargar el 13=0001 0011
Chip Qa Qb Qc Qd A B C D UP DW CO BO Load Clear
Up Sal
1º Q0 Q1 Q2 Q3 1 1 0 0 Clk n.c. n.c. 0
2º pta
CO Sal
2º Q4 Q5 Q6 Q7 1 0 0 0 n.c. n.c. n.c. 0
1º pta
Pta = NAND Q2 Q4 Q5 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º 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

39 Son dos chips, 1º el de unidades y el 2º el de decenas


Tiene que detectar el 24=0010 0100 y cargar el 45=0100 0101
Chip Qa Qb Qc Qd A B C D UP DW CO BO Load Clear
Dwn Sal
1º Q0 Q1 Q2 Q3 1 0 1 0 n.c. Clk n.c. 0
2º pta
BO Sal
2º Q4 Q5 Q6 Q7 0 0 1 0 n.c. n.c. n.c. 0
1º pta
Pta = OR Q7 Q6 Q4 Q3 Q1 y Q0
El reloj UP 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=1F

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 3seg y C=1nF usando fórmulas.

5 Diseña un monoestable con el 74121 para un tiempo 3seg y C=1nF usando ábacos.

6 diseña un detector de impulsos superior a 3seg C=F

7 diseña un detector de impulsos inferiores a 2mseg C=100n

8 Diseña un retardador de impulso con el 74121 de la siguiente forma :

9 Diseña un detector de impulsos múltiples en 4 segundos R=600k

10 Diseña un monestable de temporización 1ms y R=50k con el 74122

11 Diseña un monestable de temporización 1s y R=50k con el 74122

12 Diseña un astable con el 74123 con un tiempo bajo de 7seg y un tiempo alto de 0.4seg. 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=3F Dibuja en el osciloscopio anterior cual sería la forma de onda.

15 Dibuja la forma de onda del siguiente osciloscopio :

16 Supongamos que queremos conseguir la siguiente onda, diséñalo con un 555 C=3F

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

19 Calcula el tiempo de retardo de la siguiente circuito retardador

20 Diseña un circuito retardador de 5seg con un C=6F

56
6.2 ÁBACOS Y FÓRMULAS 74122 74123 74121 Y 555

74122 y 74123

Si C1nF usar el ábaco

Si C>1nF usar fórmula :

T = 0.28RC(1+700/R)

(0.32 con diodo)

74121 y 74221 con ábaco o con la fórmula T=0.69RC

Astable con 555 TH=(R1+R2) ln2


Monoestable con 555 T=RCln3 TL = R1 ln2

57
6.3 SOLUCIONES A LOS PROBLEMAS

6.3.1 Soluciones monoestables con puertas lógicas y 74121 74221 74122 y 74123

1 Si T=RCln3 => R = T/Cln3 = 3/1*1.1 = 2.7M

2 T=RCln2 => C=T/Rln2 = 0.1m/10k*0.69=14.5nF

3 Para T=0.1ms=100s y R=10K tenemos C=15nF

Problema 1

Problema 3

Problema 5

4 Tenemos que : R=3/1n*0.69=4.3k

5 En el ábaco nos sale 4k

6 Con la fórmula, pues es más cómodo :

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.6F

Problema 9
10 Usando la fórmula:

T=0.32RC(1+700/R) despejando C tenemos C=T/R(1+700/R) = 1m/(0.32*50k(1+700/50k))=61nF

Como sale más grande 1nF no tenemos por qué usar ábaco.

11 Igualmente tenemos C=T/R(1+700/R) = 1m/(0.32*50k(1+700/50k))=61pF como


sale más pequeño que 1nF tenemos que usar el ábaco : C=40pF

12 Tenemos que usar los dos


monoestables del 74123 en cascada
y realimentados, de esta
forma uno dispara al otro
resultando un astable. El
tiempo bajo lo regula el
primer monoestable, el
de la derecha, y el
tiempo alto el de la
izquierda.

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

(Se puede observar que prácticamente para tiempos mayores


de 5000nseg la fórmula y el ábaco dan el mismo resultado.

Para el otro condensador C = T/R(1+700/R =


0.4/0.32*50k(1+700/50k) = 24pF =>Como sale <1nF
tenemos que usar el ábaco y sale C=4pF
(Aquí ya no sale igual)

6.3.2 Soluciones a los problemas con el 555

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

14 Tenemos que T=1.1*R*C=1.1*1M*3=.3seg el osciloscopio


sería con 3.3Div
Verticalmente Vcc=12V/5V/Div=2.4Div
Y la forma de onda del condensador tiene que llegar a 2/3 de
Vcc es decir 12*2/3=8V=1.6Div

59
15 Calculando tenemos
Tl=0.69*R2*C=0.69*80k*2=0.11seg = 2.2Div
(dividiendo por 0.05seg/Div)
Th=0.69*C*(R1+R2)=0.69*2*(80k+50k)=0.18se=3.5Div

La tensión Vcc=12=2.4Div Vcc/3=4V=0.8div Vcc2/3=8=1.6Div

16 Primero lo diseñamos con el tiempo bajo


Tl=3.5Div*0.05seg/Div=0.175seg
Luego R2=Tl/0.69*C=0.175/0.69*3=84k
Con esta resistencia podemos calcular R1
Th=3.8Div*0.05Div=0.19seg
R1+R2= Tl/0.69*C=0.19/0.69*3=91k luego R1=7k. El dibujo sería igual que el del ejercicio anterior

6.3.3 Soluciones a los problemas con trigerr y retardadores

17 El tiempo bajo será Th=RCln(Vcc-Vt-)/(Vcc-Vt+)=300*0.01ln(5-0.9)/(5-1.7)=630nseg


y el tiempo alto será Tl=RClnVt+/Vt-=300*0.01ln1.7/0.9=1.89seg
La suma de los dos T=Th+Tl=2.52seg que en frecuencia es 400kHz

18 Observando el osciloscopio, los tiempos bajo y alto son aproximádamente de


Tl=Th=0.02seg=20nseg luego
R=Tl/ClnVt+/Vt-=20n/1nln(1.7/0.9)=31
O con la otra fórmula
R=Th/Cln(Vcc-Vt-)/(Vcc-Vt+)=20n/1nln(5-1.7)/(5-0.9)=95
Elegimos un valor aproximado medio de 60

19 El tiempo de retardo será T=1.1RC=.1*1*2.7M=3seg

6.20 Despejando de la anterior fórmula tenemos : R=T/1.1*C=5/6*1.1=757k

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.

Veamos un típico circuito de automatismos. Un arrancador Estrella/Triángulo con temporizador.


La figura 1 muestra como es la técnica cableada. Por una parte tenemos el circuito de fuerza, que
alimenta el motor, y por otra el circuito auxiliar o de mando, que realiza la maniobra de arranque de
dicho motor.

69
La figura 2 muestra como se realiza el mismo montaje de forma programada. El circuito de fuerza es
exactamente el mismo que en la 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

8.2 PARTES DE UN AUTÓMATA PROGRAMABLE


La estructura básica de cualquier autómata es la siguiente:
 Fuente de alimentación
 CPU
 Módulo de entrada
 Módulo de salida
 Terminal de programación
 Periféricos.
Respecto a su disposición externa, los autómatas pueden contener varias de estas secciones en un mismo
módulo o cada una de ellas separadas por diferentes módulos. Así se pueden distinguir autómatas
Compactos y Modulares.
8.2.1 Fuente de alimentación
Es la encargada de convertir la tensión de la red, 220v c.a., a baja tensión de c.c, normalmente 24 v.
Siendo esta la tensión de trabajo en los circuitos electrónicos que forma el Autómata.
8.2.2 CPU
La Unidad Central de Procesos es el auténtico cerebro del sistema. Se encarga de recibir las ordenes,
del operario por medio de la consola de programación y el modulo de entradas. Posteriormente las
procesa para enviar respuestas al módulo de salidas. En su memoria se encuentra residente el programa
destinado a controlar el proceso.
8.2.3 Modulo de entradas
A este módulo se unen eléctricamente los captadores (interruptores, finales de carrera, pulsadores,...).
La información recibida en él, es enviada a la CPU para ser procesada de acuerdo la programación
residente.
Se pueden diferenciar dos tipos de captadores conectables al módulo de entradas: los Pasivos y los
Activos.
Los Captadores Pasivos son aquellos que cambian su estado lógico, activado - no activado, por medio
de una acción mecánica. Estos son los Interruptores, pulsadores, finales de carrera, etc.
Los Captadores Activos son dispositivos electrónicos que necesitan ser alimentados por una tensión
para que varíen su estado lógico. Este es el caso de los diferentes tipos de detectores (Inductivos,
Capacitivos, Fotoeléctricos). Muchos de estos aparatos pueden ser alimentados por la propia fuente de
alimentación del autómata.

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.

Circuitos con relé conectado y no conectado.

Estos circuitos nos muestras que cuando conectamos el interruptor del circuito donde se encuentra la pila
pasa una corriente a 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.

8.2.4.3 Módulos de salidas a Transistores a colector abierto.


El uso del este tipo de módulos es exclusivo de los circuitos de c.c.
Igualmente que en los de Triacs, es utilizado en circuitos que necesiten maniobras de
conexión/desconexión muy rápidas.

8.2.5 Terminal de programación


El terminal o consola de programación es el que permite comunicar al operario con el sistema.
Las funciones básicas de éste son las siguientes:
- Transferencia y modificación de programas.
- Verificación de la programación.
- Información del funcionamiento de los procesos.
Como consolas de programación pueden ser utilizadas las construidas específicamente para el
autómata, tipo calculadora o bien un ordenador personal, PC, que soporte un software especialmente
diseñado para resolver los problemas de programación y control.

Terminal de programación compatible PC


Terminal de programación portátil

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

Conexión de un visualizador a un autómata


Panel de Operación

8.3.- LENGUAJES DE PROGRAMACIÓN


Cuando surgieron los autómatas programables, lo hicieron con la necesidad de sustituir a los enormes
cuadros de maniobra construidos con contactores y relés. Por lo tanto, la comunicación hombre-maquina
debería ser similar a la utilizada hasta ese momento. El lenguaje usado, debería ser interpretado, con
facilidad, por los mismos técnicos electricistas que anteriormente estaban en contacto con la instalación.
Estos lenguajes han evolucionado, en los últimos tiempos, de tal forma que algunos de ellos ya no tienen
nada que ver con el típico plano eléctrico a relés..
Los lenguajes más significativos son:
8.3.1 Lenguaje a contactos. (LD)
Es el que más similitudes tiene con el utilizado por un electricista al elaborar cuadros de automatismos.
Muchos autómatas incluyen módulos especiales de software para poder programar gráficamente de esta
forma.

8.3.2 Lenguaje por Lista de Instrucciones. (IL)


En los autómatas de gama baja, es el único modo de programación. Consiste en elaborar una lista de
instrucciones o nemónicos que se asocian a los símbolos y su combinación en un circuito eléctrico a
contactos. También decir, que este tipo de lenguaje es, en algunos los casos, la forma más rápida de
programación e incluso la más potente.

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.

8.3.4 Plano de funciones (FBD)


El plano de funciones lógicas, resulta especialmente cómodo de utilizar, a técnicos habituados a
trabajar con circuitos de puertas lógicas, ya que la simbología usada en ambos es equivalente.

¿Qué diferencia hay entre un autómata y un ordenador?


AUTÓMATAS Trabajan con instrucciones específicas
de entradas y salidas
Sistemas programables
ORDENADORES Trabaja con instrucciones específicas
del campo de la informática
(ficheros...)

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

Teclado para introducir


Pantalla donde se van viendo órdenes o modificar las
las órdenes introducidas o los existentes
parámetros introducidos.

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.8.1 Ejercicios manejo funciones generales


1 Realizar un programa en el LOGO que cuando los interruptores I1 I2 e I3 estén
activados, Q1 se active (activarse = 1)

2 Realizar un programa en el LOGO que cuando alguno de los interruptores I1 I2 e I3


estén activados, Q1 se active (activarse = 1)

3 Si I1 e I2 son diferentes entonces Q1=1

4 Si I1 e I2 son iguales entonces Q1=1

5 Si I1=1 I2=1 e I3 =0 entonces Q1=1 será 0 en otro caso

6 Si I1=1 I2=1 e I3 =0 entonces Q1=1 será 0 en otro caso


Si I1=1 I2=0 e I3 =0 entonces Q2=1 será 0 en otro caso
Q3=1 si ocurre alguno de los anteriores casos

7 Si I1=1 I2=1 e I3 =0 o I1=0 I2=1 e I3 =0 entonces Q1=1 será 0 en otro caso


Si I1=1 I2=0 e I3 =0 entonces Q2=1 será 0 en otro caso
Q3=1 si ocurre alguno de los anteriores casos
Q4 = 1 si ocurren los dos anteriores casos a la vez (Q2 y Q3)

8 Si I1=1 I2=1 I3 =0 I4=1 I5=0 I6=1 entonces Q1=1 será 0 en otro caso

Los siguientes 4 problemas hacerlos sólo si os sobra tiempo, si no pasar al 13:

9 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.

10 Teniendo en cuenta sólo las entradas I1 I2 I3 e I4, hacer un programa que si el


número de interruptores activados de I1 I2 I3 e I4 son impares entonces Q1=1

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

19 En una cinta de transporte de una panaderia, se encuentra una célula fotoeléctrica I1


que emite pulsos cada vez que pasa por delante de ella un pastelito. Realizar un
programa que cuando cuente 16 empaquete el pastelito. La máquina de empaquetar está
en Q1. Una vez concluida la empaquetación, por I2 se le envia un pulso para que
empieze a contar.

20 Supongamos una oficina, que desea que la calefacción Q1 se conecte Lunes a


Viernes de 9:00 hasta las 13:00 y de 16:00 hasta las 19:00, excepto los viernes
conectará a las 8:00 en vez de las 9:00 y que de desconectará a las 18:00 en vez de las
19:00 pues se entra más pronto y se sale más pronto. Los Sabados sólo se trabaja por la
mañana y habrña que conectar la calefacción de 9:00 a 13:00.

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.

24.- Cuando se active I1 e I2, que se encienda la lampara Q1 tardando 10 segundos


en desconectarse.

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.

2- Hacer una intermitencia durante 10 segundos cuando se encienda I1 e I2 que son


pulsadores.

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.

29.- Hacer un programa que cuando se active I1 se encienda Q1 durante 5 seg. Y si


se activa I2 que durante 5 seg haya una intermitencia de 0.5seg. cada periodo
siendo I1 e I2 pulsadores. I3 pulsador como Reset

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

31.- Al pulsar 1x I1 se enciende Q1, al pulsar 2 x I1 se enciende Q1 y Q2, al pulsar


3 x I1 se enciende Q1 Q2 Q3, y al pulsar 4 x I1 se apagan todos

32.- Que se encienda Q1 5 segundos cuando se active I1, siendo I1 interruptor.

33.- Al accionar I1, Q1 se acciona 2 segundos después de que se apague I1 y


funciona durante 1 segundo, siendo I1 un pulsador.

34 Cuando se accione I1, después de 10 segundos, que Q1 haga una intermitencia


durante 5 segundos (1 segundo cada periodo), siendo I1 pulsador.

81
35.- Realizar un secuenciamiento de luces, en bucle.

Q1 => Q2 => Q3 => Q4 => Q1 => Q2 => .....


8.8.4 Ejercicios GF+Sf casos prácticos
36 Realizar un programa que simule un semáforo. Q1=Rojo Q2=Amarillo Q3=Verde de tal manera
que este 8 seg. en Rojo, 2 seg. en Amarillo y 10 seg. en verde. Se comenzará con un pulso en I1.

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

Podemos observar que si Q1 y Q2 se


activan se produciría un corto.
Realizar el programa en LOGO tomando
en cuenta esta consideración. Los finales
de carrera son NC como en la realidad.
Consejo : Ver 16.

39 Para completar más aún la puerta


automática, se le puede dotar de un
dispositivo de cierre automático con sólo
un pulsador I1 para abrir, que a los 10seg.
automáticamente se cierre. I3 puede tomar
ahora el significado de Paro de emergencia que como todos los interruptores de seguridad son NC.

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

42 En una panificadora se cuenta con una cámara de fermentación que de forma


automática se conecta y desconecta. Con lo que sabes del logo programa la
siguiente propuesta: La cámara problema debe estar conectada de lunes a viernes de
9:00 a 14:00 y de 16:00 a 20:00, y los sábados y domingos debe estar de 10:00 a
13:00 y de 20:00 a 22:00.

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

8.9.1 Soluciones a los ejercicios de funciones generales GF

5 En este caso tenemos que hacer una combinación para


que resulte el propósito del enunciado

6 En este caso Q1 = I1 * I2 * I3neg (igual que en ejercicio anterior 5)


Q2 = I1 * I2neg * I3neg
Q3 = (I1 * I2 * I3neg) + ( I1 * I2neg * I3neg) o más fácil Q3 = Q1 + Q2

7 En este caso Q1 = ( I1 * I2 * I3neg ) + ( I1neg * I2 * I3neg )


Q2 = I1 * I2neg * I3neg
Q3 = Q1 + Q2 Q4 = Q3 * Q2

8 En este caso lo que hay que hacer es : Q1 = I1 * I2 * I3neg * I4 * I5neg * I6

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

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 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

14 Pruébalo y verás que si no mantienes el pulsador I1 6 seg entonces no


hay un pulso en Q1. Si quieres que ese pulso no se desactive, se puede
poner un biestable RS a la salida

15 Todos los pulsadores estarían conectados en paralelo en la misma


entrada I1. La entrada R puede estar desconectada (x)

16 La solución es un biestable RS, donde en Set estaría I1 y en Reset estaría I2, la


salida Q1 (motor).

Si I2 fuese un pulsador NC tendríamos que intercalar una puerta NOT

17 En este caso será un retardo a la conexión memorizado, Será


memorizado porque el motor tiene que estar activo hasta que lo ordene
el fin de carrera I3.

En el caso que I3 fuese NC habría que interponer una puerta NOT

18 Sólo es añadir un intermitente por Q3

19 En este caso sería un contador, el pulso por I2 produciría el Reset. Dir


tiene que estar a nivel bajo LO.

Si se quisiera un reset automático despues de empaquetar, en vez de I2


habría que poner un retraso a la desconexión de Q1.

20 Será un programador horario con las siguientes programaciones :


No1 = Mo-Sa On=9:00 Off=13:00
No2=Mo-Fri On=16:00 Off=19:00
No3=Fri On=8:00 Off=18:00

21 La solución es un biestable

22 La solución es un telerruptor, en R puede estar suelto (x) u otro pulsador

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.

Otra solución para no tener que utilizar el


Reset del I2 y utilizar otros módulos que
no sean el contador, es el esquema de la
figura de la derecha. Se utiilzan RS que
recuerdan, y el siguiente biestable hace Set
si se ha activado el anterior. Q4 hace el
papel de resetear a todos. Los módulos de
retardo de conexión se utilizan para no
coincidir I1 con el estado, si no se ponen,
simultáneamente se ponen a uno todos.

32 A pesar que el enunciado parece fácil, la solución


de este problema no lo es.

El retardo a la conexión negada produce un impulso


positivo de 5 segundos, que haciendo AND con I1
sólo queda ese impulso

33 La solución es parecida al anterior,

88
o de otra forma mucho más fácil, los tiempos son el primero 3 seg y el segundo 2
segundo

34 Es añadir a la solución del ejercicio anterior, un generador de intermitencias. Se


puede hacer con las dos soluciones:

La fácil

La dificil :

35 La solución se basa en que si unimos dos bloques uno retardador a la desconexión y


otro retardador a la conexión, ese bloque que aquí llamamos Blq es un retardador como
en el ejercicio 33, ese bloque es puesto en cascada a traves de todos los estados y ya
tenemos el secuenciamiento en bucle, el primero se puede activar por Q4 o por I1 que
dará el impulso inicial. Los tiempos pueden ser todos iguales T=seg.

89
8.9.4 Soluciones a los ejercicios GF+SF casos prácticos

36 Es muy parecido al anterior, pero programando adecuademente los tiempos :


T1=8 T1´=10 T2=2 T2´=8 T3=10 T3´=2 el primer bloque de I1 tiene T=10seg.

37 La solución es una versión modificada del anterior

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.

42 Se necesitan varias programaciones, luego hay que utilizar varios progamadores


horarios y unirlos mediante una puerta OR

Programas : Mo-Fri On:9:00 Off:14:00


Mo-Fri On:16:00 Off:20:00
Sa-Su: On:10:00 Off:13:00
Sa-Su: On:20:00 Off:22:00

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

8.10.1 Pulsador de Confort

Se desea realizar en la luz de la escalera de una finca un circuito que sea capaz de cumplir los siguientes
requisitos:

- Al pulsar cualquier pulsador que la luz


se mantenga encendida 6m

- Si en alguna ocasión se desea


mantenerla siempre encendida, (por
ejemplo en operaciones de limpieza)
que pulsando dos veces cualquier
pulsador se mantenga encendida, y
que para apagarla se mantenga
pulsado el pulsador durante al menos
2 seg.
Solución : El esquema de conexiones de
LOGO y el programa

Reto: 1.- Que exista un interruptor general de encendido y otro de apagado


2.-Antes de apagarse la luz, que parpadee 3 veces

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

Solución de montaje con el LOGO:

Programa a realizar :

Reto:

1.- Que exista un horario de


entrada por ejemplo 9:00 a
21:00 y un horario de salida de
8:00 a 22:00

2.- Que exista dos interruptores


de cerra y de abrir.

94
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:

Esquema de conexiones con el LOGO y programa

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.

Solución con el LOGO

Programa

Reto:

1.- Que se cierre


automáticamente a los 10
segundos

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

Solución programa LOGO

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.

9.- Implementar el siguiente mapa de memoria con puertas lógicas y decodificadores:


Direcciones Función Mapa de memoria físico
0000 a 03FF VARIABLES DEL SISTEMA Y STACK RAM 1Kx4 A B
0400 a 07FF DATOS TEMPORALES RAM 1Kx4 C D
A000 a AFFF INTERFACE CIRCUITOS E/S E
E000 a EFFF TABLAS Y DATOS FIJOS ROM 2kx8 F
F000 a FFFF PROGRAMA ROM 2kX8 G

10.- Implementar el siguiente mapa de memoria para un micro de 8 bits, utiliza decodificadores 3 a 8
74LS138 y decodificadores 2 a 4 74LS139 entrada E y salidas a nivel bajo.
DIRECCION CHIP 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

11.- Implementa el siguiente mapa de memoria para un micro de 8 bits


DIRECCIÓN CHIP
FFFF F000 EPROM MCM2716 2Kx8
A00F A000 PUERTOS E/S VIA 6522
03FF 0000 RAM MCM2114 1Kx4

12. Implementar el siguiente mapa de memoria para un micro de 8 bits, utiliza decodificadores 3 a 8
74LS138 ,decodificadores 2 a 4 74LS139 entrada E y salidas a nivel bajo y puertas lógicas

DIRECCION CHIP DIRECCIÓN CHIP


0000 A 0800 C
03FF RAM 0BFF ROM
0400 B 0C00 D
07FF RAM 0FFF ROM

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

1b) Memoria 64x8

 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 ????

4.- Una memoria 2Kx8 tiene 11 pines el resto


seleccionan al chip:
Direcciones de memoria :
A15A12 A11 A8 A7 A4 A3 A0
1111 1111 1111 1111
1111 1000 0000 0000

Como vemos las líneas A15 a A11 tienen que


seleccionar a la memoria, y como CS es a nivel
bajo, entonces es una puerta NAND (Con 11 sale
0 en otro caso 1) Problema 4

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

Como vemos las líneas A15 a A11 tienen que seleccionar


a la memoria, y como CS es a nivel bajo, entonces es una
puerta OR (con 00 sale 0 en otro caso 1) Problema 5

6.- En el dibujo se puede ver 3 memorias 1kx4


conectadas en paralelo en el AB, de tal forma que
comparten las mismas direcciones de memoria pero
en el DB están conectadas en serie, de tal forma Problema 6
que las 3 forman palabras de 12 bits, en el dibujo
falta conectar todos los CS a uno sólo que sería la
selección de los tres a la vez.

7.- Las direcciones de memoria de los dos chips

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

Problema 8 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.

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

11.- Pasando los números hexadecimales a binario tenemos .


chip A15 A12 A11 A8 A7 A4 A3 A0
1111 1111 1111 1111
A
1111 0000 0000 0000
1010 0000 0000 1111
B
1010 0000 0000 0000
0000 0011 1111 1111
CD
0000 0000 0000 0000

Los chips C y D están conectados en


paralelo para conseguir palabras de 8
bits

Para su selección se han utilizado


dos 74138

Los otros se ha optado por puertas


lógicas

105
12.- Pasando los números hexadecimales a binario tenemos .

chip A15 A12 A11 A8 A7 A4 A3 A0


0000 0000 0000 0000
A
0000 0011 1111 1111
0000 0100 0000 0000
B
0000 0111 1111 1111
0000 10 00 0000 0000
C
0000 10 11 1111 1111
0000 1100 0000 0000
D
0000 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.

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%

Se puede decir que es una verdadera computadora, no es sólo un microprocesador, sino


sus periféricos ya integrados, esta versatilidad, y su reducido coste le ha aumentado su
popularidad, se puede decir que por cada P que se vende se venden cientos de C.
Memoria ROM.- Existen C con memorias Máscara (CR), OTM o PROM,
EPROM, EEPROM ( C ) y FLASH (F), estas dos últimas son muy útiles si el C se
tiene que programar varias veces, incluso en el mismo circuito, por eso es utilizado
también como autómatas.
Las memorias Máscara son utilizados en C grabados en fábrica que no se
volverán a programar, por lo que se encuentran en bastantes dispositivos de consumo.
WatchDog también llamado “Perro Guardián” se trata de un contador que vigila
el programa, su fundamento es un contado que se va decrementando, si llega a 0 y se
encuentra dentro del mismo bucle donde ha empezado provoca un “reset” del C, así se
evita que el C se “cuelgue” en un bucle sin fin. El programador tiene que ir
refrescándolo en los bucles grandes.
BrownOut fallo ante la falta de alimentación, cuando la alimentación baja de la
tensión “BrownOut” el C se mantiene reseteado.
Sleep es frecuente que el C se encuentre “sin hacer nada” esperando que alguna
entrada se accione, entonces se pone en bajo consumo junto con sus periféricos
asociados hasta que la entradas lo “despierten”.
A/D D/A a veces integran convertidores preparados para leer una señal
analógica que el lo procesará en digital (A/D) y al revés, una salida analógica para algún
actuador (D/A).

Existen muchas otras características que os podéis encontrar en los C pero se


escapan de esta breve introducción.

107
1.1 Tipos de PIC

Los PIC son C fabricados por Microchip (www.microchip.com) se clasifican por su


anchura de palabra, los hay de 4, 8, 16, 32 bits, los más comunes por su versatilidad en
multitud de aplicaciones son los de 8 bits.
Dentro de la familia de PIC de 8 bits podemos encontrar 4 familias:
 Familia Enana PIC12C(F)XXX de tan sólo 8 pines, sólo 33 instrucciones y una
alimentación entre 2.5V y 5V consumen muy poco (2mA) y tienen 6 lineas E/S ¡!!

 Familia Baja PIC 16C5X con 18 y 28 pines, más prestaciones que la enana.

 Familia Media PIC16C(F)XXX esta es la familia más variada de PICs dentro de


esta familia se encuentra el 16X84 que será objeto de estudio. Los encapsulados van
desde 18 hasta 68 pines, el repertorio de instrucciones es de 34 de 14 bits cada una

 Familia Alta PIC17CXXX con 58 instrucciones de 16 bits cada una, 8k palabras de


memoria para el programa y 454 para datos, lo más destacable de estos pics son su
estructura abierta, por lo que se parecen más a los P.

1.2 Características del PIC 16X84


Los microcontroladores están diseñados con arquitectura tipo Harvard que separa
físicamente la memoria de datos y la del programa:

Las características de los PIC16X84 son las siguientes


Memoria Datos Registros
Modelo Memoria Programa E/S Vcc Pines
RAM EEPROM específicos
PIC16C84 1KX14 EEPROM 36 64 11 13 2-6 18
PIC16F84 1KX14 FLASH 68 64 11 13 2-6 18

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.1F

Como se puede ver dispone de 2 puertos de E/S :


Puerto A = 5 pines = A0A1A2A3A4
Puerto B = 8 pines = B0B1B2B3B4B5B6B7

1.3 Herramientas para la compilación


Los PIC se suelen programar en lenguaje ensamblador, existen numerosos textos
sobre el tema, por ejemplo “Microcontroladores PIC Jose Mª Angulo Mc Grawn Hill.
Una vez escrito se ensambla para convertirlo en lenguaje máquina con el programa
ensamblador MPASM de Microchip.

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

Vamos a ver un ejemplo de un programa escrito en lenguaje ensamblador. El objetivo es


realizar un intermitente por B0

109
1.4 ¿Cómo se hace con lenguaje ensamblador?

Primero realizamos el programa en un editor de list p=16f84A


textos, puede ser el EDIT de MSDOS o el Bloc de #include p16f84a.inc
Notas de Windows. Lo grabamos por ejemplo en Tiempo EQU 22h
Mis Documentos en una carpeta nueva llamada Pic Vueltas EQU 23h
org 0
y lo grabamos como Prueba.asm.
CONFIGURAR
BSF STATUS,RP0
Luego compilamos el programa con el MPASM tal BCF TRISB,0
y como enseña la figura : BCF STATUS,RP0
COMIENZO
BSF PORTB,0
CALL RETARDO
BCF PORTB,0
CALL RETARDO
CALL RETARDO
GOTO COMIENZO

RETARDO MOVLW b'11001000'


MOVWF Vueltas
MAS DECFSZ Tiempo
GOTO MAS
MOVLW b'11111111'
MOVWF Tiempo
DECFSZ Vueltas
GOTO MAS
Hay que tener cuidado de indicar correctamente el RETURN
procesador a utilizar. Generará un fichero en END
formato hexadecimal llamado Prueba.hex
preparado para grabarlo en el PIC. Puedes leer el
fichero en un editor de textos, quedará de la siguiente forma :
:020000040000FA
:100000008316061083120614092006100920092001
:100010000328C830A300A20B0B28FF30A200A30BBB
:040020000B280800A1
:00000001FF

1.5 ¿Cómo se hace con Basic?


Bucle: High 0
En PicBasic se teclearía el siguiente programa: Pause 500
Al compilarlo el resultado seria parecido al Prueba.hex Low 0
Pause 500
GoTo bucle
1.6 ¿Cómo se hace en C? End

En PICCLITE se teclea el siguiente programa


#include <pic.h>
main(){
int i;
TRISB=0b00000000;
for(;;){
PORTB=0b00000000;
for(i=1;i<10;i++) continue;
PORTB=0b00000001;
Una vez tecleado se pulsa Compile->Compile
for(i=1;i<10;i++) and Link o F3 (más rápido) te pedirá que
continue;
elijas el C a utilizar:
}
}

110
+- Select Midrange processor... ---------------------------------+
¦ |
¦ ( ) 16C84 |
¦ ( ) 16F84 |
¦ (*) 16F84A ¦
| ¦
¦ [ OK - Enter ] < Cancel - Esc > < Help - F1 > |
+----------------------------------------------------------------+

Las demás opciones pulsar OK son :0C000000830100308A0004288301B52B26


correctas las que señala por defecto. :10076A0083168601831286018C018C0A8D010D087D
:10077A00803A8E0080300E020A3003190C02031CE4
:10078A00C72BC82BC92BDA2BCA2B8C0A03198D0A43
Si abres el fichero Prueba.hex generado :10079A000D08803A83128E0080300E020A30031947
:1007AA000C02031CD92BDA2BC92B013083128600C9
tendrá la siguiente pinta: :1007BA008C018C0A8D010D08803A8E0080300E0261
:1007CA000A3003190C02031CEB2BEC2BED2BFE2B2E
:1007DA00EE2B8C0A03198D0A0D08803A83128E00BB
¿No tendría que ser igual al hecho en :1007EA0080300E020A3003190C02031CFD2BFE2B6B
:0607FA00ED2BB72B0428D3
ensamblador? ¿Por qué? :00000001FF

1.7 Simulación SIMUPIC

Lo correcto sería pasar a la simulación del fichero antes de pasarlo al PIC real.
Entramos en el programa SIMUPIC

Entramos en 1. Asignar nombre => Pulsamos Intro y buscamos nuestro Prueba.hex


Luego en 4. Cargar fichero Hex
Y por fin en 6. Ejecutar
Veremos como el pin B0 va haciendo un intermitente.
Podemos alterar las entradas de A0..A4 pulsando F1..F5
(si las B0..B7 fueran entradas es con <Shift>F1..F8)
Si queremos simular otro programa, o otra versión del mismo, tenemos que salir
obligatoriamente para borrar el anterior programa cargado.

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

ATENCION: IC-PROG EN WIN-XP :Se debe de tener en la misma carpeta que el


ejecutable IcProg.exe el archivo icprog.sys. Este fichero se puede descargar de www.ic-
prog.com . Además hay que habilitar el Driver NT/2000/XP en Ajustes->Opciones-
>Miscelanea.

112
1.9 Placa TE20
Aquí tienes un esquema del programador TE20, lo puedes construir tú mismo, o
comprarlo (18)

Como podemos ver en la serigrafía, el


TE20 también sirve para programar la
EEPROM 24CXX y (zócalo pequeño) y el
PIC 16F876 además del 16F84.
Nota, el puente p es mejor sustituirlo por
una R=1k

2 BREVE REPASO AL LENGUAJE C


Generalidades
En nuestros programas tenemos que incluir la siguiente librería #include <pic.h> que
da definición a los puertos y registros de estado.
Después de main(){ podemos declarar las variables que nos interesen en el programa, se
puede utilizar int (para nº desde -32600 a 32600), unsigned int (para nº desde 0 a
32600) variables tipo char para variables de 8 bits muy útiles para los puertos.
Sentencias condicionales
Con la sentencia if(condición){....}
podemos ejecutar algunas instrucciones si la condición ha sido verdadera.
Si queremos que según la condición ejecute unas instrucciones, y si es falsa la condición
que ejecute otras, tenemos que utilizar:
if(condición){..instrucciones si es verdad..}
else{ ..... instrucciones si es falsa la condición.... }
Son útiles las operaciones and && y or || ·
Una condición es verdadera si tiene un valor distinto de cero.
Operadores relacionales son : igual == distinto ¡= . por ejem if (x==1){...}
y las comparativas < > <= >= por ejemplo if (x<=10) {...}

113
Operadores
Una variable se puede incrementar con el operador ++ y decrementar con -- ·
por ejemplo x++ ; y--; equivale a hacer =x+1; y=y-1;
Operadores binarios que nos pueden ser de utilidad son:
And & Or | Not ~ (Alt+126) no hay que confundirlas con las anteriores.
Operadores de desplazamiento que nos son de utilidad son << y >> .
Por ejemplo : char x,y,z,u,v,t;
x=0b00100010; y=0b01010011; z=x&y; u=x|y; v=~x; t=y>>2; x=x<<1;
¿Qué valores tienen z, u , v, t, x?

Sentencias de bucles
Si quiero sentencias repetitivas, utilizo la sentencia for(inicio;final;incremento)
Por ejemplo, si quiero hacer una cosa 10 veces : for(i=1;i<=10;i++){.......} o de forma
decremental for(i=100;i>=1;i--){....}
si se quiere que se repita siempre, es útil hacer for(;;){......}
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;?

¿Y el puerto B con TRISB=0b01100000;?


Escribir en los puertos
Para cargar el número que queramos al puerto se hace de forma muy sencilla:
TRISA=0b00011; PORTA=0b01010; ¿Qué leds se encenderían?
TRISB=0b01001101; PORTB=0b11111110; ¿Qué leds se encenderían?

También podemos cargarlo a través de una variable :


Ejem: char x; TRISB=0x00; x=0x01; PORTB=x; x++; PORTB=x;
¿Qué leds se encienden en el primero? ¿Y después?
Leer puertos
Para leer un puerto, se lee a través de una variable, ejemplo:
char x,y; TRISA=0b11111; x=PORTA; TRISB=0xff; y=PORTB;

No esta permitido hacer TRISA=0x00; TRISB=0xff; PORTA=PORTB;


pero sí esta permitido hacer TRISA=0x00; TRISB=0xff; x=PORTB; PORTA=x;

Si queremos que se realice alguna instrucción si el interruptor A3 esta en ‘on’ se realiza


con la sentencia if y el adecuado operador binario:
x=PORTA;
if ( (x&01000)!=0) {..instrucciones ....}

114
3 EJERCICIOS

3.1 Enunciados
1.- Realizar un intermitente por todo el puerto A.

2.- Realizar un programa que el Puerto B sea la lectura del 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.

5.- Realizar un programa de manera que si se acciona A1 entonces se encienden todas


los leds del puerto B

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

8.- Realizar un programa de manera que si no se acciona A2 el puerto B hace un


secuenciamiento de luces hacia la derecha, si se acciona A2 se para.

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

10.- Realizar un programa que visualice por el display conectado en el puerto B de


forma hexadecimal el número que se proporciona en el puerto A. El display será de
ánodo común. (puedes hacerlo de cátodo común) Es decir, se trata de convertir el PIC
en un decodificador a display 7447

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

12.- Realizar un programa de “dado electrónico”, en el puerto B será la salida de un


número del 1 al 6 de forma rápida, estará conectado a un display (podría hacerse de
forma directa, como en el problema 10, pero por simplicidad, lo haremos a través de un
7447, es decir, sólo utilizaremos el puerto B las salidas B3B2B1B0 codificadas en
binario.
Cuando en A1 sea =1 el dado se parará dando un número al azar entre 1 y 6. Cuando
A1=0 volverá a empezar.

13.-Realizar un pitido por el pin B0

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

for (i=0;i<10;i++) continue; for (j=0;j<=10;j++) continue;


PORTB=0b00000010; PORTB=0b00000000;
for (i=0;i<10;i++) continue; for (j=0;j<=10;j++) continue;
} }
} }
/****************************** /******************
Ejer 8 Ejer 10 visualizar el PORTA en el display
que haga juego de luces PORTB=a b c d e f g pt
si A2=0 *****************/
si A2=1 que pare #include <pic.h>
******************************/ main(){
#include <pic.h> char x;
main(){ TRISA=0b11111;
int i; TRISB=0b00000000;
char x,y; for(;;){
TRISA=0b11111; x=PORTA;
TRISB=0b00000000; if (x==0) PORTB=0b11111100;
y=0b10000000; if (x==1) PORTB=0b01100000;
mueve: for(;;){ if (x==2) PORTB=0b11011010;
x=PORTA; if (x==3) PORTB=0b11110010;
if ((x&0b00100)!=0) goto if (x==4) PORTB=0b01100110;
para; if (x==5) PORTB=0b10110110;
y=y>>1; if (x==6) PORTB=0b10111110;
if (y==0) y=0b10000000; if (x==7) PORTB=0b11100000;
PORTB=y; if (x==8) PORTB=0b11111110;
for(i=0;i<10;i++) continue; if (x==9) PORTB=0b11100110;
} if (x==10) PORTB=0b11101110;
para: for(;;){ if (x==11) PORTB=0b00111110;
x=PORTA; if (x==12) PORTB=0b10011100;
if ((x&0b00100)==0) goto if (x==13) PORTB=0b01111010;
mueve; if (x==14) PORTB=0b10011110;
PORTB=y; if (x==15) PORTB=0b10001110;
} }
} }
/************************************* /********************************
***** Ejer9 Alarma de coche el led B0 indica Ejer 11
que esta en funcionamiento si A0 o A1 entonces Pillar la luz
se dispara la alarma la alarma es un intermitente ********************************/
en todos los B la alarma se apaga con A2 #include<pic.h>
*************************************/ main(){
#include <pic.h> char x,y;
main(){ int i;
char i; x=0b00000001;
int j; TRISA=0b;11111
TRISB=0b00000000; TRISB=0b00000000;
TRISA=0b11111; for(;;){
PORTA=0b00000; PORTB=x;
inicio: for(;;){ x=x<<1;
i=PORTA; if (x==0) x=0b00000001;
if ( (i&0b00010) | (i&00001) y=PORTA;
) goto alarma; if (y==x) goto fin;
PORTB=0b00000001; for(i=0;i<10;i++) continue;
for (j=0;j<=10;j++) continue; }
PORTB=0b00000000; fin: for(;;){
for (j=0;j<=10;j++) continue; PORTB=0b11111111;
} }
alarma: for(;;){ }
i=PORTA; /****************************
if (i&0b00100) goto inicio; Ejer12
PORTB=0b11111111; B0_B3 sea un dado electronico hasta

Página 117
Problemas electrónica Digital Profesor Javier Quintana

para cuando A1=1 *****************************/


hay que quitar el Watch Dog #include <pic.h>
*****************************/ main(){
#include <pic.h> unsigned char i;
main(){ TRISB=0b00000000;
unsigned char i,j; for(;;){
TRISA=0b11111; PORTB=0b00000001;
TRISB=0b00000000; for (i=1;i<=10;i++) continue;
PORTA=0b00000; PORTB=0b00000001;
inicio: for(;;){ }
for (j=1;j<=6;j++){ }
PORTB=j;
i=PORTA;
if ((i&0b00010)!=0) goto para;
}
}
para: for(;;){
i=PORTA; Si no se
if ((i&0b00010)==0) goto inicio; quiere utilizar transistores, hay que conectar un
} altavoz de poca potencia, pues el PIC no tiene
} mucha corriente de salida, por ejemplo, el
/**************************** altavoz pequeño de un ordenador:
Ejer13
B1 un pitido

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.

En la figura se muestra la pantalla del programa


“FunCard” donde hay que suministrarle los
ficheros “.hex” que se deben de bajar de Internet
en cada ataque, sobre para la memoria Flash
interna del 16F84A y la Eeprom externa 24XX.

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

Fab Tipo Nombre DB AB año MHz Observaciones


Rock PPS-4
4bits 4 8 1971 -1 En calculadoras programables 28K transistores
Intl 4004
Mot 6500 Actualmente en Automatas
8bits no
Zlg Z80 8 16 1972 1 a 4 Antiguos Amstrad, Atary hoy en día en Gameboy
PC
8085 Actualmente en Automatas
8086 8 1978 4.77
Primeros PC XT compatibles IBM hasta 1M RAM
PC 20 a
8088 16 1979 coprocesador:8087
8
286 286 16 24 1982 8-12 PC AT hasta 16M deRAM coprocesador 287
386SX 16 1988 16/20 “ Coprocesador 387 275K transistores
Intel

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

Pent MMX 1997 a L1=32K x 2.5 x3 x3.5 L2 externa


Intel

64 233 Socket 7 4 con volt=2.8V y 3.3Vcore


233 =PentMMX + PentPRO Slot1 Volt=3.3V
36
PentiumII 1997 a Fext=66MHz / 100MHz
450 L1=32K L2=256K / 512K
Celeron 1997 “ = PentMMX en Slot1=PII sin L2
400
L2=1M
Xeon 1997 a
Volt=2.5V Vcore=2V Fext=100MHz x4 / x4.5
450
Pentium III 1999 500 Fext=100MHz en slot1 y en socket7

PC Actuales :

Fab Tipo Nombre DB AB año GHz Observaciones


Pent IV 2002 1-2 RDRAM Tecnologia 0.18 Instrucciones SSE2>MMX
Intel Pentium L2=1M Vcore<1.5V Menor consumo, peso,espacio
Pent M 2004 1.3-1.6
64 36 Portatil Centrino=PentM+Chipset855+Wireless2100
Fext=400MHz Vcore=1.5V Socket940
AMD Athlon 64FX 2004 2.2
L1=940K L2=M

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 :
Fa
b Tipo Nombre DB AB año MHz Observaciones
yri
Pent C686 64 36 80 a 150 <<Pentium Fext=40 a 75MHz!!!
C

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
AMD

DX5-133 1996 133 <486DX4-100


AMDK5 1995 75 a 166 =Pentium
AMDK6 1996 166 a 300 >Pentium MMX con Socket 7
Pentium

K63DNOW 1997 266 a 400 <=Pentium II tiene L1=64K


64 36
K6-III 1998 450 a 600 <PentiumIII
K7 1999 400 a 800 >PentiumIII Fext=200MHz L1=128K L2=1M
Athlon 4 2001 1.1GHz =>Pentium IV

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

2.- HARDWARE DEL 8085


Dentro del 8085 tenemos los siguientes registros:

A (8) Acumulador ALU U.C. Unidad


Unidad Aritmetico Control
S Z AC P CY ... Flag (8) Lógica

B (8) C (8) RI (8) reg. de instruciones


D (8) E (8) SP (16) stack pointer puntero de pila
H (8) L (8) PC (16) contador del programa
registros auxiliares

Todos estan conectados entre si, y el 8085 tiene exteriormente 3 buses como
todos los microprocesadores (pero con tamaños diferentes):

Nombre bits comentarios


D.B. Bus de datos 8 conectado al R.I. desde este registro la U.C. lee las
(data bus) instrucciones y las procesa.
A.B. Bus de direcciones 16 conectado al PC indica la dirección de memoria del
(Adrress Bus) programa que se esta leyendo.
C.B. Bus de Control 10 Conectado a la U.C. para controlar el sistema

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.

El bus de control además del ALE, tiene los siguientes pines:


 Lectura Escritura: RD# y WR#6
 Acceso a memoria o a periféricos: IO/M#.
 pin indicador de estar preparado para atender al dispositivo exterior : READY.
 pin indicador que el dispositivo externo esta ocupando los buses : HOLD.
 pin indicador que el 8085 no hace caso a los buses HLDA.
 pin indicador que el 8085 se ha reseteado RESETOUT y el pin de RESET
 y pines indicadores de estado S0 S1 (S0S1 =01 Escribe dato, =10 Lee dato, =11
Busca dirección).

6 El símbolo # indica que es activo a nivel bajo.

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

3.- INSTRUCCIONES DEL 80857


Nomenclatura:
r = un registro de 1 byte , puede ser cualquiera de estos : A, B,C,D,E,H,L.
(rs =registro origen de datos, source, rd = registro destino de los datos)
[1000] = el dato almacenado en la dirección 1000H
[HL] = el dato almacenado en la dirección contenida en el registro HL
M= “””
dato = un número de 1 byte, por ejemplo 4AH, suelen ser los datos.
addr = un número de 2 bytes, por ejemplo 10B2H, suelen ser las direcciones
H=hexadecimal, B=Binario, D = Decimal
3.1.- Instrucciones de transferencia de datos

MOV rd,rs LDA addr

MOV rd,M

MOV M,rs STA addr

MVI rd,dato

LXH H,addr

ejemplo de 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

3.2.- Instrucciones aritméticas

ADD rs SUB rs

ADD M SUB M

ADI dato SUI dato

INR rs DCR rs

INR M DCR M

INX B DCX B

INX D DCX D

INX H DCX H

STC
DAA
CMC
3.3.- Instrucciones lógicas

ANA rs CMP rs

ANA M CMP M

ANI dato CPI dato

alteran solo el flag : Z, S, CY, AC ...


ORA rs

ORA M

ORI dato

CMA

Página 124
Problemas electrónica Digital Profesor Javier Quintana

3.4 Instrucciones de desplazamiento

RLC

RRC

RAL

RAR

3.5 Instrucciones de salto

JMP addr condición puede ser alguna de las siguientes:

Jcondicion addr Z
NZ
P
M
C
NC
PO
PE
3.6 Instrucciones para las subrutinas

CALL addr RET

3.7.-Instrucciones de control

HLT IN puerto

NOP OUT puerto

Página 125
Problemas electrónica Digital Profesor Javier Quintana

4.- MANEJO DEL SIMULADOR 8085 SIM8085

Vamos a realizar un pequeño ejemplo de funcionamiento. Vamos a mover el contenido


de la dirección 2000H al acumulador, y almacenarlo en la 2001H, y el contenido de la
dirección 2002H moverlo al registro B, y almacenarlo en la 2003H.

a) Escribir el siguiente programa en un editor, por ejemplo el EDIT de MS-DOS,


guardarlo como PRUEBA.ASM el archivo fuente debe de tener la extensión *.ASM
(vamos al direcctorio 8085, desde el raiz : CD C:\8085 y EDIT PRUEBA.ASM )
;programa de muestra
;*** mover datos **** todo lo que se escribe después de ; no se
;colocación de los nº ensambla, así que se puede utilizar como
;programa1 comentarios.
ORG 1000H ORG = organizar las siguientes líneas a
LDA 2000H
STA 2001H
partir de la dirección en este caso 1000H
LXI H, 2002H el programa se ha escrito a partir de la
MOV B,M dirección 1000H, carga el acumulador
INX H (loadA) y lo almacena (storeA), para el
MOV M,B registro B hay que utilizar el registro M,
END

antes de utilizar el registro M hay que cargar HL la dirección que queremos,

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.

b) después de guardarlo ensamblarlo con la instrucción: ASM8085 PRUEBA.CCC


esto crea 3 ficheros, si salen errores hay que corregirlo en el prueba.asm:
PRUEBA.ERR = listado de errores de 1ª pasada.
(A=argumento erróneo, D=etiqueta no existe, L=etiqueta erronea, U=símbolo
indefenido, S= error sintaxis)
PRUEBA.LST = listado del programa, aquí salen los errores de 2ª pasada.
PRUEBA.OBJ = listado en lenguaje máquina.
c) simularlo con el programa SIM8085 , una vez dentro pulsar F4 y cargar el
PRUEBA.OBJ, utilizar los siguientes comandos:
R=modificar los registros, en este caso pondremos el contador del programa PC en la
dirección de comienzo de nuestro programa: 1000H
V=ver memoria, en este caso nos interesa ver lo que hay en la 2000H y siguientes.
M=modificar memoria, para poner número en la memoria.
T=trazar o ejecutar paso a paso, ir pulsando y observar lo que ocurre en cada
instrucción.
Q=salir F1 visualiza una ayuda C=ver el código
E=ejecutar entre dos direcciones, ESC para salir, I para interrupción 7.5

Página 126
Problemas electrónica Digital Profesor Javier Quintana

4.1 EJERCICIOS CON EL SIMULADOR 8085

9.3.1.1.-Ejercicios de transferencia de datos


1- Utilizando el direccionamiento directo (LDA,STA,MVI) realizar un programa que grabe el
dato 3F en la dirección 1500H (No es necesario utilizar las tres)

2- Igual que el ejercicio anterior, pero utilizando el direccionamiento indirecto


(MOV M)

3- Utilizando el direccionamiento directo (LDA, STA) realizar un programa que grabe el dato
de la dirección 1500H en la dirección 1501H

4- Utilizando el direccionamiento indirecto (MOV M) 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)

7- Un programa que multiplique por 4 el dato contenido en la dirección 1500 y lo almacene en


la 1501. Para multiplicar números por dos, se utiliza la instrucción RAL que desplaza los
bits a la izquierda y así queda multiplicado por 2.
Por ejem.- 6=00000110 =>RAL=> 00001100=12 =>RAL=> 00011000=18H=24D
9.3.1.3 Ejercicios de bucles
8.-Un programa que doble el nº almacenado en 1500 tantas veces como lo diga el dato de 1501
y el resultado que se almacene en 1502. Es decir, si [1500]=6 y [1501]=4 entonces
[1502]=6*2*2*2*2=96D=60H

9.- Realizar un programa rellene los datos desde la [1000] hasta la [10FF] con el dato de la
[1500]

10.- Realizar un programa que borre tantos datos como lo diga la 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

;[1505]<=[1502] Direccionamiento indirecto


LXI H,1502H
MOV C,M
LXI H,1505H
MOV M,C

;Borrar datos memoria


LXI HL,1500H
MVI M,0H ;Borro [1500]
INX H
MVI M,0H ;Borro [1501]
INX H
MVI M,0H ;Borro [1502]
END

;También se podría hacer MVI A,0H STA 1500H


STA 1501H STA 1502H

Página 128
Problemas electrónica Digital Profesor Javier Quintana

;*********************************** OUT 00H ;Sacar por el puerto


;**** EJERCICIO 9 **** CALL PAUSA ;Hacer pausa
;************************************ JMP BUCLE
; ORGANIGRAMA
; C <=FF ;Surutina Pausa
; B <=[1500] ;Esta pausa entretiene al 8085 contando FF
; HL <=1000 ;hasta 0
; [HL]<=B
; HL<=HL + 1 ORG 2500H
; C <= C - 1 PAUSA: MVI B,0FFH
; ¿NO ES 0? S OTRO: DCR B ;Es una pausa muy corta
; N JNZ OTRO
; FIN RET ;Volver al programa principal
;************************************ END

ORG 2000H
LXI SP, 3000H
MVI C,0FFH
LDA 1500H ;A=[1500]
LXI H,1000H

BUCLE: MOV M,A


;Rellena el dato [HL] con el contenido de A
INX H ;HL apunta al siguiente
DCR C
JNZ BUCLE ;***********************************
END ;**** EJERCICIO 12 ****
;Cuando ha acabado los FF es ;decir desde ;************************************
1000 hasta 10FF acaba secuenciamiento del leds
;**************************************** ORG 2000H
;*** EJERCICIO 10 **** MVI A,00000001B
;************************************ ;Encender el bit de menor peso
BUCLE: OUT 00H ;Sacar por el puerto 00
; a hacerlo CALL PAUSA ;Hacer una pausa
RLC ;Corre el bit <=
;*********************************** JMP BUCLE
;**** EJERCICIO 11 ****
;************************************
;hacer un intermitente ;Surutina Pausa
ORG 2000H ;Esta pausa entretiene al 8085 contando FF hasta 0
ORG 2500H
BUCLE: MVI A,00000001B PAUSA: MVI B,0FFH
;Encender el bit de menor peso OTRO: DCR B ;Es una pausa muy corta
OUT 00H ;Sacar por el puerto 00 JNZ OTRO
CALL PAUSA RET ;Volver al programa principal
;Hacer una pausa o si no no se aprecia END
MVI A,0 ;Apagar el bit

Página 129
Problemas electrónica Digital Profesor Javier Quintana

5.- MANEJO ENTRENADOR 8085

5.1 Prácticas para el manejo del entrenador


Enunciado:

Se realizará un programa que efectúe la suma de los 10 primeros números


hexadecimales, es decir 1+2+3+4+5+6+7+8+9+A, el resultado da 37H.

Solución:

Programa:

ORG 0000H

ACUMDISPLAY EQU 04D5H

Direcc.Cod. Maq. Ensambl.


1000 31 FF 1F LXI SP,1FFFH
1003 3E 00 MVI A,00H
1005 06 0A MVI B,0AH
1007 80 SUMAR: ADD B
1008 05 DCR B
1009 C2 07 10 JNZ SUMAR
100C CD D5 04 CALL ACUMDISPLAY
100F 76 END

¿Cómo es posible que el programa se


pide que se organize en la 0000H y al
final se organiza en la 1000H? Por que
automáticamente se incrementa en 1000
pues la memoria RAM está en la 1000H
(en la 0000H hay ROM).

Para visualizar el acumulador por la


consola, hay que ejecutar la subrutina
ACUMDISPLAY, la subrutina esta en la
dirección 04D5H, por eso la segunda
línea del programa dice que
ACUMDISPLAY equivale a 04D5H.

Página 130
Problemas electrónica Digital Profesor Javier Quintana

5.2.- ¿Cómo grabar y ejecutar el programa en el entrenador?

5.2.1.-Desde el ordenador (aconsejable) (Conmutador Teclado/CRT en posición CRT)

1.-Hacer el fichero texto con el EDIT que se llame por ejemplo PRUEBA.ASM

2.- Se podría ensamblar con ASM8085, pero no lo metería en el entrenador, el


ASM8085 sólo sirve para el SIM8085, para ensamblarlo y grabarlo en el entrenador
ejecutar el fichero batch HACERHEX PRUEBA (todo en el directorio C:\8085).

3.- Ver si hay 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.

4.- Cargar el programa con el comando L , a la pregunta OFFSET contestar INTRO


(offset significa si quieres incrementar aún más el ORG)

5.-Ejecutar con G1000 recordar que a pesar que hemos puesto ORG 0000H el
programa HacerHex lo incrementa automáticamente en mil unidades.

6.- Para finalizar la comunicación pulsar INIC en el entrenador y H en el PC

Para ver más comandos desde el PC puedes ver el APENDICE B, por ejemplo se puede
ver el programa ejecutando D1000,1010

5.2.2.- Desde el entrenador (Conmutador Teclado/CRT en posición Teclado)

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

5.3 Hardware y Mapa de memoria en el entrenador

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

5.4.- Subrutinas prediseñadas de fábrica


Para la elaboración de vuestros programas podéis utilizar las siguientes subrutinas ya
programadas en la ROM

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:

STA ALMACEN ; lo almaceno, al principio del programa ALMACEN EQU 1500H


CALL ACUMDISPLAY ; llamo a la subrutina
LDA ALMACEN ;recupero el acumulador, pues ACUMDISPLAY lo ha borrado

8 El nombre puede ser arbritario


9 Estos son los códigos de los carácteres que se pueden sacar con la subrutina MENSDISPLAY
0 al 9 A a la F H L P I r blanco Y a U h
00..09 0A..0F 10 11 12 13 14 15 8E A3 A4 BB
Existe otra forma de sacar mensajes por el display es utilizando los puertos del 8279, ver pag 138
Prácticas nivel II los códigos van relacionados con los segmentos del display :
d c b a . g f e
así H=01101111

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.

En nuestro 8085 no es un PC, hay menos interrupciones y hay de dos tipos:


Interrupciones tipo software: RST0, RST1, RST2 .... RST7
Interrupciones tipo hardware: RST5.5, RST 6.5, RST7.5, INTR, TRAP

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

5.6.- Entrada y salida

9.4.6.1.-Periféricos del entrenador 8085


 Una ranura de expansión J1 de 50 hilos.
 Una salida MIC EAR para comunicarse con un cassette como periférico de memoria
masiva externa, puedes ver en el APENDICE E cómo se pueden grabar y leer
archivos con un cassette
 Un puerto serie por el conector J8 (GND,RX,TX) y con el chip 8251* el entrenador
se comunica con el PC (Ver apéndice A)
 Dos puertos PARALELOS :
tipo jumper puerto Anchura chip ref
PARALELO J5 PA 8 bits 81555 * U14
Input/Ouput J6 PB 8 bits
J7 PC 6 bits
PARALELO J2 PA 8 bits 8255 * U15
Input/Output J3 PB 8 bits
J4 (4-7) PCH 4bits
J4 (0-3) PCL 4 bits

El c.i. 8155 es realmente una RAM 256x8 utilizada en rangos de


memoria reservada para el sistema a partir de la dirección 2000, (ver
mapa de memoria apartado 3.3) + 3 puertos I/O PA 8bits PB 8bits
PC 6bits + un registro de control + un contador.

El 8255 es un Periférico Interface Programable PIA y consta de 4


puertos I/O PA 8bits PB 8bits PCH 4bits PCL 4bits y un
registro de control.

9.4.6.2.-¿Cómo programar los puertos?

PRIMERO:CONSULTAR EL CARACTER DE CONTROL AL ACUMULADOR


Hay que cargar en el registro de control unos carácteres para definir qué puertos deseas que sean Input y
qué puertos deseas Output.

Carácteres de control del 8155 (I=Input O=Ouput)


PA I O I O I O I O
PB I I O O I I O O
PC I I I I O O O O
control 00H 01H 02H 03H 0CH 0DH 0EH 0FH

Carácteres de control del 8255


PA O O O O O I O I O I O I I I I I
PB O I O I O O O O I I I I O I O I
PCH O O O O I O I O I O I O I I I I
PCL O O I I O O I I O O I I O O I I
control 80 82 81 83 88 90 89 91 8A 92 8B 93 98 9A 99 9B
A estos caráctes de control les falta una H al final.

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

SEGUNDO : OUT 20H o OUT 3BH

según si es el 8155 o el 8255 que quieres manejar

8155 8255
REGISTRO DE CONTROL 20H 3BH

en nuestro ejemplo anterior OUT 20H

TERCERO: ESCRIBIR O LEER EL PUERTO

Según el puerto tiene una dirección predeterminada

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

Ejemplo con el 8255

MVI A,82H
OUT 3BH ;8255 PAout PBin PCout
;si queremos escribir en los puertos
MVI A,01H ; Que se encienda la luz 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

5.7 EJERCICIOS CON EL P 8085

9.4.7.1 EJERCICIOS DE RUTINAS DE CONSOLA

1.-Este ejercicio trata de captar una letra al acumulador y visualizarla en el display

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

7.- Realizar un programa que visualiza por el “datos” un contador de 00 a 09

9.3.7.2 EJERCICIOS DE PUERTOS

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

Tiene el siguiente esquema de cruces:

Las esquinas se llaman S1, S2,


S3 y S4 con sus correspondientes
semáforos Gx, Fx y Px

¿Cómo se envian los valores a


los semáforos?, cada puerto
controla una esquina, y como en
un golpe de reloj no se pueden
enviar a todos, se hacen en 4
golpes

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

7.- PROGRAMACIÓN AVANZADA 8085


Existen más instrucciones del P8085 que se han omitido por sencillez, este tema no se
dará en clase ni se exigirá en los exámenes, sólo está para tu propio aprendizaje si te ha
gustado el tema:

Instrucciones de mover datos


LDAX B A<=[BC] STAX B [BC]<=A
LDAX D A<=[DE] STAX D [DE]<=A
LHLD addr H<=[addr] L<=[addr+1] SHLD addr [addr]<=H [addr+1]<=L
XCHG intercambia DE con HL
LXY B,addr BC<=addr LXI D,addr DE<=addr
Instrucciones aritméticas que suman y restan con acarreo
ADC r ADC M ACI dato SBB r SBB M SBI dato
Instrucciones aritméticas que suman con registros dobles
DAD B HL=HL+BC DAD D HL=HL+DE
Instrucciones lógicas tipo XOR
XRA r XRA M XRA dato
Instrucciones de salto
PCHL PC=HL RSTn PC=8*n
Instrucciones para las subrutinas pero de forma condicional
Ccondicion Rcondicion
Instrucciones de Pila
PUSH B apila BC PUSH D apila DE
POP B desapila BC POP D desapila DE
XTHL intercambia SP con HL SPHL SP<=HL

Instrucciones para el programa ensamblador


Estas son instrucciones no propias de ensamblador, pero sirven para realizar los
programas más complejos, utilizando letras y no números.
Ejem
N EQU 20 N equivale a 20
ORG 1000H
X: DB 08H aquí X equivale a 1000 y se mete un dato de byte el 08H
Y: DS 1 aquí Y equivale a 1001 y ha reservado espacio de 1byte

Ejercicios avanzados

1.- Confeccionar un programa que sume 3 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

5.-Realizar un programa que sume dos números de dos bytes:


El primer sumando estará almacenado en las direcciones [1001] [1000]
El segundo sumando estará almacenado en las direcciones + [1003] [1002]
El resultado y acarreo se almacenará en las direcciones [1006] [1005] [1004]
Comprobar el resultado

6.- Igual que el ejercicio anterior pero utilizando registros dobles

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.

10.-Realizar un programa que sume los N primeros números y el resultado almacenarlo en la


dirección 1001, el número N estará almacenado en la dirección 1000, es decir, si [1000]=6
entonces [1001]=1+2+3+4+5+6=21D=15H

11.- Este ejercicio trata de realizar un programa con varias decisiones. Supongamos dos
variables X almacenado en la 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

12.-En el ejercicio 13 realizamos una suma de dos números hexadecimales, y el resultado se


convirtió en BCD, pero ¿Y si los números sumandos ya están escritos en BCD? Habría que
convertirlos a HEX y aplicar el programa del problema 13.
El objetivo de este ejercicio se trata de convertir un número BCD en HEX. El número está
almacenado en tres posiciones de memoria, [1000][1001][1002] = Centenas, Decenas y
Unidades, el número resultante se almacenará en un sólo byte, luego no tiene que pasar de
255D. Almacenar el resultado en 1003.

Página 142
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh

;Guarda el acarreo primero + segundo


Soluciones. LDA RES ;Recupero el resultado
INX H
;***********************************
;HL apunta al tercer sumando
;**** EJERCICIO 1 ****
ADD M ;A=A+[1002]
;************************************
STA RES ;Almacena el resultado
ORG 2000H
LDA RES ;Recupero el acarreo
MVI A,25H
ACI 0
MVI B, A4H
;A=A+0+CYel acarreo anterior con el nuevo
ADD B
STA ACAR ;Guarda el acarreo
MVI B,05H
END
ADD B
STA 1500H
END
;***********************************
***********************************
;**** EJERCICIO 5 ****
;**** EJERCICIO 2 ****
;************************************
;************************************
; [1001] [1000]
;Datos
; + [1003] [1002]
ORG 1000H
; [1006] [1005] [1004]
X DB 12H
;Datos
Y DB 0A6H
ORG 1000H
RES DB 45H ;Resultado : 68H
XH DB 0D5H
;Programa
XL DB 0B6H;Primer sumando D5B6H
ORG 2000H
YH DB 3AH
LDA X
YH DB 5CH ;Segundo sumando 3A5CH
; A<=[1000]
SUMH DB 00H
;Equivale a LDA 1000H o LXI H,X MOV A,M
SUML DB 00H ;Resultado de la suma que en este
LXI H,Y
;caso será D5 B6+3A5C=1 10 12
; M<=[1001] Equivale a LXI H,1001H
ACAR DB 00H ;Acarreo (en nuestro caso será 01)
ADD M ;A<=A+M
;Programa
STA RES
ORG 2000H
;Equivale a STA 1002 o LXI H,RES MOV M,A
STC
END
CMC ;CY=0
;***********************************
LDA XL ;A=XL
;**** EJERCICIO 3 ****
LXI H,YL ;M=YL
;************************************
ADD M ;A=XL+YL
Sería añadir en los datos :
STA SUML
ACARR DB 00H
LDA XH ;A=XH
y en el programa las siguientes líneas :
LXI H,YH ;M=YH
MVI A,0H ;A<=0 también con XRA A
ADC M
ACI 0 ;A<=A+0+CY Se carga el acarreo
;A=XH+YH aquí se suma con el acarreo
STA ACARR ;Almacena el acarreo
;posible de la anterior suma XL+YL
;Probarlo con los números E6+CA = 160
STA SUMH
;(1 de acarreo)
MVI A,0 ;A=0
;***********************************
ACI 0 ;A=CY
;**** EJERCICIO 4 ****
STA ACAR
;************************************
END
; [1003]= [1000]+ [1001]+ [1002] [1004]=Acarr
;***********************************
;Datos
;**** EJERCICIO 6 ****
ORG 1000H
;************************************
DAT DB 0C5H, 0A4H, 0C5H;Los sumandos
****con registros dobles*****
RES DB 00H ;El resultado= 22EH
; [1001] [1000]
ACAR DB 00H ;El acarreo es 2 (22EH)
; + [1003] [1002]
;Programa
; [1006] [1005] [1004]
ORG 2000H
;Datos
STC ;con estas dos instrucciones
ORG 1000H
CMC ;borramos el acarreo CY=0
X DB 0D5H, 0B6H ;Primer sum. D5B6H
LXI H,DAT
Y DB 3AH,5CH ;Segundo sum. 3A5CH
;o LXI H,1000H ahora HL apunta al primer
SUM DB 00H, 00H ;Resultado de la suma
;sumando
;en este caso será D5 B6+3A5C=1 10 12
MOV A,M ;A=[1000]
ACAR DB 00H ;Acarreo (en nuestro caso será 01)
INX H
;Programa
;HL apunta al segundo sumando
ORG 2000H
ADD M ;A=A+[1001]
LHLD X
STA RES ;Guarda el resultado
XCHG ;DE=[1001] [1000]
MVI A,0 ;A<=0 o XRA A
LHLD Y ;HL=[1003] [1002]
ACI 0 ;A<=CY
DAD D ;HL=HL+DE
STA ACAR

Página 143
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh

SHLD SUM ; [1005] [1004]=HL MVI A,0 ;A=0


MVI A,0 LXI H, Y ;M=Y
RAL ;Otra forma de cargar el BUCLE: ADD M ;A=A+Y
;acarreo, también podría haber sido ACI 0 DCR C ;C=C-1
STA ACAR JNZ BUCLE ;Salta si no es 0
END FIN: STA PROD
;*********************************** ;Guardar el resultado del producto
;**** EJERCICIO 7 **** END
;************************************ ;***********************************
; en BCD [1002]=[1000]+[1001] [1003]=CY ;**** EJERCICIO 9 ****
;Datos ;************************************
ORG 1000H ;división de dos números
X DB 58H ;En decimal =88 ;Aquí la división se hace viendo cuantas veces cabe Y
Y DB 63H ;En decimal = 99 ; ORGANIGRAMA
SUM DB 00H ; A<=[1000]
;En nuestro caso 58+63=66H que en decimal es 187 ; B <=[1001]
;luego se grabará 87 ; C <=0
ACAR DB 00H ;En nuestro caso un 1 (187) ; A<= A - B
;Programa ; HL<=HL + 1
ORG 2000H ; C <= C + 1
STC ; ¿A>B? S
CMC ;CY=0 ; N
LDA X ;A=[1000] ; ALMACENAR RESULTADOS FIN
LXI H,Y ;M=[1001]
ADD M ;A=[1000]+[1001] ; ejemplo :
DAA ;Ajuste a BCD ; C B A
STA SUM ;Guardarlo en 1002 ; 0 3 14
MVI A,0 ; 1 11
ACI 0 ; 2 8
STA ACAR ;Guardando el acarreo ; 3 5
END ; 4 2
;*********************************** ;************************************
;**** EJERCICIO 8 **** ;Datos
;************************************ ORG 1000H
; [1002]=[1000]*[1001] X DB 14D ;Dividendo
;Para multiplicar lo que hay que hacer es ;sumar Y DB 03D ;Divisor
tantas veces el nº Y COC DB 00 ;
; ORGANIGRAMA RES DB 00 ;
; C <=[1000] ;Programa
; B <=[1001] ORG 2000H;
; A <=0 LDA X ; A<B entonces FIN
; A<= A+B CPI 0
; HL<=HL + 1 JZ FIN;si el dividendo es 0 que vaya a fin
; C <= C - 1 LXI H,Y
; ¿NO ES 0? S MOV B,M
; N CMP B ;CMP hace A-B
; ALMACENAR RESULADOS FIN JM FIN ;Si B>A la resta es negativa
; ejemplo : ;luego que vaya a fin
; C B A MVI C,0
; 3 4 0 BUCLE: SUB B ;A=A-B
; 2 4 INR C ;C=C+1
; 1 8 CMP B ;CMP hace A-B
; 0 12 JP BUCLE ;Si no hay acarreo, es
;************************************ ;decir que la resta es positiva A>B, salta
;Datos FIN: STA RESTO ;Almaceno el resto
ORG 1000H MOV A,C
X DB 03; ; como lo diga X, se STA COC
;meterá en C y el A acumulará las sumas END
Y DB 06 ; C=3 A=0
PROD DB 00 ; C=2 A=6
;Programa C=1 A=12D=0CH
LXI SP, 3000H; C=0 A=18D=12H
LDA X ; FIN
CPI 0 ;Compáralo con el 0
JZ FIN ;Si es 0 que vaya a fin
MOV C,A
;C tiene el nº de veces que hay que sumar

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

APENDICE A CONEXIÓN ENTRE 8085 Y EL PC

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:

En el micro (tres hilos) En el PC (macho de 25 pines)


TX ------------------------- RX (3)
RX ------------------------- TX (2)
RTS (4) con CTS (6)
GND ----------------------- GNE (5)
DSR (7) con DTR (8)

Ejecutar el fichero DDT85 he indicar en qué puerto esta COM1 COM2 etc..., de esta forma se consigue
una 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.

APENDICE B COMANDOS ENTRE 8085 Y EL PC

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.

N =ejecución paso a paso

I dirección =inserta en la memoria a partir de dirección.

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

Sdirección =Visualiza y modifica la dirección, ejem S1000

Xregistro =Visualiza y modifica los registros, ejem XA, si no se pone el registro, los visualiza en
este orden: A B C D E F H L M P S

L nombre del programa offset = carga un programa desde el ordenador a partir de la


dirección 1000H, el offset es el número de posiciones de memoria que se incrementa el programa, ejem
offset=10, entonces lo carga en la 1010, luego es aconsejable utilizar en vuestros programas ORG 0000H
o ORG 0500H

H = fin de la comunicación

Página 146
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh

APENDICE C COMANDOS ENTRENADOR 8085


INIC = Se produce un “reset” y aparece en el display 8085.
S.M/ANT =Sustituir memoria y anterior
POST =Posterior, equivale al “enter”
ejemplo, queremos meter a partir de la dirección 1000 los siguientes datos 31,8C,1F, solución:
SM/ANT 1000 POST 31 POST 8C POST 1F
si hay error: SM/ANT 1000 POST 31 POST 8D POST SM/ANT 8C POST 1F
E REG =Examinar los registros, para ver uno concreto, pulsar su nombre, si quieres
ver todos, pulsar POST (hacia delante) o ANT (hacia atrás) y se verán en el siguiente orden:
A B C D E F I H L SPH SPL PCH PCL
F= S Z X AC X P C
I=X X X IE M7.5 M6.5 M5.5
IE =Validación de interrupciones, y las M son las máscaras de las interrupciones
GO = Ejecuta el programa, visualiza el PC, introducir la dirección de comienzo, y pulsar
EJEC, para interrumpir INIC, el programa puede finalizar con alguna instrucción como RST0,
RST1 o JMP 0000H, se aconseja situar la pila al final (LXI SP. 1FFFH)
EJEC =Ejecuta paso a paso, POST para pasar al siguiente paso
INTR VECT = Se realiza la interrupción 7.5, (RST 7.5), es un interruptor conectado
directamente al pin 7 del 8085 (Ver interrupciones)
E =Lee un programa desde el cassette C =Graba un programa al cassette

APENDICE D SUBRUTINAS PREDISEÑADAS

0A51 CI111 Carácter de consola al acumulador F


0A5D CO1 Del registro C al display AF
0A33 PRIMES un mensaje que esta en memoria, que comienza en la AHLF
dirección apuntada por HL se visualiza en el display
0AB7 ADRD el contenido de HL se visualiza en el display ABCF
04C9 UPDAD “ TODOS
0B74 DELAY retraso de 1 mseg
037D GTHEX nº hex de 2 bytes ejem A725 desde el teclado, al display y
al registro DE
02BF TODIR Idem que el anterior, pero sin visualizarlo

APENDICE E GRABAR Y LEER DESDE CASSETTE


Grabar:
 Situar la cinta en el lugar que deseas con el contador de cassette
 Conectar MIC del cassette con MIC del micro
 Pulsar C, con CoPr poner la dirección comienzo del programa, pulsar EJEC, y con FiPr
poner la dirección final del programa, pulsar EJEC, con PrO introducir un nº de programa
entre la 00 hasta la FF
 Poner REC en el Cassette y pulsar EJEC despues de 5 vueltas aprox. cuando aparece en el
monitor “ – “ es que ya a terminado
Leer:
 Posicionar la cinta en la posición que se dejó, para esto se tiene que llevar la cuenta.
 Pulsar E, con CODE (Comienzo destino) introducir la direción de comienzo, pulsar EJEC
con PrO introducir un nº de programa entre la 00 hasta la FF
 poner Play, y pulsar EJEC, si sale “.” es que esta en lectura, si sale “-“ es que ha acabado,
volumen medio alto.

11 las teclas azules tienen el siguiente código:


EJEC=10H POST=11H GO=12H SMANT=13H EREG=14H EJEC=15H

Página 147
Problemas de Electrónica Digital. Puertas lógicas, Karnaugh

APENDICE F LENGUAJE ALTO NIVEL, ENSAMBLADOR Y MÁQUINA

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.

Alto nivel (C) Ensamblador para PC Máquina para PC


void main( void ) push ebp 00401010
{ mov ebp,esp 00401011
push ecx 00401013
mov dword ptr [i],0 00401014
jmp main(0x00401026)+16h 0040101B
mov eax,dword ptr [i] 0040101D
int i;
add eax,1 00401020
for(i=0;i<=10;i++)
mov dword ptr [i],eax 00401023
cmp dword ptr [i],0Ah 00401026
jg main(0x0040103b)+2Bh 0040102A
push offset ___xt_z(0x00411a30)+104h 0040102C
printf ("Hola"); call printf(0x00401060) 00401031
add esp,4 00401036
jmp main(0x0040101d)+0Dh 00401039
mov esp,ebp 0040103B
} pop ebp 0040103D
ret 0040103E

 En realidad el 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

APENDICE G PROBLEMAS DIGITAL MC GRAW


APENDICE D PROBLEMAS DE ELECTRONICA DIGITAL
Libro Schaum L.Cuesta Mc Graw Hill
(Nota de Astucia: Se aconseja ojear y hacer los más interesantes, que hacerlos todos como máquinas)

DESCRIPCIÓN RESUELTOS PROPUESTOS


Simplificación álgebra de Boole 1.1-1.12
Tabla -> Función 1.24-1.28 1.49-1.51
Función -> Tabla 1.21-1.23
Función -> Karnaugh 2.1-2.22 2.24 2.33 2.33-2.44 2.4-2.50
Función ->Puertas 3.1-3.3 3.14
Puertas -> Función 3.4-3.7 3.9 3.10
Cronogramas 3.15-3.17 3.22
Karnaugh de +4 variables 2.26-2.29 2.46 2.51
Simplificación 3.18-3.20
Pasar a puertas NAND/NOR 3.11-3.13
Enunciados -> simplificación 3.24-3.31 5.14 5.15 5.44
Decimal -> Binario 4.5-4.7
Binario -> Decimal 4.2-4.4
Otras bases 4.8-4.24
Realización ctos MSI con puertas lógicas 5.1-5.4 5.12 5.14 5.17 5.28 5.43
Ctos combinacionales con MSI 5.5-5.8 5.16 5.18-5.20 5.33-5.35 5.39 5.40
5.22-5.24
Ampliación ctos MSI 5.9 5.21 5.25-5.26 5.41-5.43
Ctos con comparadores 5.27
Ctos con sumadores 5.30 5.31 5.48
Construcción de biestables 6.1 6.12-6.17 6.36 6.37
Divisores 6.3 6.30 6.32 6.34
Cronogramas con biestables 6.8-6.10 6.11 6.38 6.39 6.45
Construcción de Biestables genéricos a 6.18 6.20
partir de cronogramas
Contador con biestables 6.19 6.40 6.44
Contador con ctos TTL 6.21-6.24 6.27-6.29 6.41-6.43
Registros de desplazamiento 6.31
Problemas de biestables 6.46-6.48
Autómatas diagramas de flujo, Tablas de 7.1-7.3 7.24-7.32
Excitación, Flujos...
Autómatas con enunciados de secuencias 7.4 7.9-7.15 7.33
Realización de autómatas a partir de 7.5
diagramas de flujo
Problemas diversos de autómatas 7.16-7.22
Memorias generalidades: direcciones 9.1-9.8 9.10-9.14 9.22-9.36
matriz, datos...
Mapas de memoria 9.9 9.17-9.21 9.38-9.41
ROM grabación 9.15 9.16 9.37

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

Autómatas ........................................ 69
74194 .............................................................. 29
74221 .............................................................. 54
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

Biestable RS ................................................... 29 CY................................................................. 122


Biestable RS asíncrono ................................... 30 D
Biestable RS síncrono por nivel ..................... 30 D 122
Biestable T...................................................... 29 D.B. ............................................................... 121
biestable T síncrono por flanco de subida ...... 30 DAA .............................................................. 124
biestables ........................................................ 29 dato ............................................................... 123
BINARIO ................................................. 16, 20 DCR .............................................................. 124
Bomba de aguas residuales............................. 98 DCX .............................................................. 124
Boole ................................................................ 6 de lógica positiva ............................................ 14
Booleana ........................................................... 5 DECIMAL ................................................ 16, 20
bucles............................................................ 127 Decodificador 74159 ....................................... 17
Bus de Control .............................................. 121 Decodificador 7442 ......................................... 17
Bus de datos ........................................... 99, 121 Decodificadores .............................................. 19
Bus de direcciones .................................. 99, 121 DEMUX .......................................................... 21
bus de direcciones multiplexado .................. 121 detector ............................................................. 7
C detector de impulsos inferiores a un tiempo T 54
C 122 detector de impulsos múltiples ........................ 54
C.B. .............................................................. 121 detector de impulsos superior a un tiempo T .. 54
Caché L1 ...................................................... 119 DRAM .......................................................... 102
Caché L2 ...................................................... 119 E
Cadenas luminosas ......................................... 97 E 122
CALL ........................................................... 125 Ensamblador ........ Véase Lenguaje ensamblador
CASSETTE .................................................. 147 entrenador 8085 ............................................ 130
circuito en puertas NAND ............................... 6 Entrenador 8085 ............................................ 147
CMA ............................................................ 124 ERR .............................................................. 126
CMC ............................................................ 124 estructura de la matriz ..................................... 99
CMP ............................................................. 124 estructura interna de una memoria .................. 99
CO CONECTORES ..................................... 76 F
coche fantástico .............................................. 37 FBD ........................... Véase Plano de funciones
codificador ................................................ 20, 21 Flag ....................................................... 121, 122
Complemento dos C2 ..................................... 25 función lógica ................................................... 8
Complemento nueve C9 ................................. 27 funciones booleanas .......................................... 5
Complemento uno C1 ..................................... 25 G
Conexión serie entre sistemas ...................... 146 G1000 ........................................................... 131
contactores ...................................................... 75 garaje de coches .......................................... 7, 18
Contador adelante/atrás .................................. 77 Generador de pulsos........................................ 76
contador de turno de las tiendas ..................... 38 GF FUNCIONES BÁSICAS INTEGRADAS
contador del programa .................................. 121 .................................................................... 76
contador Down con JK ................................... 38 Grafcet ........................................................... 74
contador Up con JK ........................................ 38 H
contadores....................................................... 38 H 122
cortadora de tablones ...................................... 83 HACERHEX ................................................ 131
CPI ............................................................... 124 HEXADECIMAL ..................................... 16, 20
CPU................................................................ 70 HLDISPLAY ................................................ 132
cronogramas ................................................... 30 HLT .............................................................. 125

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

puertas NAND .................................................. 6 SFC .............................................. Véase Grafcet


puertas NAND de dos entradas ........................ 6 Siemens ........................................................... 92
puertas NOR ..................................................... 6 SIM8085 ....................................................... 126
puertos .......................................................... 127 simplificando .................................................. 13
pulsación prolongada ...................................... 79 SIPO ................................................................ 29
Pulsador de Confort ........................................ 93 SISO ................................................................ 29
R STA............................................................... 123
R.I. ............................................................... 122 stack pointer .................................................. 121
RAL ............................................................. 125 STC............................................................... 124
RAR ............................................................. 125 SUB............................................................... 124
reg. de instruciones ....................................... 121 subrutinas ...................................................... 127
registro de control ......................................... 134 SUBRUTINAS PREDISEÑADAS............... 147
registros .......................................................... 29 suma binaria .................................................... 25
registros auxiliares ........................................ 121 suma y resta BCD ........................................... 25
registros dobles .......................................... 142 suma y resta en HEX....................................... 25
Relé con autorretención .................................. 76 sumador completo ........................................... 25
resta binaria .................................................... 25 T
RET.............................................................. 125 tabla de verdad ............................ 5, 9, 13, 14, 18
retardadores .................................................... 56 tabla lógica ........................................................ 5
Retardo a la conexión ..................................... 76 TECLAACUM.............................................. 132
Retardo a la conexión memorizado ................ 77 Telerruptor ...................................................... 76
Retardo a la desconexión ................................ 76 temporizador de una luz de escalera ............... 79
RLC ............................................................. 125 trigers .............................................................. 56
RRC ............................................................. 125 U
RSTn ............................................................ 125 U.C ................................................................ 121
S U.C................................................................ 122
S 122 W
S.P. ............................................................... 122 Windows 3.11 ............................................... 148
SBI ............................................................... 124 Windows 9x .................................................. 148
semáforo ................................................. 82, 140 X
semisumador................................................... 25 XOR .......................................................... 76, 85
SER ....................................... Véase Serial Input Z
Serial Input ..................................................... 29 Z 122
SF FUNCIONES ESPECIALES ................. 76 Z80 ................................................................ 119

Página 153