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