1 Problemas puertas lógicas, karnaugh

Transcripción

1 Problemas puertas lógicas, karnaugh
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º
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
b
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
c
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
F
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
 a·b·c  a·b·c
f) F  a·b·c  a
e) F
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
KARNAUGH ...
1.
A
LOS
PROBLEMAS
DE
PUERTAS
LÓGICAS,
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º
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
b
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
c
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1 (a+b)'
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
2 a+b
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
3 bc
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
4 nand 1 3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
5 or 2 4
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
6 cd'
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
7nor 6 3
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
1
F nand 5 7
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
0
9
5. a)
En MINitérminos tenemos : F  a·b·c  a·b·c  a·b·c  a·b·c
En MAXitérminos :
b)
F  ( a  b  c )·( a  b  c )·( a  b  c )·( a  b  c )
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
7.
f) F  a·b·c  a  (Teorema 2  llamando  ab  B )  aB  a  a  B  a  bc
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
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Q1
0
0
0
1
0
1
1
1
0
1
1
1
1
1
1
1
I1 I2\I3 I4
00
01
00
0
0
01
0
1
11
1
1
10
0
1
La función es simplificando
F=I3I4+I1I2+I2I3+I2I4+I1I3+I1I4
11
1
1
1
1
10
0
1
1
1
12 Aquí lo que hay que hacer es una tabla de verdad con su correspondiente tabla de karnaugh :
I1I2 I3 I4
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Q1
x
0
x
1
0
0
1
1
x
0
x
1
1
1
1
1
I1 I2\I3 I4
00
01
00
X
0
01
0
0
11
1
1
10
X
0
La función es simplificando
Q1=I3 + I1I2
11
1
1
1
1
10
X
1
1
X
13
13. La tabla de verdad y las funciones de karnaugh ya simplificadas y pasadas a puertas NAND es
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
35
HEXADECIMAL
BCD
100100011
BC
11111011
74
101000111
2748
110110100100
5D
101000000
2.- Pasar a decimales
BINARIO
0.1
DECIMAL
0.1111
0.808
0.0101
0.616
0.587
0.1
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,
realiza un MUX de 16 canales
Problema 14
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
100011
1111011
1011100
11111011
1001010
10010011
101010111100
110110100100
1011101
10001100
DECIMAL
35
123
188
251
74
147
2748
13492
93
140
HEXADECIMAL
23
7B
BC
FB
4A
93
ABC
DA4
5D
8C
BCD
0011 0101
0001 0010 0011
0001 1000 1000
0010 0101 0001
0111 0100
101000111
0010 0111 0100 1000
1 0011 0100 1001 0010
1001 0011
101000000
Hay que recordar el siguiente esquema :
2.- Pasar a decimales
BINARIO
DECIMAL
0.1
0.5
0.1100
0.808
0.1111
0.9375
0.1001
0.616
0.0101
0.3125
0.1001
0.587
0.0011
0.1
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
725
-665
0000111100
1011010101
0100101010
pasandolo a C1 ===>>
y sumándole 1=>
00000111100
10100101011
0 10101100111
-1010011000
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
0FB8
2964
=>
=>
<=
0001 1001 1010 1100
0000 1111 1011 1000
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
- 4ACF
+ 002D
=>
=>
<=
0 0100 1010 1111 1100
0100 1010 1100 1111 =>C2=> 1 1011 0101 0011 0001
<=
<=
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
- FB8
- F50
=>
=>
<=
1111 1011 1000
1111 0101 0000
=>C2=>
<=C2<=
0 0000 0110 1000
1 0000 0100 1000
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
0
1
0
1
0
1
1
1
x
1
1
Q
D
Qn
0
0
1
1
T
Qn
0
Qn
1
Q
REGISTROS
29
4.2 ENUNCIADOS
BIESTABLES
DE
PROBLEMAS
DE
CRONOGRAMAS
DE
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 (masterslave)
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
CL
PE1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
PE2 P1A P1B P1C P1D
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0111
0101
0101
1111
0101
1101
0011
0011
0000
0000
0000
0110
0101
0000
P2A P2B P2C P2D
SI
clk
1110
1101
1100
0010
1101
1111
1100
0011
0000
1001
0000
1111
1111
0000
1
0
1
0
1
0
0
1
0
1
0
1
0
0

X


0


1

X


0

estado interno
salida
QA QB QC QD
Out
18 Rellena la siguiente tabla de funcionamiento de un 74166
entrada
cl' clk
1 X
1 
1 
1 
1 
1 
1
0
0 
1 
1 
S/L' S.I.
0
1
1
0
1
0
1
1
1
1
1
0
1
0
1
0
0
1
1
1
ABCDEFGH
01000101
01011100
11010101
00110011
00001100
01001100
01100001
00110101
00110011
00001100
estado interno
out
QA QB QC QD QE QF QG QH
Q
comentarios
S.I. = Serial Input = SER
32
19 Rellena la siguiente tabla de funcionamiento de un 7495
entrada
MC
SI
CLK1
CLK2
ABCD
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
salida
QA QB QC QD
comentarios
20 Rellenar la siguiente tabla de funcionamiento de un 74194
cl'
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
CLK S0 S1
01

11

01

01

10

10

10

0
10
10

01

00

11

10

11

01

01

SR
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
A B C D SL
0111
1
0010
0
0100
0
0101
0
0101
1
0101
1
0101
0
0101
0
0101
0
0101
0
0101
0
0111
1
0101
1
0101
1
1111
1
1111
1
QA QB QC QD
comentario
21 ¿Cómo harías un juego de luces con el 74194 de tal manera que un 1 siempre circulase?
33
4.4 SOLUCIONES
BIESTABLES
A
LOS
PROBLEMAS
DE
CRONOGRAMAS
DE
1. Hay que tener en cuenta que cuando R=S=1 no esta definido, esto se representará por 'x' la salida Q
negada no se ha dibujado, es la misma que la Q pero inversa.
2. Aquí 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
CL
PE1
PE2 P1A P1B P1C P1D
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
18 La solución es :
Entrada
cl' clk
1 X
1 
1 
1 
1 
1 
1
0
0 
1 
1 
S/L' S.I.
0
1
1
0
1
0
1
1
1
1
1
0
1
0
1
0
0
1
1
1
0111
0101
0101
1111
0101
1101
0011
0011
0000
0000
0000
0110
0101
0000
ABCDEFGH
01000101
01011100
11010101
00110011
00001100
01001100
01100001
00110101
00110011
00001100
estado interno
salida
P2A P2B P2C P2D
SI
clk
QA QB QC QD
Out
1110
1101
1100
0010
1101
1111
1100
0011
0000
1001
0000
1111
1111
0000
1
0
1
0
1
0
0
1
0
1
0
1
0
0

X


0


1

X


0

0000
0101
1010
0101
0101
0010
0001
0001
0000
1001
0100
1010
1010
0101
0
1
0
1
1
0
1
1
0
1
0
0
0
1
estado interno
out
QA QB QC QD QE QF QG QH
01000101
00100010
00010001
00010001
10001000
01000100
00100010
00000000
00110011
10011001
Q
1
0
1
1
0
0
0
0
1
1
comentarios
carga


quieto


quieto
clear
carga

19 La solución es :
entrada
MC
SI
ABCD
Salida
QA QB QC QD
comentarios
CLK1
CLK2
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'
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
CLK S0 S1
01

11

01

01

10

10

10

0
10
10

01

00

11

10

11

01

01

SR
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
A B C D SL
0111
1
0010
0
0100
0
0101
0
0101
1
0101
1
0101
0
0101
0
0101
0
0101
0
0101
0
0111
1
0101
1
0101
1
1111
1
1111
1
QA QB QC QD
0000
0010
0001
0000
0001
0011
0110
0110
1100
1110
1110
0000
1101
0101
0101
1010
comentario
clear
carga





quieto


quieto
clear

carga
quieto

21 La 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
1º 1
1
Clock ext
2º 1
1
Q0
Q
Salida Q0 y clk 2º
Salida Q1 y clk 3º
QNEG
n.c.
n.c.
PRneg
1
1
CLneg
Salida pta
Salida pta
1 Todas las salidas Q3 Q2 Q1 Q0 pueden conectarse a un 7448 y a un display para poder visualizar los
números
39
3º 1
1
Q1
Salida Q2 y clk 4
4º 1
1
Q2
Salida Q3
Salida pta= Puerta NAND entrada Q3 y Q1
Detecta el 10 =1010 y carga el 0=0000
4 Serían 3 biestables JK
J
K
CLK
Q
1º 1
1
Clock ext
Salida Q0 y clk 2º
2º 1
1
Q0
Salida Q1 y clk 3º
3º 1
1
Q1
Salida Q2
Salida pta= Puerta NAND entrada Q2 y Q1
Detecta el 6 =110 y carga el 0=0000
5 Serían 4 biestables JK
J
K
CLK
Q
1º 1
1
Clock ext
Salida Q0
2º 1
1
Q0neg
Salida Q1
3º 1
1
Q1neg
Salida Q2
4º 1
1
Q2neg
Salida Q3
Salida pta= Puerta OR entrada Q3 Q2 y Q0
Detecta el 2 =0010 y carga el 15=1111
n.c.
n.c.
1
1
Salida pta
Salida pta
QNEG
n.c.
n.c.
n.c.
PRneg
1
1
1
CLneg
Salida pta
Salida pta
Salida pta
QNEG
Clk 2º
Clk 3º
Clk 4º
n.c.
PRneg
Salida pta
Salida pta
Salida pta
Salida pta
CLneg
1
1
1
1
40
6 Serían 3 biestables JK
J
K
CLK
Q
1º 1
1
Clock ext
Salida Q0
2º 1
1
Q0neg
Salida Q1
3º 1
1
Q1neg
Salida Q2
Salida pta= Puerta OR entrada Q2 y Q1
Detecta el 1 =001 y carga el 7=111
7 Serían 4 biestables JK
J
K
CLK
Q
1º 1
1
Clock ext
Salida Q0 y clk 2º
2º 1
1
Q0
Salida Q1 y clk 3º
3º 1
1
Q1
Salida Q2 y clk 4
4º 1
1
Q2
Salida Q3
Salida pta= Puerta NAND entrada Q3 y Q2 y Q0
Detecta el 13 =1010 y carga el 2=0010
QNEG
Clk 2º
Clk 3º
n.c.
PRneg
Salida pta
Salida pta
Salida pta
CLneg
1
1
1
QNEG
n.c.
n.c.
n.c.
n.c.
PRneg
1
Salida pta
1
1
CLneg
Salida pta
1
Salida pta
Salida pta
41
8 Serían 4 biestables JK
J
K
CLK
Q
1º 1
1
Clock ext
Salida Q0
2º 1
1
Q0neg
Salida Q1
3º 1
1
Q1neg
Salida Q2
4º 1
1
Q2neg
Salida Q3
Salida pta= Puerta OR entrada Q3 Q2 y Q0
Detecta el 2 =0010 y carga el 14=1110
9 Serían 4 biestables JK
J
K
CLK
Q
1º 1
1
Clock ext
Salida Q0 y clk 2º
2º 1
1
Q0
Salida Q1 y clk 3º
3º 1
1
Q1
Salida Q2 y clk 4
4º 1
1
Q2
Salida Q3
Salida pta= Puerta NAND entrada Q3 Q1 y Q0
Detecta el 11 =1011 y carga el 7=0111
10 Serían 5 biestables JK
J
K
CLK
Q
1º 1
1
Clock ext
Salida Q0 y clk 2º
2º 1
1
Q0
Salida Q1 y clk 3º
3º 1
1
Q1
Salida Q2 y clk 4
4º 1
1
Q2
Salida Q3 y clk 5º
5º 1
1
Q4
Salida Q4
Salida pta= Puerta NAND entrada Q3 Q1 y Q0
Detecta el 17 =10001 y carga el 7=00111
QNEG
Clk 2º
Clk 3º
Clk 4º
n.c.
PRneg
1
Salida pta
Salida pta
Salida pta
CLneg
Salida pta
1
1
1
QNEG
n.c.
n.c.
n.c.
n.c.
PRneg
Salida pta
Salida pta
Salida pta
1
CLneg
1
1
1
Salida pta
QNEG
n.c.
n.c.
n.c.
n.c.
n.c.
PRneg
Salida pta
Salida pta
Salida pta
1
1
CLneg
1
1
1
Salida pta
Salida pta
11 En este caso tenemos que resetear en 9=1001
Clk A
Clk B
Qa
Qb
Qc
Qd
Clk externo Qa
Salida Q0 Salida Q1 Salida Q2 Salida Q3
y clkB
Resets
Q3 y Q0
42
12 En este caso tenemos que resetear en 3=0011
Clk A
Clk B
Qa
Qb
Qc
Qd
Clk externo Qa
Salida Q0 Salida Q1 Salida Q2 Salida Q3
y clkB
También se podría haber hecho utilizando sólo 3 bits :
Clk A
Clk B
Qa
Qb
Qc
Qd
n.c.
Clk externo n.c.
Salida Q0 Salida Q1 Salida Q2
Resets
Q1 y Q0
Resets
Q1y Q0
13 Hay que hacer simplemente un contador mod7 y tomar como salida el bit de mayor
peso : Hay que resetar en el 7=0111
Clk A
Clk B
Qa
Qb
Qc
Qd
Resets
Clk externo Qa
clkB
N.C.
Salida
N.C.
puerta
Puerta = AND con entrada a Q2, Q1 y Q0
43
14 Hay que utilizar dos 7490 uno para las unidades y otro para las decenas
7490 Clk A
Clk B
Qa
Qb
Qc
Qd
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
Clk B dec Decenas decenas decenas
Hay que detectar el 20=0010 0000 Puerta = Q1decenas (ninguna puerta)
Resets
Salida
puerta
Salida
puerta
En los resets del 7490 unidades se 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
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
Clk B dec Decenas decenas decenas
Hay que detectar el 80=1000 0000 Puerta = Q3decenas
Resets
Salida
puerta
Salida
puerta
En los resets del 7490 unidades se 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
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
Clk B dec Decenas decenas decenas
En este caso no hay que resetear, él sólo pasa a 00 después del 99
Resets
Salida
puerta
Salida
puerta
18 Hay que utilizar dos 7493 uno para las unidades y otro para las decenas
7493 Clk A
Clk B
Qa
Qb
Qc
Qd
Resets
Unid Clk
Qa
Salida Q0 Salida
Salida
Salida
Salida
ades externo
unidades
unidades y Q1uni
Q2
Q3
puerta1
clkB uni
unidades unidades
Dece Qd
de Qa
Salida Q0 Salida
Salida
Salida
Salida
nas unidades
decenas
decenas y Q1
Q2
Q3
puerta2
Clk B dec Decenas decenas decenas
Aquí si que hay que resetear, pues él solo no pasa a 00
Puerta1=AND de Q0unidades y Q3unidades(9=1001) o sin puerta Q0 a R01 y Q3 a R02
Puerta2=AND de Q0decenas y Q3decenas (9=1001) o sin puerta Q0 a R01 y Q3 a R02
45
19 Como el 13 entra dentro del rango del mod16 que es el 7493, con 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
ClkA
Clk
Qa
clkB
n.c.
R02
83
externo
del 9
Qc del
Qa
ClkB
n.c.
n.c.
Salida
9
8
Para el 8=1000 luego hay que resetear con Qd
R01
R02
0
Qd
Qa
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
ClkA
Clk
Qa
clkB
n.c.
n.c.
82
externo
del 10
Qc del
Qa
ClkB
n.c.
n.c.
Salida
10
8
R01
R02
0
Qd
Qb
Qd
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
ClkA
Clk
Qa
clkB
n.c.
n.c.
3
externo
del 10
Qd del
Qa
ClkB
n.c.
n.c.
Salida
10
3
R01
R02
Qa
Qb
Qb
Qd
Qd
R01
R02
n.c.
Qa
Qc
n.c.
Qa
Salida
puerta
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
ClkA
Clk
Qa
clkB
n.c.
5
externo
del 7
Qd del
Qa
ClkB
n.c.
Salida
7
5
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
Qa
Qb
Qc
Qd
D
C
B
A
Rco
G
CLK
D/U´
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
0
0
1
1
n.c.
0
Clk
ext
0
Ent
pta
n.c
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
Qa
Qb
Qc
Qd
D
C
B
A
Rco
G
CLK
D/U´
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
0
1
1
0
n.c.
0
Clk
ext
1
Ent
pta
n.c
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
Qa
Qb
Qc
Qd
D
C
B
A
Rco
G
CLK
D/U´
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
0
1
0
1
n.c.
0
Clk
ext
0
Ent
pta
n.c
Entrada pta NAND= Q3 Q2 Q0
28 Esta vez tiene que ser el 74191
Hay que detectar el final y cargar el 5=0101
Qa
Qb
Qc
Qd
D
C
B
A
Rco
G
CLK
D/U´
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
0
1
0
1
Load
0
Clk
ext
0
Rco
n.c
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
Qa
Qb
Qc
Qd
D
C
B
A
Rco
G
CLK
D/U´
Load
Max/
Min
Sal
Q0
Sal
Q1
Sal
Q2
Sal
Q3
1
0
0
0
Load
0
Clk
ext
1
Rco
n.c
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
Chip
1º
2º
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
A
B
C
D
Rco
G
CLK
D/U´
0
1
0
0
n.c.
0
Clk
ext
0
1
0
0
0
n.c.
0
Q3
0
Load
Sal
pta
Sal
pta
Max/
Min
n.c
n.c.
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)
Chip
1º
2º
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
A
B
C
D
Rco
G
CLK
D/U´
0
1
0
0
n.c.
0
Clk
ext
0
0
0
0
0
n.c.
0
Q3
0
Load
Sal
pta
Sal
pta
Pta= NAND Q3 y Q4 CLK del 2º puede ser el RCO del 1º
49
Max/
Min
n.c
n.c.
32 Tienen que ser dos 74190
Hay que detectar el 10=0001 0000 y cargar el 18=0001 1000 (en BCD)
Chip
1º
2º
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
A
B
C
D
Rco
G
CLK
D/U´
0
0
0
1
n.c.
0
Clk
ext
1
1
0
0
0
n.c.
0
Q3
1
Load
Sal
pta
Sal
pta
Max/
Min
n.c
n.c.
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)
Chip
1º
2º
Qa
Qb
Qc
Qd
Sal
Q0
Sal
Q4
Sal
Q1
Sal
Q5
Sal
Q2
Sal
Q6
Sal
Q3
Sal
Q7
A
B
C
D
Rco
G
CLK
D/U´
1
1
0
0
n.c.
0
Clk
ext
0
1
0
0
0
n.c.
0
Q3
0
Load
Sal
pta
Sal
pta
Pta = NOT que tiene de entrada Q7 ( desde el 13 al 79 no hay nadie que tenga Q7=1)
50
Max/
Min
n.c
n.c.
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
1º
Q0
Q1
Q2
Q3
n.c.
n.c.
n.c.
n.c.
Clk
n.c.
2º
Q4
Q5
Q6
Q7
n.c.
n.c.
n.c.
n.c.
Co
1º
n.c.
CO
Up
2º
BO
n.c.
n.c.
n.c.
CO
Up
2º
BO
Load Clear
Sal
n.c.
pta
Sal
n.c.
pta
Pta = NAND Q4 y Q6
El reloj UP del 2º chip se 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
1º
Q0
Q1
Q2
Q3
1
1
0
0
Clk
n.c.
2º
Q4
Q5
Q6
Q7
1
0
0
0
CO
1º
n.c.
n.c.
n.c.
n.c.
Load Clear
Sal
0
pta
Sal
0
pta
Pta = NAND Q2 Q4 Q5 y Q6
El reloj UP del 2º chip se 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
1º
Q0
Q1
Q2
Q3
1
1
1
0
Clk
n.c.
2º
Q4
Q5
Q6
Q7
0
1
0
0
CO
1º
n.c.
CO
Up
2º
n.c.
BO
n.c.
n.c.
Load Clear
Sal
0
pta
Sal
0
pta
Pta = NOT de Q6
El reloj UP del 2º chip se 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
1º
Q0
Q1
Q2
Q3
n.c.
n.c.
n.c.
n.c.
clk
2º
Q4
Q5
Q6
Q7
n.c.
n.c.
n.c.
n.c.
CO1 n.c
n.c.
CO
Up
2º
n.c.
BO
n.c.
n.c.
Load Clear
n.c.
n.c.
Q6
Q6
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
1º
Q0
Q1
Q2
Q3
0
0
0
0
n.c.
Clk
2º
Q4
Q5
Q6
Q7
0
0
1
0
n.c.
BO
1º
CO
n.c.
n.c.
BO Load Clear
Dwn BO
0
2º 2º
BO
n.c.
0
2º
Aquí no hace falta realizar ninguna 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
1º
Q0
Q1
Q2
Q3
1
0
1
0
n.c.
Clk
2º
Q4
Q5
Q6
Q7
0
0
1
0
n.c.
BO
1º
CO
n.c.
n.c.
BO Load Clear
Dwn Sal
0
2º pta
Sal
0
n.c.
pta
Pta = OR Q7 Q6 Q4 Q3 Q1 y Q0
El reloj UP del 2º chip se 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
1º
2º
3º
Qa
Q0
Q4
Q8
Qb
Q1
Q5
Q9
Qc
Q2
Q6
Q10
Qd
Q3
Q7
Q11
D
0
0
0
C
0
0
1
B
0
0
0
A
0
0
1
UP DW CO
A
B Up 2
CO1 BO 1 CO3
CO2 BO2 n.c.
BO
Dwn 2º
BO3
n.c.
Load
D
D
D
Clear
C
C
C
53
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
Monoestable con 555 T=RCln3
Astable con 555
TH=(R1+R2) ln2
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
Problema 7
R=2m/100n*0.69=29k
8 El primer monoestable
hace un retardo a la
conexión de 3seg y el
segundo
monoestable
hace que dure el impulso
2seg para que juntos sean
los 5 segundos que pide el
enunciado
R1=3/300n*0.69 = 14M
R2 = 2/300n*0.69 = 9.6M
Los condensadores sería
de 300n
Problema 8
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
línea
Contactor
triángulo
Fusible térmico
Contactor
estrella
Interruptores
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
Panel de Operación
Conexión de un visualizador a un autómata
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
ORDENADORES
Trabaja con instrucciones específicas
del campo de la informática
(ficheros...)
Sistemas programables
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
Pantalla donde se van viendo
las órdenes introducidas o los
parámetros introducidos.
Teclado para introducir
órdenes o modificar las
existentes
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
NOT
XOR
(diferentes = 1 )
SF FUNCIONES ESPECIALES
Relé con
autorretención
(Biestable RS)
Cuando se pulsa la entrada hay un tiempo
de retardo T en que se conecte la salida. La
salida termina cuando termina la acción de
la entrada.(interruptor).
Cuando se pulsa la entrada, se conecta la
salida que tardará un tiempo en
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
aparecer una nueva entrada.
Existe la función reset que anula la
información previa.
Esta función tiene tres entradas en las que
se puede programar tres franjas horarias
diferentes, siendo la salida la suma de
todas ellas.
La salida actuará a la primera entrada que
le diga algo.
Esta función hace uso de la entrada set que
hace que la salida se accione, estando así
hasta que actúe el reset.
Generador de
pulsos
Ante una entrada (En) que estará activada
durante un tiempo T, la salida generada
será en forma de impulsos.
Retardo a la
conexión
Retardo a la
desconexión
Telerruptor
Interruptor
horario, (Reloj
no disponible
en el modelo
230R)
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
0
0
1
1
Motor
0
1
0
1
Parado
Cerrar
Abrir
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
1
2
3
4
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
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
Q1
0
0
0
1
0
1
1
1
0
1
1
I1 I2\I3 I4
00
01
11
10
00
0
0
1
0
01
0
1
1
1
11
1
1
1
1
10
0
1
1
1
La función es simplificando
Q1=I3I4+I1I2+I2I3+I2I4+I1I3+I1I4
84
1011
1100
1101
1110
1111
1
1
1
1
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
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Q1
0
0
0
1
0
0
1
1
0
0
0
1
1
1
1
1
I1 I2\I3 I4
00
01
11
10
00
0
0
1
0
01
0
0
1
0
11
1
1
1
1
10
0
1
1
0
La función es simplificando
Q1=I3I4+I1I2+I2I3
7.12 La tabla de karnaugh queda modificda con los estados indiferentes X de la forma :
I1 I2\I3 I4
00
01
11
10
00
X
0
1
X
01
0
0
1
0
11
1
1
1
1
10
X
1
1
X
La 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
No2=Mo-Fri
No3=Fri
On=9:00
On=16:00
On=8:00
Off=13:00
Off=19:00
Off=18:00
21 La 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
Mo-Fri
Sa-Su:
Sa-Su:
On:9:00
On:16:00
On:10:00
On:20:00
Off:14:00
Off:20:00
Off:13:00
Off:22:00
91
43 En este caso lo mejor es poner tantos programas como dias tiene la semana, y así
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
CHIP B
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
0000
03FF
0400
07FF
CHIP
A
RAM
B
RAM
DIRECCIÓN
0800
0BFF
0C00
0FFF
CHIP
C
ROM
D
ROM
100
9.2 SOLUCIONES
DE MEMORIAS
EJERCICIOS
1 a) Memoria 128x8





DB=8 D7 a D0
Como 128=27 luego AB=7 A6 a A0
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)
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
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.
Problema 5
Problema 6
7.- Las direcciones de memoria de los dos chips
serán :
A11 A8
CHIP A 0 1 1 1
0100
CHIP B 0 0 1 1
0000
El chip A será
A7 A4 A3 A0
1111
0000
1111
0000
1111
0000
1111
0000
Problema 7
CS  A11 * A10
El chip B se seleccionará con
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 1100 0000 0000
0000 1000 0000 0000
GH
EF
0000 1111 1111 1111
0000 1011 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 8
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
0
0
0
0
0
0
0
0
0000
0000
AB
0011
1111
1111
0000
0100
0000
0000
0000
CD
0111
1111
1111
0000
0000
0000
0000
1010
E
1111
1111
1111
1010
0000
0000
0000
1110
F
1111
1111
1111
1110
0000
0000
0000
1111
G
1111
1111
1111
1111
Los bits A15 a A12 son siempre los mismos, luego pueden seleccionar al circuito decodificador, y el
circuito decodificador 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
1111
1111
A
1000
1111
0111
1111
B
0000
1111
1111
1010
C
0000
1010
1111
1001
D
0000
1001
1111
0000
E
1000
0000
0111
0000
FG
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
1111
1111
A
0000
1111
1010
0000
B
1010
0000
0011
0000
CD
0000
0000
A7
A4
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
A3 A0
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
A7
A4
1111
0000
0000
0000
1111
0000
A3 A0
1111
0000
1111
0000
1111
0000
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
A
B
C
D
A15 A12
0000
0000
0000
0000
0000
0000
0000
0000
A11 A8
0000
0011
0100
0111
10 00
10 11
1100
1111
A7
A4
0000
1111
0000
1111
0000
1111
0000
1111
A3 A0
0000
1111
0000
1111
0000
1111
0000
1111
Los bits A15 a A12 son siempre los mismos, luego pueden seleccionar al circuito decodificador, y el
circuito decodificador 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.
Automoción
Tiene integrado las siguientes partes :
Periféricos de
PC
33%
10%





Unidad Central de Proceso UCP
Memoria RAM para contener los datos
Memoria ROM para contener el programa
Reloj que sincroniza la velocidad del
sistema.
Periféricos de Entrada y Salida: líneas
E/S, puertas serie/paralelo, A/D D/A...
Industria
16%
Telecom
16%
Electrodom
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
Modelo
Memoria Programa
PIC16C84
PIC16F84
1KX14 EEPROM
1KX14 FLASH
Memoria Datos
RAM
EEPROM
36
64
68
64
Registros
específicos
11
11
E/S
Vcc
Pines
13
13
2-6
2-6
18
18
Y aquí esta el esquema del conexionado del PIC16X84 para cualquier tipo de 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
80kHz
R=10k
80Hz
R=10k
C=20pF
C=220pF
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
textos, puede ser el EDIT de MSDOS o el Bloc de
Notas de Windows. Lo grabamos por ejemplo en
Mis Documentos en una carpeta nueva llamada Pic
y lo grabamos como Prueba.asm.
Luego compilamos el programa con el MPASM tal
y como enseña la figura :
list p=16f84A
#include p16f84a.inc
Tiempo EQU 22h
Vueltas EQU 23h
org 0
CONFIGURAR
BSF STATUS,RP0
BCF
TRISB,0
BCF
STATUS,RP0
COMIENZO
BSF PORTB,0
CALL RETARDO
BCF PORTB,0
CALL RETARDO
CALL RETARDO
GOTO COMIENZO
RETARDO
MAS
Hay que tener cuidado de indicar correctamente el
procesador a utilizar. Generará un fichero en
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 :
MOVLW b'11001000'
MOVWF Vueltas
DECFSZ Tiempo
GOTO MAS
MOVLW b'11111111'
MOVWF Tiempo
DECFSZ Vueltas
GOTO MAS
RETURN
END
:020000040000FA
:100000008316061083120614092006100920092001
:100010000328C830A300A20B0B28FF30A200A30BBB
:040020000B280800A1
:00000001FF
1.5 ¿Cómo se hace con Basic?
En PicBasic se teclearía el siguiente programa:
Al compilarlo el resultado seria parecido al Prueba.hex
1.6 ¿Cómo se hace en C?
Bucle:
High 0
Pause 500
Low 0
Pause 500
GoTo bucle
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
and Link o F3 (más rápido) te pedirá que
for(i=1;i<10;i++)
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
correctas las que señala por defecto.
Si abres el fichero Prueba.hex generado
tendrá la siguiente pinta:
¿No tendría que ser igual al hecho en
ensamblador? ¿Por qué?
:0C000000830100308A0004288301B52B26
:10076A0083168601831286018C018C0A8D010D087D
:10077A00803A8E0080300E020A3003190C02031CE4
:10078A00C72BC82BC92BDA2BCA2B8C0A03198D0A43
:10079A000D08803A83128E0080300E020A30031947
:1007AA000C02031CD92BDA2BC92B013083128600C9
:1007BA008C018C0A8D010D08803A8E0080300E0261
:1007CA000A3003190C02031CEB2BEC2BED2BFE2B2E
:1007DA00EE2B8C0A03198D0A0D08803A83128E00BB
:1007EA0080300E020A3003190C02031CFD2BFE2B6B
:0607FA00ED2BB72B0428D3
: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.icprog.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
if(condición){....}
Con la sentencia
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
3.2 Soluciones
/**********************************
*
Ejer1 intermitente por el puerto A
*
**********************************/
#include
<pic.h>
main(void)
{
unsigned int
i;
TRISA = 0b00000;
for(;;) {
PORTA = 0b00000;
for(i = 0;i<10;i++) continue;
PORTA = 0b11111;
for(i = 0;i<10;i++) continue;
}
}
/**********************************
*
Ejer2 PB=PA
**********************************/
#include <pic.h>
main(){
char i;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
i=PORTA;
PORTB=i;
}
}
/*************************
Ejer3
PORTB que sea la ~PORTA
**************************/
#include <pic.h>
main(){
char x,y;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
x=PORTA;
y=~x;
PORTB=y;
}
}
/*************************
Ejer4
PORTB que sea la ~PORTA
B5 B6 y B7 intermitentes
**************************/
#include <pic.h>
main(){
int i;
char x,y,z;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
x=PORTA;
y=~x;
z=y&0b00011111;
PORTB=z;
for (i=0;i<10;i++) continue;
z=y|0b11100000;
PORTB=z;
for (i=0;i<10;i++) continue;
}
}
/*********** Ejer5*******************
*si A1=1 entonces que se encienda todo PB
***********************************/
#include <pic.h>
main(){
char i;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
i=PORTA;
if((i&0b00010)!=0)
PORTB=0xff;
}
}
/************Ejer6**********************
*Secuenciamiento de luces por PB
*************************************/
#include <pic.h>
main(){
char i;
int j;
TRISB=0b00000000;
i=0b00000001;
for(;;){
PORTB=i;
i=i<<1;
if (i==0) i=1;
for (j=0;j<=10;j++) continue;
}
}
/* ********************
Ejer7
si A0=0 intermitente B0
si A0=1 intermitente B1
**********************/
#include <pic.h>
main(){
int i;
TRISA=0b11111;
TRISB=0b00000000;
luzB0: for(;;){
if
((PORTA&0b00001)!=0)
goto luzB1;
PORTB=0b00000000;
for (i=0;i<10;i++) continue;
PORTB=0b00000001;
for (i=0;i<10;i++) continue;
}
luzB1: for(;;){
if ((PORTA&0b00001)==0)
goto luzB0;
PORTB=0b00000000;
Problemas electrónica Digital
Profesor Javier Quintana
for (i=0;i<10;i++) continue;
PORTB=0b00000010;
for (i=0;i<10;i++) continue;
}
}
/******************************
Ejer 8
que haga juego de luces
si A2=0
si A2=1 que pare
******************************/
#include <pic.h>
main(){
int i;
char x,y;
TRISA=0b11111;
TRISB=0b00000000;
y=0b10000000;
mueve: for(;;){
x=PORTA;
if ((x&0b00100)!=0) goto
para;
y=y>>1;
if (y==0) y=0b10000000;
PORTB=y;
for(i=0;i<10;i++) continue;
}
para:
for(;;){
x=PORTA;
if ((x&0b00100)==0) goto
mueve;
PORTB=y;
}
}
/*************************************
***** Ejer9 Alarma de coche el led B0 indica
que esta en funcionamiento si A0 o A1 entonces
se dispara la alarma la alarma es un intermitente
en todos los B la alarma se apaga con A2
*************************************/
#include <pic.h>
main(){
char i;
int j;
TRISB=0b00000000;
TRISA=0b11111;
PORTA=0b00000;
inicio: for(;;){
i=PORTA;
if ( (i&0b00010) | (i&00001)
) goto alarma;
PORTB=0b00000001;
for (j=0;j<=10;j++) continue;
PORTB=0b00000000;
for (j=0;j<=10;j++) continue;
}
alarma: for(;;){
i=PORTA;
if (i&0b00100) goto inicio;
PORTB=0b11111111;
for (j=0;j<=10;j++) continue;
PORTB=0b00000000;
for (j=0;j<=10;j++) continue;
}
}
/******************
Ejer 10 visualizar el PORTA en el display
PORTB=a b c d e f g pt
*****************/
#include <pic.h>
main(){
char x;
TRISA=0b11111;
TRISB=0b00000000;
for(;;){
x=PORTA;
if (x==0) PORTB=0b11111100;
if (x==1) PORTB=0b01100000;
if (x==2) PORTB=0b11011010;
if (x==3) PORTB=0b11110010;
if (x==4) PORTB=0b01100110;
if (x==5) PORTB=0b10110110;
if (x==6) PORTB=0b10111110;
if (x==7) PORTB=0b11100000;
if (x==8) PORTB=0b11111110;
if (x==9) PORTB=0b11100110;
if (x==10) PORTB=0b11101110;
if (x==11) PORTB=0b00111110;
if (x==12) PORTB=0b10011100;
if (x==13) PORTB=0b01111010;
if (x==14) PORTB=0b10011110;
if (x==15) PORTB=0b10001110;
}
}
/********************************
Ejer 11
Pillar la luz
********************************/
#include<pic.h>
main(){
char x,y;
int i;
x=0b00000001;
TRISA=0b;11111
TRISB=0b00000000;
for(;;){
PORTB=x;
x=x<<1;
if (x==0) x=0b00000001;
y=PORTA;
if (y==x) goto fin;
for(i=0;i<10;i++) continue;
}
fin:
for(;;){
PORTB=0b11111111;
}
}
/****************************
Ejer12
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(){
unsigned char i,j;
TRISA=0b11111;
TRISB=0b00000000;
PORTA=0b00000;
inicio: for(;;){
for (j=1;j<=6;j++){
PORTB=j;
i=PORTA;
if ((i&0b00010)!=0) goto para;
}
}
para:
for(;;){
i=PORTA;
if ((i&0b00010)==0) goto inicio;
}
}
/****************************
Ejer13
B1 un pitido
*****************************/
#include <pic.h>
main(){
unsigned char i;
TRISB=0b00000000;
for(;;){
PORTB=0b00000001;
for (i=1;i<=10;i++) continue;
PORTB=0b00000001;
}
}
Si no se
quiere utilizar transistores, hay que conectar un
altavoz de poca potencia, pues el PIC no tiene
mucha corriente de salida, por ejemplo, el
altavoz pequeño de un ordenador:
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
1.- INTRODUCCIÓN MICROPROCESADOR 8085
1.1.- El 8085 dentro de los tipos de microprocesadores que hay
Microfoto
grafia de
PentiumM
ver el
espacio de
L2
En esta tabla tienes un resumen de los tipos de microprocesadores que existen
Fab Tipo
Nombre
PPS-4
4bits
Intl
4004
Mot
6500
8bits no
Zlg
Z80
PC
8085
DB
AB
4
8
1971
16
Actualmente en Automatas
1972 1 a 4 Antiguos Amstrad, Atary hoy en día en Gameboy
Actualmente en Automatas
8086
8
Rock
PC
Intel
286
386
486
8
8088
16
286
386SX
16
16
386DX
32
486SX
486DX
486DX2
20
24
32
32
486DX4
Pentium
32
Pentium
Intel
Pent PRO
año
1993
1997
64
36
PentiumII
-1
En calculadoras programables 28K transistores
1978 4.77
a
1979
8
1982 8-12
1988 16/20
20/2
1985
5/33
1991
33
1989
1991 66
75/
1992
100
1996
Pent MMX
MHz Observaciones
1997
Celeron
1997
Xeon
1997
Pentium III
1999
Primeros PC XT compatibles IBM hasta 1M RAM
coprocesador:8087
PC AT hasta 16M deRAM coprocesador 287
“ Coprocesador 387 275K transistores
“
1.2M transistores sin coprocesador Soket3
Con Coprocesador incluido Soket3
“ Obligatorio uso del ventilador
Tecnología 3.3V x3 (fext=33.3MHz) L1=16K
3M transistores integrados Soket5
75 a
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
a
L1 = 16K L2=256k a 1M
200 L2 en el mismo encapsulado
166 Instrucciones MMX Multimedia con reg. Esp.
a
L1=32K x 2.5 x3 x3.5 L2 externa
233 Socket 7 4 con volt=2.8V y 3.3Vcore
233 =PentMMX + PentPRO Slot1 Volt=3.3V
a
Fext=66MHz / 100MHz
450 L1=32K L2=256K / 512K
“
= PentMMX en Slot1=PII sin L2
400
L2=1M
a
Volt=2.5V Vcore=2V Fext=100MHz x4 / x4.5
450
500 Fext=100MHz en slot1 y en socket7
PC Actuales :
Fab
Intel
AMD
Tipo
Pentium
Athlon
Nombre
Pent IV
Pent M
64FX
DB
AB
64
36
año GHz
2002
1-2
2004
1.3-1.6
2004
2.2
Observaciones
RDRAM Tecnologia 0.18 Instrucciones SSE2>MMX
L2=1M Vcore<1.5V Menor consumo, peso,espacio
Portatil Centrino=PentM+Chipset855+Wireless2100
Fext=400MHz Vcore=1.5V Socket940
L1=940K L2=M
4 Externamente igual que el 5 pero que tiene esas dos tensiones para aumentar el multiplicador
Problemas electrónica Digital
Profesor Javier Quintana
C
Fa
yri
b
x
Otros Fabricantes :
Tipo
Pent
386
Pentium
AMD
486
Nombre
C686
SX/DX
DX
DX2/DX4
DX4-100
DX5-133
AMDK5
AMDK6
K63DNOW
K6-III
K7
Athlon 4
DB AB
64 36
16/
32
32
año
1986
1992
32
32
64
36
MHz
80 a 150
1995
1996
1995
1996
1997
1998
1999
2001
Observaciones
<<Pentium Fext=40 a 75MHz!!!
<386 de Intel con menos consumo
40
50/66/80
100
133
75 a 166
166 a 300
266 a 400
450 a 600
400 a 800
1.1GHz
>486DX a 33MHz
=486DX2 de Intel
<486DX4-100
<486DX4-100
=Pentium
>Pentium MMX con Socket 7
<=Pentium II tiene L1=64K
<PentiumIII
>PentiumIII Fext=200MHz L1=128K L2=1M
=>Pentium IV
1.2 En resumen
Tipos de micros:
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
PIII
103$ 0,13 Socket A
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
Unidad Aritmetico
S Z AC P CY ... Flag (8) Lógica
B (8)
C (8)
D (8)
E (8)
H (8)
L (8)
registros auxiliares
U.C.
Unidad
Control
RI (8)
reg. de instruciones
SP (16) stack pointer puntero de pila
PC (16) contador del programa
Todos estan conectados entre si, y el 8085 tiene exteriormente 3 buses como
todos los microprocesadores (pero con tamaños diferentes):
D.B.
A.B.
C.B.
Nombre
Bus de datos
(data bus)
Bus de direcciones
(Adrress Bus)
Bus de Control
bits comentarios
8
conectado al R.I. desde este registro la U.C. lee las
instrucciones y las procesa.
16 conectado al PC indica la dirección de memoria del
programa que se esta leyendo.
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
Z
AC
P
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 ****
;colocación de los nº
;programa1
ORG 1000H
LDA 2000H
STA 2001H
LXI H, 2002H
MOV B,M
INX H
MOV M,B
END
todo lo que se escribe después de ; no se
ensambla, así que se puede utilizar como
comentarios.
ORG = organizar las siguientes líneas a
partir de la dirección en este caso 1000H
el programa se ha escrito a partir de la
dirección 1000H, carga el acumulador
(loadA) y lo almacena (storeA), para el
registro B hay que utilizar el registro M,
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 1
****
;************************************
ORG 2000H
MVI A,3FH
;A<=3F
STA 1500H
;***********************************
;****
EJERCICIO 2
****
;************************************
ORG 2000H
LXI H,1500H
;
MVI M,3FH
;[1500]<=3F
END
;***********************************
;****
EJERCICIO 3
****
;************************************
ORG 2000H
LDA 1500H ;A<=1500
STA 1501H ;1501<=A
END
;***********************************
;****
EJERCICIO 4
****
;************************************
ORG 2000H
LXI H,1500H
;M=1500
MOV B,M
;B<=M
; Podría ser cualquier registro
LXI H,1501H
;M=1501
MOV M,B
;M<=B
END
;***********************************
;****
EJERCICIO 5
****
;************************************
ORG 2000H
;Mover datos memoria
;[1503]<=[1500] Direccionamiento indirecto
LXI H,1500H
MOV B,M
LXI H,1503H
MOV M,B
; [1504]<=[1501] Direccionamiento directo
LDA 1501H
STA 1504H
;***********************************
;****
EJERCICIO 6
****
;************************************
ORG 200H
MVI A,12H
;A=12H
MVI B,0A3H
;B=A3H
ADD B
;A=A+B
STA 1500H;
;[1500]<=A
END
;***********************************
;****
EJERCICIO 7
****
;************************************
ORG 2000H
LDA 1500H
RAL
RAL
STA 1501H
END
;***********************************
;****
EJERCICIO 8
****
;************************************
; Es un programa muy parecido al anterior, pero que
;se tiene que realizar tantas veces como el contenido
;de 1501 mediante un bucle
[1502]=[1500]*2*2*2 ... [1501].....*2*2
;Se puede probar poniendo un 6 en 1500 y un 4 en
;1501HEn nuestro caso se almacenará
;6*2*2*2*2=96D=60H
;Cuando se utilizan ;bucles, saltos o subrutinas,
inicializar la pila LXI SP,3000H
;Programa
ORG 2000H
LXI SP, 3000H
LXI H,1501H
MOV B,M
LDA 1500H
;B=[1501]
;Cargo el nº de 1500
BUCLE: RAL
;x2
DCR B
;Decremento B
JNZ BUCLE
;Salto a bucle mientras no sea 0
STA 1502H
;Almaceno a 1502
END
;[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
INX H
MVI M,0H
INX H
MVI M,0H
END
;También se podría hacer MVI A,0H
STA 1501H STA 1502H
;Borro [1500]
;Borro [1501]
;Borro [1502]
STA 1500H
Página 128
Problemas electrónica Digital
Profesor Javier Quintana
;***********************************
;****
EJERCICIO 9
****
;************************************
;
ORGANIGRAMA
;
C <=FF
;
B <=[1500]
;
HL <=1000
;
[HL]<=B
;
HL<=HL + 1
;
C <= C - 1
;
¿NO ES 0? S
;
N
;
FIN
;************************************
ORG 2000H
LXI SP, 3000H
MVI C,0FFH
LDA 1500H
LXI H,1000H
OUT 00H
CALL PAUSA
JMP BUCLE
;Sacar por el puerto
;Hacer pausa
;Surutina Pausa
;Esta pausa entretiene al 8085 contando FF
;hasta 0
ORG 2500H
PAUSA: MVI B,0FFH
OTRO: DCR B
;Es una pausa muy corta
JNZ OTRO
RET
;Volver al programa principal
END
;A=[1500]
BUCLE: MOV M,A
;Rellena el dato [HL] con el contenido de A
INX H
;HL apunta al siguiente
DCR C
JNZ BUCLE
END
;Cuando ha acabado los FF es ;decir desde
1000 hasta 10FF acaba
;****************************************
;***
EJERCICIO 10
****
;************************************
; a hacerlo
;***********************************
;****
EJERCICIO 11
****
;************************************
;hacer un intermitente
ORG 2000H
BUCLE: MVI A,00000001B
;Encender el bit de menor peso
OUT 00H
;Sacar por el puerto 00
CALL PAUSA
;Hacer una pausa o si no no se aprecia
MVI A,0
;Apagar el bit
;***********************************
;****
EJERCICIO 12
****
;************************************
secuenciamiento del leds
ORG 2000H
MVI A,00000001B
;Encender el bit de menor peso
BUCLE: OUT 00H
;Sacar por el puerto 00
CALL PAUSA
;Hacer una pausa
RLC
;Corre el bit <=
JMP BUCLE
;Surutina Pausa
;Esta pausa entretiene al 8085 contando FF hasta 0
ORG 2500H
PAUSA: MVI B,0FFH
OTRO: DCR B ;Es una pausa muy corta
JNZ OTRO
RET
;Volver al programa principal
END
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
Direcc.Cod. Maq.
1000 31 FF 1F
1003 3E 00
1005 06 0A
1007 80 SUMAR:
1008 05
1009 C2 07 10
100C CD D5 04
100F 76
EQU 04D5H
Ensambl.
LXI SP,1FFFH
MVI A,00H
MVI B,0AH
ADD B
DCR B
JNZ SUMAR
CALL ACUMDISPLAY
END
¿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
Dirección
nombre8
04D5H
ACUMDISPLAY
044EH
TECLAACUM
041DH
MENSDISPLAY
04C9H
HLDISPLAY
descripción
El contenido del acumulador se visualiza en el display,
DISPLAY<=A
Carácter de consola al acumulador A<=TECLADO
Un mensaje que esta en memoria, que comienza en la
dirección apuntada por HL se visualiza en el display 9
DISPLAY<=[HL]
Visualiza los contenidos de HL en el display
DISPLAY<=HL
Display
nombre
manuales
Datos
UPDDT
no procede
RDKBD
direcciones
OUTPT
direcciones
UPDAD
Estas son las 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
00..09 0A..0F
10
11
12
13
14
15
8E
A3
A4
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
h
BB
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
PARALELO
Input/Ouput
PARALELO
Input/Output
jumper
J5
J6
J7
J2
J3
J4 (4-7)
J4 (0-3)
puerto
PA
PB
PC
PA
PB
PCH
PCL
Anchura
8 bits
8 bits
6 bits
8 bits
8 bits
4bits
4 bits
chip
81555 *
ref
U14
8255 *
U15
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
PB
I
I
O
PC
I
I
I
control
00H
01H
02H
Carácteres de control del 8255
PA
O
O
O
O
O
I
O
PB
O
I
O
I
O
O
O
PCH
O
O
O
O
I
O
I
PCL
O
O
I
I
O
O
I
control
80 82 81 83 88 90 89
A estos caráctes de control les falta una H al final.
POR EJEMPLO MVI A,01H
O
O
I
03H
I
O
O
I
91
I
I
O
0CH
O
I
I
O
8A
I
I
O
O
92
O
I
O
0DH
O
I
I
I
8B
I
I
O
I
93
I
O
O
0EH
I
O
I
O
98
I
I
I
O
9A
O
O
O
0FH
I
O
I
I
99
I
I
I
I
9B
;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
REGISTRO DE CONTROL
8155
20H
8255
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 1
****
;************************************
;CAPTAR Y VISUALIZAR UNA LETRA
;*******************SUBRUTINAS
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
TECLAACUM EQU 044EH ;A<=TECLA
;*****************PROGRAMA
ORG 0000H
;al traspasar el programa al P se incrementará en
;1000 automáticamente
LXI SP,10C8H
MVI A,08H
SIM
EI
BUCLE: CALL TECLAACUM
CALL ACUMDISPLAY
JMP BUCLE
END
;***********************************
;****
EJERCICIO 2
****
;************************************
;SUMA DOS NÚMEROS
; TECLA INT7.5 HACE LA SUMA ****
;**************************SUBRUTINAS
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
TECLAACUM EQU 044EH ;A<=TECLA
;****************************DATOS
***********************PROGRAMA
ORG 000H
LXI SP, 1FFFH
MVI A,08H
SIM
EI
BUCLE: CALL ACUMDISPLAY
STA 1500H
CALL TECLAACUM
CALL ACUMDISPLAY
STA 1501H
DAA
CALL TECLAACUM
JMP BUCLE
;Si no se pone, sin casi ver el 2º sumando
; pone el resultado
;se podría hacer con un pause
;, y así no utilizar la int7.5
;*******************SUMA
SUMA: LDA 1500H
MOV B,A
LDA 1501H
ADD B
DAA
CALL TECLAACUM
JMP BUCLE
;********************INT7.5
ORG 10CEH
JMP SUMA
END
;***********************************
;****
EJERCICIO 3
****
;************************************
;SUMA DOS NUMEROS
;, TECLA POST REALIZA SUMA*********
; Las teclas especiales tienen el siguiente código :
;
TECLA
CODIGO
;
EJEC PASO
15H
;
POST
11H
;
EJEC
10H
;
E REG
14H
;
GO
12H
; SM
13H
;*****************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
;***********PROGRAMA
ORG 000H
LXI SP, 1FFFH
MVI A,08H
SIM
EI
BUCLE:
CALL TECLAACUM
CPI 11H ;tecla post
JZ SUMA
STA 1500H
CALL ACUMDISPLAY
CALL TECLAACUM
CPI 11H
JZ SUMA
STA 1501H
CALL ACUMDISPLAY
JMP BUCLE
;Si no se pone, sin casi ver el 2º sumando
;pone el resultado
;*******************SUMA
SUMA: LDA 1500H
MOV B,A
LDA 1501H
ADD B
DAA
CALL ACUMDISPLAY
JMP BUCLE
END
Problemas electrónica Digital
Profesor Javier Quintana
;***********************************
;****
EJERCICIO 4
****
;************************************
;MENSAJE INTERMINTENTE
*;***********SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
MENSDISPLAY EQU 041DH ;DISPLAY<=[HL]
;****************************DATOS
ORG 0050H
MENSAJE:
DB 10H,00H,11H,0AH
;HOLA
BLANCO:
DB 15H, 15H, 15H, 15H
; **************************PROGRAMA
ORG 0000H
MVI A,08H
SIM
EI
BUCLE:
LXI H,MENSAJE
CALL MENSDISPLAY
CALL PAUSA
LXI H,BLANCO
CALL MENSDISPLAY
CALL PAUSA
JMP BUCLE
;******************************PAUSA
;Esta pausa tiene que ser larga
;porque sino no da tiempo a verse el mensaje
;Son dos bucles uno dentro del otro
;Bucle1 cuenta el C de A a 0
;Para cada cuenta del Bucle1 hay un ciclo del Bucle2
;que es el D que va de FF a 0
;Es decir A*FF=10*255=2550 cuentas
;***********************************
;
SUBRUTINA PAUSA
;***********************************
PAUSA:
MVI D,0FFH
BUCLE1:
MVI C,0A0H
BUCLE2:
DCR C
JNZ BUCLE2
DCR D
JNZ BUCLE1
RET;
;******** INTERRUPCION 7.5********
;Esta interrupción hace parar el micro
ORG 10CEH
EI ; tambien HLT
END
;***********************************
;****
EJERCICIO 5
****
;************************************
; CONTADOR *************
;**************************SUBRUTINAS
ACUMDISPLAY EQU 04D5H ;DISPLAY<=A
TECLAACUM EQU 044EH
;A<=TECLA
;****************************DATOS
*********************PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,08H
;Antes del bucle habría que asegurarse que DATO
;Tiene cargado un 00, y realmente es así DB 00H
SIM
EI
BUCLE: LDA DATO
INR A
STA DATO
;Hay que almacenar A pues la subrutina lo borra
CALL ACUMDISPLAY
CALL PAUSA
JMP BUCLE
;Falta añadir la subrutina PAUSA y la
interrupción 7.5 que serían igual que en el ejercicio 3
;***********************************
;****
EJERCICIO 6
****
;************************************
; DOS CONTADORES ************
;***************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
HLDISPLAY
EQU 04C9H
;DISPLAY<=HL
;************************PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,08H
SIM
EI
MVI A,00H
STA 1500H
LXI H, 0000H
SHLD 1501H
BUCLE: LDA 1500H
;A<=[1500]
INR A
;A=A+1
STA 1500H
;[1500]<=A ;almaceno el acumulador
; antes de llamar a la subrutina
CALL ACUMDISPLAY
LHLD 1501H ;H<=[1501]
L<=[1502]
INX H ;H=H+1
SHLD 1501H
; [1501]<=H [1502]<=L almaceno antes de llamar
CALL HLDISPLAY
CALL PAUSA
JMP BUCLE
;Falta 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 *
;**************************************
;**************************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
TECLAACUM
EQU 044EH
;A<=TECLA
;****************************DATOS
;************************PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,08H
SIM
BUCLE: EI
LDA 1500H
;A<=[1500]
INR A
;A=A+1
CPI 0AH
;Hace la resta A-0A
JNZ SIGUE
;Si A=0AH=10D entonces, borra A
;, si no sigue como estaba
MVI A,00H
SIGUE: STA 1500H
;[1500]<=A almaceno el acumulador
; antes de llamar ; a la subrutina
CALL ACUMDISPLAY
CALL PAUSA
JMP BUCLE
;Falta añadir la subrutina PAUSA y la
interrupción 7.5 que serían igual que en el ejercicio 4
;***************************************
;*EJER 8 LEER INTERPTORES A DISPLAY*
;***************************************
;***************SUBRUTINAS
ACUMDISPLAY EQU 04D5H
;DISPLAY<=A
;****************************************
;*
PUERTOS
*
;****************************************
;**************** PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,02H
OUT 20H
BUCLE: IN 21H
STA 1500H
CALL ACUMDISPLAY
LDA 1500H
JMP BUCLE
END
;***********************************
;****
EJERCICIO 9
****
;************************************
;
;**************** PROGRAMA
ORG 0000H
LXI SP,1FFFH
MVI A,0FH
OUT 20H
MVI A,80H
OUT 3BH
BUCLE: MVI A,11111111B
OUT 21H
OUT 22H
OUT 23H
OUT 38H
OUT 39H
OUT 3AH
CALL PAUSA
MVI A,00000000B
OUT 21H
OUT 22H
OUT 23H
OUT 38H
OUT 39H
OUT 3AH
CALL PAUSA
JMP BUCLE
;***********************************
;
SUBRUTINA PAUSA
;***********************************
PAUSA:
MVI D,0FFH
BUCLE1:
MVI C,0A0H
BUCLE2:
DCR C
JNZ BUCLE2
DCR D
JNZ BUCLE1
RET
END
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º
reloj
S1 PUERTO C 8255
puerto
OUT 3AH
semáfor
P1
G1
F1
o
bits
VR
VNR
VNR
2º
3º
4º
S2 PUERTO A 8255
OUT 38H
S3 PUERTO B 8255
OUT 39H
S4 PTO B DEL 8155
OUT 22H
P2
G2
F2
P3
G3
F3
P4
G4
F4
VR
VNR
VNR
VR
VNR
VNR
VR
VNR
VNR
El puerto A del 8155 (OUT 21H) se utilizará como entrada para poner los 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
El segundo sumando estará almacenado en las direcciones
El resultado y acarreo se almacenará en las direcciones
Comprobar el resultado
[1001] [1000]
+
[1003] [1002]
[1006] [1005] [1004]
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
Soluciones.
;***********************************
;****
EJERCICIO 1
****
;************************************
ORG 2000H
MVI A,25H
MVI B, A4H
ADD B
MVI B,05H
ADD B
STA 1500H
END
***********************************
;****
EJERCICIO 2
****
;************************************
;Datos
ORG 1000H
X
DB 12H
Y
DB 0A6H
RES
DB 45H
;Resultado : 68H
;Programa
ORG 2000H
LDA X
; A<=[1000]
;Equivale a LDA 1000H o LXI H,X
MOV A,M
LXI H,Y
; M<=[1001] Equivale a LXI H,1001H
ADD M
;A<=A+M
STA RES
;Equivale a STA 1002 o LXI H,RES MOV M,A
END
;***********************************
;****
EJERCICIO 3
****
;************************************
Sería añadir en los datos :
ACARR
DB 00H
y en el programa las siguientes líneas :
MVI A,0H
;A<=0 también con XRA A
ACI 0
;A<=A+0+CY Se carga el acarreo
STA ACARR
;Almacena el acarreo
;Probarlo con los números E6+CA = 160
;(1 de acarreo)
;***********************************
;****
EJERCICIO 4
****
;************************************
; [1003]= [1000]+ [1001]+ [1002] [1004]=Acarr
;Datos
ORG 1000H
DAT
DB 0C5H, 0A4H, 0C5H;Los sumandos
RES
DB 00H
;El resultado= 22EH
ACAR DB 00H ;El acarreo es 2 (22EH)
;Programa
ORG 2000H
STC
;con estas dos instrucciones
CMC
;borramos el acarreo CY=0
LXI H,DAT
;o LXI H,1000H ahora HL apunta al primer
;sumando
MOV A,M
;A=[1000]
INX H
;HL apunta al segundo sumando
ADD M
;A=A+[1001]
STA RES
;Guarda el resultado
MVI A,0
;A<=0 o XRA A
ACI 0
;A<=CY
STA ACAR
;Guarda el acarreo primero + segundo
LDA RES
;Recupero el resultado
INX H
;HL apunta al tercer sumando
ADD M
;A=A+[1002]
STA RES
;Almacena el resultado
LDA RES
;Recupero el acarreo
ACI 0
;A=A+0+CYel acarreo anterior con el nuevo
STA ACAR
;Guarda el acarreo
END
;***********************************
;****
EJERCICIO 5
****
;************************************
;
[1001] [1000]
;
+
[1003] [1002]
;
[1006]
[1005] [1004]
;Datos
ORG 1000H
XH
DB 0D5H
XL
DB 0B6H;Primer sumando D5B6H
YH
DB 3AH
YH
DB 5CH ;Segundo sumando 3A5CH
SUMH DB 00H
SUML DB 00H ;Resultado de la suma que en este
;caso será D5 B6+3A5C=1 10 12
ACAR DB 00H ;Acarreo (en nuestro caso será 01)
;Programa
ORG 2000H
STC
CMC
;CY=0
LDA XL ;A=XL
LXI H,YL
;M=YL
ADD M
;A=XL+YL
STA SUML
LDA XH ;A=XH
LXI H,YH
;M=YH
ADC M
;A=XH+YH aquí se suma con el acarreo
;posible de la anterior suma XL+YL
STA SUMH
MVI A,0 ;A=0
ACI 0
;A=CY
STA ACAR
END
;***********************************
;****
EJERCICIO 6
****
;************************************
****con registros dobles*****
;
[1001] [1000]
;
+
[1003] [1002]
;
[1006]
[1005] [1004]
;Datos
ORG 1000H
X
DB 0D5H, 0B6H ;Primer sum. D5B6H
Y
DB 3AH,5CH
;Segundo sum. 3A5CH
SUM
DB 00H, 00H
;Resultado de la suma
;en este caso será D5 B6+3A5C=1 10 12
ACAR DB 00H ;Acarreo (en nuestro caso será 01)
;Programa
ORG 2000H
LHLD X
XCHG ;DE=[1001] [1000]
LHLD Y ;HL=[1003] [1002]
DAD D ;HL=HL+DE
Página 143
Problemas de Electrónica Digital.
Puertas lógicas, Karnaugh
SHLD SUM
; [1005] [1004]=HL
MVI A,0
RAL
;Otra forma de cargar el
;acarreo, también podría haber sido ACI 0
STA ACAR
END
;***********************************
;****
EJERCICIO 7
****
;************************************
; en BCD [1002]=[1000]+[1001] [1003]=CY
;Datos
ORG 1000H
X
DB 58H
;En decimal =88
Y
DB 63H
;En decimal = 99
SUM
DB 00H
;En nuestro caso 58+63=66H que en decimal es 187
;luego se grabará 87
ACAR DB 00H ;En nuestro caso un 1 (187)
;Programa
ORG 2000H
STC
CMC
;CY=0
LDA X
;A=[1000]
LXI H,Y ;M=[1001]
ADD M
;A=[1000]+[1001]
DAA
;Ajuste a BCD
STA SUM
;Guardarlo en 1002
MVI A,0
ACI 0
STA ACAR
;Guardando el acarreo
END
;***********************************
;****
EJERCICIO 8
****
;************************************
; [1002]=[1000]*[1001]
;Para multiplicar lo que hay que hacer es ;sumar
tantas veces el nº Y
; ORGANIGRAMA
;
C <=[1000]
;
B <=[1001]
;
A <=0
;
A<= A+B
;
HL<=HL + 1
;
C <= C - 1
;
¿NO ES 0? S
;
N
; ALMACENAR RESULADOS FIN
; ejemplo :
;
C
B
A
;
3
4
0
;
2
4
;
1
8
;
0
12
;************************************
;Datos
ORG 1000H
X
DB 03;
; como lo diga X, se
;meterá en C y el A acumulará las sumas
Y
DB 06 ;
C=3
A=0
PROD DB 00 ;
C=2
A=6
;Programa
C=1
A=12D=0CH
LXI SP, 3000H; C=0
A=18D=12H
LDA X ;
FIN
CPI 0
;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
MVI A,0 ;A=0
LXI H, Y ;M=Y
BUCLE: ADD M
;A=A+Y
DCR C
;C=C-1
JNZ BUCLE
;Salta si no es 0
FIN:
STA PROD
;Guardar el resultado del producto
END
;***********************************
;****
EJERCICIO 9
****
;************************************
;división de dos números
;Aquí la división se hace viendo cuantas veces cabe Y
; ORGANIGRAMA
;
A<=[1000]
;
B <=[1001]
;
C <=0
;
A<= A - B
;
HL<=HL + 1
;
C <= C + 1
;
¿A>B? S
;
N
; ALMACENAR RESULTADOS FIN
; ejemplo :
;
C
B
A
;
0
3
14
;
1
11
;
2
8
;
3
5
;
4
2
;************************************
;Datos
ORG 1000H
X
DB 14D ;Dividendo
Y
DB 03D ;Divisor
COC
DB 00 ;
RES
DB 00 ;
;Programa
ORG 2000H;
LDA X
; A<B entonces FIN
CPI 0
JZ FIN;si el dividendo es 0 que vaya a fin
LXI H,Y
MOV B,M
CMP B
;CMP hace A-B
JM FIN ;Si B>A la resta es negativa
;luego que vaya a fin
MVI C,0
BUCLE: SUB B
;A=A-B
INR C
;C=C+1
CMP B
;CMP hace A-B
JP BUCLE
;Si no hay acarreo, es
;decir que la resta es positiva A>B, salta
FIN:
STA RESTO
;Almaceno el resto
MOV A,C
STA COC
END
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
;Programa
;A=06H=06D
C=5
ORG 2000H
;A=0BH=11D
C=4
LXI SP,3000H
;A=0FH=15D
C=3
LDA N
;A=12H=18D
C=2
MOV C,A
;A=14H=20D
C=1
MVI A,0
;A=15H=21D
C=0
FIN
BUCLE: ADD C
DCR C
JNZ BUCLE
STA RES
END
;***********************************
;****
EJERCICIO 11
****
;************************************
; Si X<Y entonces Z=X+Y Si X>Y entonces Z=X-Y
;Si X=Y entonces Z=Y
;Datos
ORG 1000H
X
DB 12H
Y
DB 22H
Z
DB 00H
;En este caso en Z se almacenará 12H+22H=34H
;Programa
ORG 2000H
LDA X
;A=X
LXI H,Y ;M=Y
CMP M ;Hace la comparación A-M =X-Y
JZ CASO3
JP CASO2
CASO1: ADD M
;A=A+M=X+Y
JMP FIN
CASO2: SUB M
;A=A-M=X-Y
JMP FIN
CASO3: MOV A,M
;A=M=Y
FIN:
STA Z
END
;***********************************
;****
EJERCICIO 12
****
;************************************
;Convertir BCD a HEX
;Datos
ORG 1000H
BCD
DB 01D,06D,04D
;El número BCD es el 164D que en Hex es A4H
HEX
DB 00
;Programa
ORG 2000H
MVI A,0
LXI BCD
MOV C,M
CENT: DCR C
JM FINCENT
;Si es negativo, que salte a hacer las decenas
ADI 64H ;A=A+100 pues 64H=100D
JMP CENT
FINCENT:INX H
MOV C,M
DEC:
DCR C
JM FINDEC
ADI 0AH
;suma 0AH=10D
JMP DEC
FINDEC: INX H
MOV C,M
UNI:
DCR C
JM FINUNI
ADI 01H
;suma 1
JMP UNI
FINUNI: STA HEX
;Almacenar el resultado
END
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)
TX ------------------------RX ------------------------GND -----------------------
En el PC (macho de 25 pines)
RX (3)
TX (2)
RTS (4) con CTS (6)
GNE (5)
DSR (7) con DTR (8)
Ejecutar el fichero DDT85 he indicar en qué puerto esta COM1 COM2 etc..., de esta forma se consigue
una 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
D1009,2A50
=Visualiza la memoria desde la dirección alta hasta la baja, ejem
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
0A5D
0A33
CI111
CO1
PRIMES
0AB7
04C9
0B74
037D
ADRD
UPDAD
DELAY
GTHEX
02BF
TODIR
Carácter de consola al acumulador
Del registro C al display
un mensaje que esta en memoria, que comienza en la
dirección apuntada por HL se visualiza en el display
el contenido de HL se visualiza en el display
“
retraso de 1 mseg
nº hex de 2 bytes ejem A725 desde el teclado, al display y
al registro DE
Idem que el anterior, pero sin visualizarlo
F
AF
AHLF
ABCF
TODOS
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)
void main( void )
{
int i;
for(i=0;i<=10;i++)
printf ("Hola");
}
Ensamblador para PC
push
ebp
mov
ebp,esp
push
ecx
Máquina para PC
00401010
00401011
00401013
mov
dword ptr [i],0
00401014
jmp
main(0x00401026)+16h
0040101B
mov
eax,dword ptr [i]
0040101D
add
eax,1
00401020
mov
dword ptr [i],eax
00401023
cmp
dword ptr [i],0Ah
00401026
jg
main(0x0040103b)+2Bh
0040102A
push
offset ___xt_z(0x00411a30)+104h
0040102C
call
printf(0x00401060)
00401031
add
esp,4
00401036
jmp
main(0x0040101d)+0Dh
00401039
mov
esp,ebp
0040103B
pop
ebp
0040103D
ret
0040103E
 En realidad el 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
74194 .............................................................. 29
74221 .............................................................. 54
Autómatas ........................................ 69
7442 .......................................................... 16, 17
B
7447 ................................................................ 17
B 122
7475 ................................................................ 29
BATH ........................................................... 146
7476 ...................................... Véase Biestable JK
BCD 16, 20, 22, 25, 27, 28, 38, 49, 50, 142, 144,
145
7483 ................................................................ 25
7485 ................................................................ 17
7490 ................................................................ 38
7491 ................................................................ 29
7493 ................................................................ 38
7494 ................................................................ 29
7495 ................................................................ 29
74LS139 ....................................................... 100
Biestable a partir de puertas lógicas ................ 31
Biestable D...................................................... 29
biestable D síncrono por flanco de subida ...... 31
biestable D síncrono por nivel ........................ 30
Biestable JK .................................................... 29
biestable JK síncrono por flanco de bajada ..... 30
biestable JK síncrono por los dos flancos ....... 30
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
contador del programa .................................. 121
GF FUNCIONES BÁSICAS INTEGRADAS
.................................................................... 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
master-slave .................................................... 30
MAXitérminos............................................ 5, 10
memorias ........................................................ 99
MENSDISPLAY .......................................... 132
microprocesadores ........................................ 119
MINitérminos ............................................. 5, 10
monoestable con puertas NAND .................... 54
monoestables .................................................. 54
Morgan ........................................................... 14
MORGAN ...................................................... 10
PentiumII ...................................................... 119
Periféricos ..................................................... 134
pila ................................................................ 122
PIPO ................................................................ 29
PISO ................................................................ 29
Plano de funciones ........................................ 74
Portón corredizo .............................................. 96
PROM .......................................................... 102
puerta automática ...................................... 79, 82
Puerta automática ............................................ 94
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

Documentos relacionados