Professional Documents
Culture Documents
Temporizadores y
Contadores
Por Luis D. Urdaneta G.
Temporizadores y Contadores
Para un evento que deba realizarse cada segundo bastará con un con- teo
inicial hasta 23040, ejecutar la tarea, reiniciar el T/C y repetir 40 veces la
cuenta de 23040, debido a que 40x 0.025000461 = 1.000001664
4
Temporizadores y Contadores
Timers como contadores de eventos
Los timers del 8051 pueden usarse también como contadores. En este
caso no se incrementan cada ciclo de máquina sino que lo hacen
como respuesta a una transición de 1 a 0 en el terminal externo de
entrada del temporizador T0 (P3.4) o T1 (P3.5).
En este modo de operación la entrada externa es examinada durante
la fase 2 (F2) del estado S5 de cada ciclo de máquina. Cuando la
prueba muestra un alto en un ciclo y un bajo en el siguiente el registro
del timer es incrementado. La nueva cuenta será registrada durante
F1S3 del ciclo siguiente a aquel cuando la transición fue detectada. Al
requerirse 24 estados para reconocer la transición de 1 a 0, la
velocidad máxima de conteo es 1/24 de la frecuencia de reloj. En el
modo temporizador este valor es 1/12 de la frecuencia de reloj.
5
Temporizadores y Contadores
6
Temporizadores y Contadores
7
Temporizadores y Contadores
Timers T0 y T1
El circuito de la figura muestra los componentes fundamentales de T0
y T1.
9
Temporizadores y Contadores
Los registros internos contadores TH1 TL1 (TH0 TL0) pueden ser de
8, 13 o 16 bits de acuerdo con el modo de operación programado para
el timer.
Después de los registros se encuentra el flip flop del bit de bandera
TF1 (TF0) del registro TCON, el cual notifica el desbordamiento del
contador.
Por último, si la interrupción correspondiente está habilitada, se gene-
rará una solicitud de interrupción al microcontrolador.
10
Temporizadores y Contadores
11
Temporizadores y Contadores
12
Temporizadores y Contadores
13
Temporizadores y Contadores
14
Temporizadores y Contadores
Modo 0: Temporizador/contador de 13 bits
Poniendo los bits M1M0=0 en el registro TMOD se selecciona el modo
de operación cero para los timers T0 y T1.
16
Temporizadores y Contadores
17
Temporizadores y Contadores
Programa 7
18
Temporizadores y Contadores
20
Temporizadores y Contadores
7692
240.375
32
7692 ( 240 32 ) ( 0.375 32 ) ( 240 32 ) 12
7692 ( F 0 H ) 32 0CH
21
Temporizadores y Contadores
22
Temporizadores y Contadores
23
Temporizadores y Contadores
24
Temporizadores y Contadores
25
Temporizadores y Contadores
26
Temporizadores y Contadores
+5V
C3 C2
+5V 33pF X1 33pF
D1
U1 U2:A LED-RED
CRYSTAL
19 39 1 2
R1
12 MHz XTAL1 P0.0/AD0
38
P0.1/AD1 220
37
P0.2/AD2 7406
18 36
XTAL2 P0.3/AD3
C1 P0.4/AD4
35
10uF 34
P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
21
P2.0/A8
R2 P2.1/A9
22
8.2k 23
P2.2/A10
29 24
PSEN P2.3/A11
30 25
ALE P2.4/A12
31 26
EA P2.5/A13
27
P2.6/A14
28
P2.7/A15
1 10
+5V P1.0 P3.0/RXD
2 11
P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
27
Temporizadores y Contadores
28
Temporizadores y Contadores
Programa 8
29
Temporizadores y Contadores
+5V
C3 C2
+5V 33pF X1 33pF
D1
U4 U1:A LED-RED
CRYSTAL
19 39 1 2
R1
12 MHz XTAL1 P0.0/AD0
38
P0.1/AD1 220
37
P0.2/AD2
18 36
XTAL2 P0.3/AD3
C1 P0.4/AD4
35
10uF 34
P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
21
P2.0/A8
R2 P2.1/A9
22
8.2k 23
P2.2/A10
29 24
PSEN P2.3/A11
30 25
ALE P2.4/A12
31 26
EA P2.5/A13
27
P2.6/A14
28
P2.7/A15
1 10
+5V P1.0 P3.0/RXD
2 11
3
P1.1 P3.1/TXD
12
INICIO
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
30
Temporizadores y Contadores
31
Temporizadores y Contadores
32
Temporizadores y Contadores
Este código fue usado para medir un pulso de ancho 2.453 ms. El
valor retornado en R1-R2 fue de 4C15H, el cual corresponde al
número de 13 bits (en formato del modo 0) de 0995H = 245310
33
Temporizadores y Contadores
34
Temporizadores y Contadores
Modo 1: Temporizador/contador de 16 bits
Este modo es igual que el anterior excepto que TL0 (TL1) tiene 8 bits,
por lo cual la cuenta se extiende hasta 65535 (FFFFH), permitiendo
retardos de mayor duración.
35
Temporizadores y Contadores
36
Temporizadores y Contadores
37
Temporizadores y Contadores
38
Temporizadores y Contadores
releer:
releer: mov
mova,TH1
a,TH1
mov
movr1,TL1
r1,TL1
cjne
cjnea,TH1,releer
a,TH1,releer
……
39
Temporizadores y Contadores
Programa 9
40
Temporizadores y Contadores
R1 5.6K
-12V
U1
7
1
U3
12 4 3
P2.0 A8 IOUT +
11 6 Vs
P2.1 A7
10 2
P2.2 A6 -
9 2
P2.3 A5 IOUT
8 LM741N
P2.4 A4
7
P2.5 A3
4
5
6
P2.6 A2
5 16
P2.7 A1 COMP
14
VR+ -12V
15
VR- C1
R3 R4 DAC0808 100n
5.6K 5.6K
-12V
+5V
Generador de señal
+5V
+5V
+5V
R6 R6
R6 2.2K 2.2K
2.2K
U4A
R5 S1 S2 S3
1 2
P1.7 P1.1 P1.0
200
C1 74LS14
10u
42
Temporizadores y Contadores
43
Temporizadores y Contadores
44
Temporizadores y Contadores
Para que la frecuencia seleccionada sea la misma para todos los tipos
de ondas, es necesario generar el mismo número de muestras por
ciclo y escribir una muestra cada T/n, donde T es el periodo de la
forma de onda. Se desea una amplitud de la salida de 5.0 V (4.98 V)
con 128 muestras por ciclo. Con la señal seno no hay problema en
usar una tabla de 64 valores (medio ciclo) y con la onda cuadrada
basta con escribir 64 muestras en nivel bajo y otras 64 en alto. Pero
en el caso de la forma de onda triangular, para obtener la amplitud
deseada, la señal debe variar entre 0 y FFH cada medio ciclo, lo cual
equivale a 512 muestras por ciclo.
45
Temporizadores y Contadores
Para ajustar el número de muestras a 128, se carga (para la
pendiente positiva) en el DAC los valores 0,4,8,0CH,…,FCH,…
0CH,8,4,0; lo cual representa 64 muestras en el semiciclo ascendente
y 64 muestras en el descendente. Como resultado la amplitud se
reduce a 4.93 V. Para que toda salida tenga igual amplitud se ajusta la
tabla de valores de la onda seno y el valor de del nivel alto de la onda
cuadrada. En el caso de la señal diente de sierra se carga a la entrada
del DAC la secuencia 0,2,4,5,8,0AH,…,0FEH para 128 muestras por
ciclo.
El código del generador consta de un programa principal para detectar
el tipo y frecuencia de la onda y generar la señal correspondiente y
dos subrutinas: una que escribe el valor digital de la muestra en el P2,
cada vez que el temporizador T1 alcanza el final de la cuenta y la otra
para control de T0. 46
Temporizadores y Contadores
47
Temporizadores y Contadores
48
Temporizadores y Contadores
49
Temporizadores y Contadores
50
Temporizadores y Contadores
51
Temporizadores y Contadores
52
Temporizadores y Contadores
53
P[27..20]
R3
Temporizadores y Contadores
+5V 5k
-12V
+5V
R1 U2
5k
4
5
33pF C2 U1 2
P27 5 14 6
33pF A1 VREF+
P26 6 3
A2
X1 P25 7 15
U3 P24 8
A3 VREF-
A4
7
1
19 39 P23 9 4
XTAL1 P0.0/AD0 A5 IOUT LM741
38 P22 10
P0.1/AD1 A6 salida
37 P21 11 16
CRYSTAL P0.2/AD2 A7 COMP
18 36 P20 12 3
XTAL2 P0.3/AD3 A8 VEE
C5 P0.4/AD4
35
10uF 34 DAC0808
RST P0.5/AD5
33 R2
P0.6/AD6 +12V
9 32 5.6k
RST P0.7/AD7
21 P20 C1
f--
31 26
EA P2.5/A13
PROTEUS
27 P26
2k P2.6/A14
28 P27
P2.7/A15
1 10
P1.0 P3.0/RXD
2 11
P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0
f++
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
+5V
80C51 R10
48k
-12.0V
R4 U5:A
11
2.2k
R8 A
ONDA U4:A salida
2
10k 1
1 2 3
B
74LS14
4
R9 LM324
C4
10uF 10k
RV1
100k
+12V
54
-2.45
Temporizadores y Contadores
55
Temporizadores y Contadores
Modo 2: Temporizador/contador de 8 bits con auto recarga
En este modo se configura el registro interno como un contador de 8
bits (TL1 o TL0) con recarga automática. El desbordamiento del
contador además de activar la bandera TF1 (TF0), recarga TL1 (TL0)
con el contenido de TH1 (TH0), iniciándose un ciclo nuevo de conteo.
56
Temporizadores y Contadores
57
Temporizadores y Contadores
Programa 10
58
Temporizadores y Contadores
59
Temporizadores y Contadores
60
Temporizadores y Contadores
61
Temporizadores y Contadores
+5V
R3
3.3K
+5V Q1
BC160
R5
R2 1k R4 1
U1 3.3K
31 39 LS1
EA/VP P0.0 38
19 P0.1 37
X1 P0.2 36
Y1 P0.3 35
18 P0.4 34
X2 P0.5 33
C4 C5 P0.6 32
12 mHz P0.7
30pf 30pf 9
RESET 21
P2.0 22
C6 10uf 12 P2.1 23 +12V
13 INT0 P2.2 24
+5V INT1 P2.3
14 25
15 T0 P2.4 26
T1 P2.5 27
R1 1 P2.6 28
RESET
2 P1.0 P2.7 R7
8.2K 3 P1.1 17 PARAR INICIO
4 P1.2 RD 16 1k
5 P1.3 WR 29
6 P1.4 PSEN 30 Q5
7 P1.5 ALE/P 11 BC184
8 P1.6 TXD 10 Q2
P1.7 RXD TIP31
80C51
R8 Q3 M1
Q4 TIP32
BC184
1k
62
Temporizadores y Contadores
63
Temporizadores y Contadores
64
Temporizadores y Contadores
65
+5V
R2
3.3k
C2 C1
Temporizadores y Contadores Q1
BC160
+5V 33pF X1 33pF
U1
CRYSTAL
12 MHz
19
XTAL1 P0.0/AD0
39 R4
38 1
P0.1/AD1
37
P0.2/AD2
18
XTAL2 P0.3/AD3
36 R3
C3 P0.4/AD4
35 3.3k
10uF 34
P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7 LS1
21
P2.0/A8
R6 P2.1/A9
22
8.2k 23
Simulación del
P2.2/A10
29 24
PSEN P2.3/A11
R7 30 25
ALE P2.4/A12
31 26
EA P2.5/A13
27
10k P2.6/A14
28
P2.7/A15 +12V
Programa 10 con
1 10
P1.0 P3.0/RXD
2 11
+5V P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
6
P1.4 P3.4/T0
15 PARAR INICIAR R5
P1.5 P3.5/T1
PROTEUS
7 16 1k
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
Q5
BC184
Q2
TIP31
BAJAS U2:A
1
0 3
2
ALTAS
74LS32 R1 Q4 Q3
BC184 TIP32
0 1k
66
Temporizadores y Contadores
67
Temporizadores y Contadores
68
Temporizadores y Contadores
69
Temporizadores y Contadores
70
Temporizadores y Contadores
71
Interrupciones
Interrupciones
73
Interrupciones
74
Interrupciones
75
Interrupciones
Las
Lastareas
tareasque
quesiguen
siguenaauna
unainterrupción
interrupciónson
sonlas
lassiguientes:
siguientes:
76
Interrupciones
77
Interrupciones
jnb TF1,saltar
clr TF1
mov a,P1
saltar: …
Considere que aparte de la instrucción jnb (2 ciclos) que prueba TF1 y
determina si el salto debe realizarse, el resto del programa consume
98 ciclos de máquina. Esto significa que, en total nuestro, código
requiere 100 ciclos de máquina por cada paso.
Debido a que TF1 se activa cada 50000 µs, se ejecutarán 500
instrucciones jnb antes que la prueba de TF1 tenga éxito. Sumando a
esto los 3 ciclos de máquina del código que lee el puerto y limpia a
TF1, se obtiene un total de 1003 ciclos de instrucción invertidos en
detectar el desborde del temporizador y ejecutar la lectura de P1.
78
Interrupciones
Para evitar tener que examinar el estado de TF1 en cada paso del
lazo del programa, se puede programar al 8051 para que pruebe TF1
automáticamente en segundo plano y ejecute un salto a una subrutina
cada vez que TF1 conmute a nivel alto. La RSI necesaria sería:
79
Interrupciones
80
Interrupciones
81
Interrupciones
82
Interrupciones
83
Interrupciones
85
Interrupciones
Habilitación de interrupciones
86
Interrupciones
87
Interrupciones
setb EA
setb ET0
90
Interrupciones
91
Interrupciones
92
Interrupciones
93
Interrupciones
94
Interrupciones
Reglas para cuando se asigna prioridad a las interrupciones:
1. Una interrupción con prioridad alta puede interrumpir a otra con
prioridad baja.
2. Las interrupciones de prioridad alta no pueden interrumpir a otra
de igual prioridad.
3. Una interrupción de prioridad baja solo puede ejecutarse cuando
ninguna interrupción está en curso.
4. Si dos solicitudes se generan en el mismo momento, primero será
ejecutada la de prioridad alta. Si tienen la misma prioridad, se
aceptará primero aquella que le corresponda según las
prioridades establecidas en la secuencia de consulta.
95
Interrupciones
96
Interrupciones
97
Interrupciones
Proceso de interrupción:
• El contenido del PC es cargado en la pila.
• Las interrupciones de igual o menor prioridad son deshabilitadas.
• Las banderas TF0 y TF1 son puestas a cero, cuando las
interrupciones son generadas por los timers.
• Se transfiere el control del programa a la rutina de servicio.
• Al final de la RSI, la ejecución de una instrucción RETI restaura el
contenido del PC.
• El estado de las interrupciones es restaurado al estado anterior a
la ocurrencia de la interrupción.
98
Interrupciones
Protección de registros
Cuando se retorna desde la rutina RSI hacia el código que se
ejecutaba cuando ocurrió la interrupción, el procesador debe ser
restaurado al estado pre-interrupción. Es responsabilidad del
programador salvar todo registro cuyo contenido deba ser preservado.
Típicamente los registros que requieren eventual protección son:
• PSW
• DPTR (DPH/DPL)
• Acc
•B
• R0-R7
99
Interrupciones
100
Interrupciones
La interrupción del puerto serie
jnb RI,exam_TI
mov a,SBUF
clr RI
exam_TI: jnb TI,listo
clr TI
mov SBUF,a
listo: reti
El código examina ambas banderas y procede de acuerdo con cual
está activa. Si ambas lo están, ejecutará ambas secciones de código.
Es obligatorio que la RSI limpie las banderas TI y RI.
102
Interrupciones
Programa 11
Usando las interrupciones de los timers debe generarse en P0.1 un
tren de pulsos con ciclo de trabajo de 25 % y frecuencia 10 KHz.
Simultáneamente debe parpadear un LED conectado a P0.0
103
Interrupciones
104
Interrupciones
105
Interrupciones
106
+5V
+5V
C2
33pF X1
C1
33pF D1 Interrupciones
LED-RED
U1 U2:A
CRYSTAL
19 39 1 2
R1
12 MHz XTAL1 P0.0/AD0
38
P0.1/AD1 330
37
P0.2/AD2 7406
18 36
XTAL2 P0.3/AD3
C3 P0.4/AD4
35
10uF 34
P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7 A
21
P2.0/A8
R6 P2.1/A9
22
8.2k 23
P2.2/A10 B
29 24
PSEN P2.3/A11
R7 30 25
ALE P2.4/A12
31 26
Simulación con
EA P2.5/A13
27
10k P2.6/A14
28
P2.7/A15
1 10
P1.0 P3.0/RXD
2 11
+5V P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0
PROTEUS
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
107
Interrupciones
Onda generada en P0.1
108
Interrupciones
Programa 12
109
Interrupciones
110
Interrupciones
111
Interrupciones
112
Interrupciones
Conversión análogo digital
114
Interrupciones
FUNCIONES CON MUESTRAS IGUALES
115
Interrupciones
fs ≥ 2fH
fs: frecuencia de muestreo
fH: frecuencia más alta en la señal que se muestrea
117
Interrupciones
118
Interrupciones
119
Interrupciones
120
Efecto Aliasing
TT1 <<TT2
1 2
La
La forma
forma de de onda
onda
de
de f(t)
f(t) tiene
tiene com-
com-
ponentes
ponentes de de fre-
fre-
cuencia
cuenciapor porencima
encima
de
de 1/2T
1/2T2 2 pero
pero no
no
sobre
sobre1/2T
1/2T1. .
1
121
Interrupciones
5.6k R2
-12V
4
U2
12 4 2 5
P0.0 A8 IOUT - OS2
11
V-
P0.1 A7
10 6
P0.2 A6 OUT SAL
9 2
P0.3 A5 IOUT
8 3 1
P0.4 A4 + OS1
V+
7
P0.5 A3
6 U3 LM741/NS
P0.6 A2
5 16
P0.7 A1 COMP
7
R4 5.6k
14
+5V VR+ +12V
15 100n C1 SEL
VR-
P2.6
R5 5.6k DAC0808
+12V -12V
U6
LED
1
2
U5A
3 U1 330
ENT +
5 26 17 1 2
IN0 D0 P1.0 P2.4 +5V
8 27 14
P2.7 - IN1 D1 P1.1
28 15 D1
IN2 D2 P1.2
LF398 1 8 7406 R6
IN3 D3 P1.3
2 18
IN4 D4 P1.4
4
6
7
3 19
IN5 D5 P1.5
+5V 4 20
-12V IN6 D6 P1.6
5 21
IN7 D7 P1.7
1n
C2 12 25
16 REF+ A0 24
REF- A1 23
10 A2
CLK CLK 6
START P2.0
9 22
7 OE ALE
EOC
No se muestra el filtro pasa bajo anti-aliasing
ADC0808
U4A ni el filtro PB de salida. El diagrama completo
+5V puede verse en el esquematico para simulación
2 1
INT0 en PROTEUS.
74LS04
122
Interrupciones
123
Interrupciones
124
Interrupciones
125
Interrupciones
126
C7
0.002uF
+5V
R7
R3 22k
5.6k
C4 C3 R1
33pF 33pF 5.6k -12V
Interrupciones
-12V
X1 U2 U1
19
XTAL1 P0.0/AD0
39 5
A1 VREF+
14 U7:A
38 6 R2 U5
11
P0.1/AD1 A2
37 7 15 SAL
4
5
CRYSTAL P0.2/AD2 A3 VREF-
18 36 8 2
12 MHz XTAL2 P0.3/AD3 A4 5.6k
35 9 4 2 R9 R8 1
+5V +5V P0.4/AD4 A5 IOUT
34 10 6 3
C5 P0.5/AD5
33 11
A6
16 3
P0.6/AD6 A7 COMP 1k 1k LM324
9 32 12 3
RST P0.7/AD7 A8 VEE LM741
C6
4
C2
7
1
10uF 21 DAC0808 0.067uF
P2.0/A8
R6 P2.1/A9
22 LED 0.1u
R5 1k P2.2/A10
23 S/H U3(START)
8.2k 29 24
PSEN P2.3/A11 +12V
30 25 R9(1)
ALE P2.4/A12 LED +12V
31 26
EA P2.5/A13
27
P2.6/A14 SEL
28
P2.7/A15 S/H
-12V +5V
1
P1.0 P3.0/RXD
10 U4:A
2 11
P1.1 P3.1/TXD
3 12 2 1
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0 74LS04
6 15
P1.5 P3.5/T1
7
P1.6 P3.6/WR
16 R4
8 17 220
P1.7 P3.7/RD
ENT_ADC
80C51
SEL
SEL
U3(CLOCK)
U3
ENT_ADC
26
IN0 CLOCK
10 D1
27 6 LED-GREEN
IN1 START
Simulación con
28 U3(EOC)
IN2
1
IN3 EOC
7 U6:A
2
IN4
3 21 2 1
IN5 OUT1 LED
4 20
IN6 OUT2
5 19
IN7 OUT3 7406
18
OUT4
25 8
ADD A OUT5
24 15
ADD B OUT6
23 14
ADD C OUT7
22 17
PROTEUS
ALE OUT8
+5V
12
VREF(+)
16 9
VREF(-) OE
ADC0808
+5V
C9
0.002uF
R10
22k
-12V
S/H
U7:B SUB1
11
ENT
S/H
6
Y ENT_ADC
R12 R11 7
A
5
1k 1k SAMPLE/HOLD
LM324
C8
127
4
ENT 0.067uF
+12V
Interrupciones
PROTEUS no tiene
SW1
DSWITCH Y
A
modelos para
SAMPLE/HOLD.
S/H C1
10nF
Señal de entrada
Interrupciones
Señales de entrada y
salida
Interrupciones
Señales de control
137
Interrupciones
139
Interrupciones
140
Interrupciones
+5V
C11 RV2
-12V
47%
10uF
100k
C6
10uF
C13
R1 R2
R6
10k 100k 10k 0.002uF
-12V
U1:B
U1:A
11
11
Vi
6
2 R3 R4 R5 7
ESH
1 ic=0 5
3
46%
4
47k
LM324
4
C8 0.0022uF C9
10uF
C7
10uF
+12V 141
ETAPA DE ENTRADA +12V
Interrupciones
+5V
RV1
53%
10k
R17 R18
C12 470k 470k
-12V
-12V
0.002uF
U1:D
U1:C
11
11
13
9 R15 14
Vo
R13 R14 8 12
10 10k
SDAC
10k 10k
4
LM324
R16
4
LM324
0.0028uF C10 10k
143
+5V
R10
5.6k
C4 C3 R8
Interrupciones
33pF 33pF 5.6k
-12V
X1 U3 U2
19 39 5 14
XTAL1 P0.0/AD0 A1 VREF+
P0.1/AD1
38 6
A2 R9 U6 SUB3
37 7 15
4
5
CRYSTAL P0.2/AD2 A3 VREF-
18 36 8 SAL
12 MHz XTAL2 P0.3/AD3 A4 5.6k
35 9 4 2
+5V +5V P0.4/AD4 A5 IOUT
34 10 6
C5 P0.5/AD5
33 11
A6
16 3
SDAC Vo
P0.6/AD6 A7 COMP
9 32 12 3
RST P0.7/AD7 A8 VEE LM741
C2
7
1
10uF 21 DAC0808
P2.0/A8
R12 P2.1/A9
22 0.1u ETAP_SAL
R11 1k P2.2/A10
23
8.2k 29 24
PSEN P2.3/A11
30 25
ALE P2.4/A12 +12V
31 26
EA P2.5/A13
27
P2.6/A14
28
P2.7/A15
-12V
1
P1.0 P3.0/RXD
10 U5:A
2 11
P1.1 P3.1/TXD
3 12 2 1
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
Simulación en Proteus
5 14
P1.4 P3.4/T0 74LS04
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
U4(CLOCK)
U4
26 10
IN0 CLOCK
27 6
IN1 START
28
IN2
1 7
IN3 EOC
2
IN4
SUB1(Vi) 3 21
IN5 OUT1
4 20
SUB1 SUB2 5
IN6 OUT2
19
IN7 OUT3
18
S/H OUT4
25 8
Y ADD A OUT5
24 15
Vi ESH A ADD B OUT6
23 14
ADD C OUT7
SAMPLE/HOLD 22 17
ALE OUT8
+5V
12
VREF(+)
ETAP_ENT 16 9
VREF(-) OE
ADC0808
+5V
144
Interrupciones
Existen
ElEl 8051
Existen alal menos
8051 original fue
fue diseñado
menos
original catorce
catorce
diseñado por fabricantes
por Intel.. Las de
de microcon-
Las funciones
fabricantes
Intel funciones de
de 44 de
de los
microcon- los
primeros
primeros miembros
miembros de
de lalafamilia
familia MCS-51
MCS-51 son:
son:
troladoresM E basados
M O R I A IINN T E RyN A compatibles con el 8051,
troladores basados y compatibles con el 8051,
quie-
quie-
RSólo
nes
la
T IP O
nes producen
producen
empresa casi
C A P A C ID A D
casi
holandesa 300
300
Philipsversiones
versionesproduce del
del
Sólo la empresa holandesa Philips produce
O M E P R O M N IN G U N A C Ó D I G O R A M T IM E R S T E C N O L O G ÍA
dispositivo. 8 7 5 1 En8 0 3 1 el programa µVision M O S Keil
Hde
dispositivo.
8051
8051A H 8751A H
En el
8 0 3 1 A H 40
40 programa
4K
modelos.
modelos.
4 K
128
1 2 8
µVision
2
2 H
de
M O S
Keil
Software
8 0 5 2 A H 8 7 5 2 Ase
Software se
H encuentran
8encuentran
032A H 8K las
las2 5 6 especificaciones
especificaciones
3 HMOS de
de
cada
cada modelo. modelo.
80C 51B H 87C 51 80C 31B H 4K 128 2 CMOS
146
Versiones del 8051
Características del 80C552
• CPU 80C51.
• 8 K x 8 de ROM/EPROM con expansión externa hasta 64 K.
• 256 bytes de memoria RAM.
• 2 Timers/Contadores estándares de 16 bits.
• 1 Timer/Contador de 16 bits asociado a 4 registros de captura y 3
registros de comparación.
• 2 canales PWM.
• Convertidor A/D de 10 bits con 8 entradas multiplexadas.
• Salida para bus serie I2C.
• 5 Puertos de E/S de 8 bits más 1 compartido con entradas analógicas.
• Frecuencia de operación hasta 30 MHZ (80C552). 16 MHz (87C552).
147
µCTRL 80C552/87C552
61
2
57 7
AVDD
VDD
P0.0/AD0 P4.0/CMSR0
56 8
P0.1/AD1 P4.1/CMSR1
55 9
P0.2/AD2 P4.2/CMSR2
54 10
P0.3/AD3 P4.3/CMSR3
53 11
P0.4/AD4 P4.4/CMSR4
52 12
P0.5/AD5 P4.5/CMSR5
51 13
P0.6/AD6 P4.6/CMT0
50 14
P0.7/AD7 P4.7/CMT1
16 1
P1.0/CT0I P5.0/ADC0
17 68
P1.1/CT1I P5.1/ADC1
18 67
P1.2/CT2I P5.2/ADC2
19 66
P1.3/CT3I P5.3/ADC3
20 65
P1.4/T2 P5.4/ADC4
21 64
P1.5/RT2 P5.5/ADC5
22 63
P1.6/SCL P5.6/ADC6
23 62
P1.7/SDA P5.7/ADC7
39 3
P2.0/A8 STADC
40 4
P2.1/A9 PWM0
41 5
P2.2/A10 PWM1
42 6
P2.3/A11 EW
43 58
P2.4/A12 AVref-
44 59
P2.5/A13 AVref+
45
P2.6/A14
46 49
P2.7/A15 EA/VPP
47
PSEN
24 48
P3.0/RxD ALE/PROG
25 15
P3.1/TxD RST
26 35
P3.2/INT0 XTAL1
27 34
P3.3/INT1 XTAL2
28
P3.4/T0
29
P3.5/T1
30
AVSS
VSS1
VSS2
P3.6/WR
31
P3.7/RD
60
36
37
148
µCTRL 80C552/87C552
149
µCTRL 80C552/87C552
Organización de la memoria
150
µCTRL 80C552/87C552
El convertidor A/D
El 805552 incluye un CAD de 10 bits con 8 canales de entrada. Estas
son las especificaciones del CAD.
8 canales de entrada multiplexados (Puerto 5).
Resolución de 10 bits.
Modo de conversión de una muestra o continuo.
Disparo de conversión interno o externo.
Genera interrupción al final de la conversión.
151
µCTRL 80C552/87C552
152
µCTRL 80C552/87C552
154
µCTRL 80C552/87C552
155
µCTRL 80C552/87C552
Señales con modulación de ancho de pulso (PWM)
156
µCTRL 80C552/87C552
157
µCTRL 80C552/87C552
158
µCTRL 80C552/87C552
159
µCTRL 80C552/87C552
160
µCTRL 80C552/87C552
161
µCTRL 80C552/87C552
Programa 13
162
+5V
µCTRL 80C552/87C552
+5V
P7 P6 P5 P4 P3 P2 P1 P0
10k X 8
61
2
7 57
VDD
AVDD
P4.0/CMSR0 P0.0/AD0
8 56
P4.1/CMSR1 P0.1/AD1
9 55
P4.2/CMSR2 P0.2/AD2
10 54
P4.3/CMSR3 P0.3/AD3
11 53
P4.4/CMSR4 P0.4/AD4
12 52
P4.5/CMSR5 P0.5/AD5
13 51
P4.6/CMT0 P0.6/AD6
14 50
P4.7/CMT1 P0.7/AD7
1 16
P5.0/ADC0 P1.0/CT0I
68 17
P5.1/ADC1 P1.1/CT1I
67 18
P5.2/ADC2 P1.2/CT2I
66 19
P5.3/ADC3 P1.3/CT3I
65 20
P5.4/ADC4 P1.4/T2
64 21
P5.5/ADC5 P1.5/RT2
63 22
P5.6/ADC6 P1.6/SCL
62 23
P5.7/ADC7 P1.7/SDA
U1:A
R1 3 39
STADC P2.0/A8
2 3 4 40
SALIDA PWM PWM0 P2.1/A9
5.1k 5 41
PWM1 P2.2/A10
6 42
4050 EW P2.3/A11
58 43
AVref- P2.4/A12
+88.8 C4 59
AVref+ P2.5/A13
44
Volts 10uF 45
P2.6/A14
49 46
+5V
EA/VPP P2.7/A15
47
PSEN
48 24
ALE/PROG P3.0/RxD
15 25
RST P3.1/TxD
35 26
XTAL1 P3.2/INT0
34 27
XTAL2 P3.3/INT1
X1 P3.4/T0
28
29
P3.5/T1
30
RESET
AVSS
VSS2
VSS1
P3.6/WR
31
P3.7/RD
CRYSTAL
C3 C1 16 MHz C2 87C552
37
36
60
33pF 33pF
2.2uF
163
+5V
µCTRL 80C552/87C552
164
µCTRL 80C552/87C552
165
µCTRL 80C552/87C552
166
µCTRL 80C552/87C552
167
µCTRL 80515A
169
µCTRL 80C552/87C552
170
Modos de consumo reducido
171
Modos de consumo reducido
172
Modos de consumo reducido
173
Modos de consumo reducido
Para salir del modo Power Down, debe aplicarse un reset. Después de un
operación de reinicio se pierde el contenido de los FSR pero se preserva la
memoria de datos interna.
174
EL Puerto de
Comunicación Serie
Puerto serie
El 8051 incluye un puerto serie que hace posible la comunicación
unidireccional (half duplex) o bidireccional (full duples) en modo
sincrónico o asincrónico en sistemas punto a punto o punto a
multipunto.
Estas características simplifican la realización de redes de
microcontroladores con dispositivos de la familia MCS-51.
176
Puerto serie
177
Puerto serie
Configuración del Puerto Serie
Lo primero que debe hacerse para usar el puerto serie es indicarle al
8051: cuantos bits deseamos transmitir, la velocidad a usar, y como
esta debe ser determinada. Para esta tarea se usa el FSR SCON
(98H).
SCON
178
Puerto serie
SM0-SM1 Serial Mode Bits
Seleccionan 1 entre 4 modos de operación, como indica la tabla
abajo. También indican como se calcula la velocidad. En los
modos 0 y 2 es fijada por la frecuencia del reloj maestro, mientras
que en los modos 1 y 3 es variable, determinada por cuan a
menudo se sobrepasa el TIMER 1.
179
* *LaLavelocidad
velocidadindicada
indicadaesesduplicada
duplicadasisiPCON.7 (SMOD)eses11. .
PCON.7(SMOD)
Puerto serie
180
Puerto serie
181
Puerto serie
SM2 Serial Mode 2
Es una bandera para comunicación multiprocesador. Cuando un
dato es recibido el 8051 pone a 1 la bandera de recepción RI,
indicando al programa que un byte fue recibido y que debe ser
procesado. Cuando SM2 está activado, RI va a 1 sólo si el 9no bit
recibido es 1. Esto es útil en ciertas aplicaciones avanzadas de
transmisión serie.
182
Puerto serie
TI Transmit Interrupt
Cuando un programa escribe un dato al puerto serie, pasará cierta
cantidad de tiempo antes que los bits sean cargados al puerto. Si
el programa intenta enviar otro byte antes que el anterior sea
escrito, la información se perdería. Con TI en 1 el 8051 indica al
programa que el puerto serie está listo para enviar el próximo byte.
RI Receive Interrupt
Igual que TI, pero para recepción de datos serie.
184
Puerto serie
185
Puerto serie
Seleccionando la velocidad del Puerto Serie
Una vez configurado el modo del puerto serie, como se explicó
anteriormente, el programa debe seleccionar la velocidad de baudios.
Esto sólo aplica a los modos del 1 y 3. En los modos 0 y 2, la velo-
cidad es determinada en base a la frecuencia del oscilador 2.
187
Puerto serie
188
Puerto serie
189
Puerto serie
190
Puerto serie
Recepción por el puerto serie
Para recibir un dato una vez configurado el puerto serie, se lee el
registro FSR SBUF (99H), después que el 8051 haya activado la
bandera RI en SCON. Para que el programa espere por la recepción
de un carácter para cargarlo en el registro acumulador, puede usarse
el código siguiente:
jnb RI,$
mov a,SBUF
Por supuesto el µCtrl deberá esperar continuamente por el arribo de
un carácter. Cuando el UART recibe el bit de parada activa a RI. Este
modo de operación puede ser mejorado usando las interrupciones del
puerto serie. Más adelante se presentarán los ejemplos corres-
pondientes.
191
Puerto serie
192
Puerto serie
Programa 14
Escribir un programa que presente el siguiente menú en la pantalla.
193
Puerto serie
194
Puerto serie
195
Puerto serie
196
Puerto serie
197
Puerto serie
198