Está en la página 1de 7

LAB DE MICROPROCESADORES

Microcontroladores de la arquitectura 8051/8052

PRÁCTICA 7
Contador Hexadecimal y Sistema de Alarma

Objetivos
1. Contador hexadecimal de un digito. Uso de Tabla de búsqueda para la conversión de
binario a código de 7 segmentos.
2. Implementar un sistema de ALARMA basado en las especificaciones de
funcionamiento dadas por un diagrama de flujo funcional.
3. Implementar tonos para ALARMA.

Contenido
 Programa fuente de contador hexadecimal de un digito.
 Subrutina BIN7SEG.
 Diagrama de flujo funcional de sistema de ALARMA.
 Subrutina DELAY1.
 Subrutina DELAY2.
 Subrutina TONOS.
 Código de 7 segmentos para display tipo cátodo común.
 Conjunto de instrucciones en sitio web: http://www.8052.com/set8051
PRIMERA PARTE
Editar, ensamblar y simular contador hex de un digito
(CNTHEX.ASM)

El programa en lenguaje ensamblador para CNTHEX es:

; *************************************************************************
; Programa: CNTHEX.ASM
; Descripción: Contador hexadecimal de un digito. El conteo HEXADECIMAL se visualiza en
; Display de 7 segmentos en puerto P1. Se requiere tabla de conversión BIN a 7 SEGTS.
; El contador avanza con tecla PB conectada en la patita P0.7.
; Usa registro interno B como contador binario.
; MICC AT89C52.
; XTAL=12 MHz.
; *************************************************************************
CSEG AT 0x000
NOP
SETB P0.7; la patita P0.7 entrada (PB).
MOV A, #0
MOV P1, #0; puerto P1 salida
LCALL BIN7SEG; obtener código 7 segmentos
MOV P1, A; visualiza digito 0
APRETA_PB: JB P0.7, APRETA_PB; apretar tecla PB
LIBERA_PB: JNB P0.7, LIBERA_PB; liberar tecla PB
INC B; contador binario nibble bajo
ANL B, #0FH; limita conteo hasta 00001111.
MOV A, B
LCALL BIN7SEG ; convierte BIN a código 7 SEGTS.
MOV P1, A
SJMP APRETA_PB
;******************************************************************
; Subrutina BIN7SEG: Conversión BIN a código 7 segmentos
; Tipo de display: ánodo común
; Entrada: valor BIN, nibble bajo en registro A
; Salida: código de 7 segmentos en registro A
BIN7SEG: INC A ; A <---- A+1
MOVC A,@A+PC ; A <---- PC+A
RET ; Si A=1 PC apunta a DB 0C0H
; Tabla código de 7 segmentos para display tipo ánodo común.
DB 0C0H ; 0
DB 0F9H ; 1
DB 0A4H ; 2
DB 0B0H ; 3
DB 99H ; 4
DB 92H ; 5
DB 82H ; 6
DB 0F8H ; 7
DB 80H ; 8
DB 90H ; 9
DB 88H ; a
DB 83H ; b
DB 0C6H ; c
DB 0A1H ; d
DB 86H ; e
DB 8EH ; f
; ******Fin Tabla de Conversión ********************************************
END

REPORTE:
 Ejecute CNTHEX paso a paso.
 Obtenga el código de máquina y tamaño en bytes de las instrucciones siguientes:

LCALL BIN7SEG
MOV P1, A
JB P0.7, APRETA_PB
JNB P0.7, APRETA_PB
INC A
MOV A, @A+PC
RET

Construya en proteus el circuito mostrado abajo y verifique su funcionamiento.


El hardware para CNTHEX:
 Microcontrolador AT89C52.
 Una botonera (tecla).
 Resistor PULLUP.
 Resistor MINRES330R
 Un display de 7 segmentos tipo ánodo común.
 Un generador tren de pulsos para automatizar el conteo hexadecimal.

REPORTE
 Presente foto a color de CNTHEX funcionando.
 Muestre su trabajo al instructor.
CONTADOR HEXADECIMAL DE UN DIGITO
R8
PULLUP
U1
39 19
P0.0/AD0 XTAL1
38
P0.1/AD1
37
P0.2/AD2
36 18
Tecla PB 35
P0.3/AD3
P0.4/AD4
XTAL2
34
SW1 33
P0.5/AD5
P0.6/AD6
32 9
P0.7/AD7 RST
21
SW -SPDT-MOM
22
P2.0/A8
P2.1/A9
anodo comun
23
P2.2/A10
24 29
P2.3/A11 PSEN
25 30
P2.4/A12 ALE
26 31
P2.5/A13 EA
SW 1(NO) 27
P2.6/A14
28
P2.7/A15
R1
10 1
Tren de Pulsos 11
P3.0/RXD
P3.1/TXD
P1.0/T2
P1.1/T2EX
2
R2
R3
330R
12 3 R4
330R
P3.2/INT0 P1.2
13 4 R5
330R
P3.3/INT1 P1.3
14 5 R6
330R
P3.4/T0 P1.4
15 6 R7
330R
P3.5/T1 P1.5
16 7 330R
P3.6/WR P1.6
17 8 330R
P3.7/RD P1.7
AT89C52

Modifique CNTHEX.ASM para que funcione como contador BCD de un dígito.


 Llame al nuevo programa CNTBCD.ASM.
 Presente el listado de CNTBCD.ASM.
 Presente foto de CNTBCD funcionando en Proteus.
 Muestre esta modificación a su instructor.

; ********************************************************************************
SEGUNDA PARTE
Editar, ensamblar y simular ALARMA

El sistema ALARMA usa cuatro sensores que se conectan a las entradas P3.0, P3.1, P3.2 y
P3.3, que corresponden con bodega 1, bodega 2, bodega 3 y bodega 4 respectivamente.
Para efectos de esta práctica en lugar de los sensores se usa cuatro interruptores todos
normalmente cerrados, cuando cualquiera de estos interruptores se abre genera una
condición extraña que activa dos tonos en parlante conectado en las patitas P1.0 y P1.1. El
hardware y las especificaciones del software de ALARMA se describen a continuación:

Las especificaciones del programa ALARMA son:


 Las especificaciones de funcionamiento se establecen en el diagrama de flujo
funcional de ALARMA mostrado abajo.
 En esta segunda parte el estudiante implementa líneas de código en lenguaje
ensamblador para el diagrama de flujo funcional de ALARMA.
 Conjunto de instrucciones en sitio web: http://www.8052.com/set8051

El diagrama de flujo funcional de ALARMA es el siguiente:


Configurar
PORT P1 salida
PORT P3 entrada
PORT P2 salida

Leer PORT P3

Visualizar
“0”

Todos los
SI sensores P3 en
cero?

NO

BODEGA Visualizar
SI
#1? “1”

NO

BODEGA Visualizar
SI
#2? “2”

NO
NO

BODEGA Visualizar
SI
#3? “3”

NO

BODEGA Visualizar
SI
#4? “4”

Apagar alarma Activar


Boton
Visualizar “F” NO TONOS
TA=1
Salir con RESET

SI

Estructure ALARMA.ASM usando las subrutinas siguientes:

; ***********************************************************************
; TONOS: Esta subrutina genera alternadamente en la patita P1.0 un tono de
; 500 Hz y en la patita P1.1 un tono de 1000 Hz. Usa XTAL=12 MHz.
; ***********************************************************************
TONOS: MOV R3,#200D ;repite 200 veces
MOV P1, #00H ; P1 salida
L1MS: SETB P1.0
LCALL DELAY1 ; retardo de 1 ms.
CLR P1.0
LCALL DELAY1 ; retardo de 1 ms
DJNZ R3, L1MS
MOV R3,#200D ; repite 200 veces
L05MS: SETB P1.1
LCALL DELAY2; retardo de 0.5 ms
CLR P1.1
LCALL DELAY2 ; retardo de 0.5 ms
DJNZ R3, L05MS
RET
;********************************************************************
; Subrutina DELAY1 de un milisegundo, frecuencia de 500 Hz.
; Usa registro R2
;********************************************************************
DELAY1: MOV R2, #250d ; lazo repite 250 veces
LZO1MS: NOP ; calibrar retardo con NOP
NOP ;
DJNZ R2, LZO1MS ; decrementa R2, si distinto de cero ..
RET ; regresar
; ********************************************************************
; Subrutina DELAY2 de 0.5 milisegundos, frecuencia de 1000 Hz.
; Usa registro R2
; ********************************************************************
DELAY2: MOV R2,#125D
LZO_05MS: NOP
NOP
DJNZ R2, LZO_05MS
RET
; ********************************************************************
; Código de siete segmentos para display cátodo común.
; ********************************************************************
00111111B ; configura el 0
00000110B ; configura el 1
01011011B ; configura el 2
01001111B ; configura el 3
01100110B ; configura el 4
01110001B ; configura la F
; ********************************************************************
REPORTE:
 Edite ALARMA.ASM.
 Ensamble y ejecute paso a paso ALARMA.
 Con la ayuda del entorno uvisio4 mida con exactitud el valor de DELAY1 y DELAY2,
muestre sus resultados.
El hardware para ALARMA es:
 Microcontrolador AT89C52.
 Conecte un parlante en las patitas P1.0 y P1.1.
 Conecte al puerto de salida P2 un despliegue visual de 7 segmentos (cátodo común)
para identificar la bodega que generó el estado de alarma.
 En la patita P3.5 conecte tecla TA (Tecla Apagar alarma).
 Implemente RESET maestro.
Simulación (proteus) de ALARMA.
 El diseño del hardware para ALARMA se muestra a continuación.
 Se puede ver que bodega 2 genera estado de alarma.
 Muestre a su instructor los resultados de la simulación.
 Presente al menos tres fotos a color del funcionamiento de ALARMA.

PRACTICA 07

R1
R2
ALARMA R3
330R
R4
330R
R5
330R
R6
330R
U1 R7
330R
330R
19 39
XTAL1 P0.0/AD0 330R
38
P0.1/AD1
37
P0.2/AD2
C1 18
XTAL2 P0.3/AD3
36
22u 35
P0.4/AD4
34
P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7

RESET P2.0/A8
21
22
SENSORES
P2.1/A9
23
P2.2/A10 SW1
R8 29
PSEN P2.3/A11
24
200R 30 25
31
ALE P2.4/A12
26 BODEGA #1
EA P2.5/A13
27
SW2
SW-SPST
P2.6/A14
28
P2.7/A15 BODEGA #2
1 10
SW3
SW-SPST
P1.0 P3.0/RXD
2 11
3
P1.1 P3.1/TXD
12 BODEGA #3
4
P1.2 P3.2/INT0
13
SW4
SW-SPST
P1.3 P3.3/INT1
5 14
6
P1.4 P3.4/T0
15 SW-SPST
BODEGA #4
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
LS1
Tecla Apagar

SPEAKER

FIN PRÁCTICA 3