You are on page 1of 6

CENTRO DE ENSEANZA TECNICA INDUSTRIAL

LUIS ISAAC MAYA ESTRADA


REGISTRO: 11300618

PRACTICA NO. 5
CONTADOR BINARIO ASC/DESC
SISTEMAS DIGITALES III
JOSE MA. VALENCIA

GUADALAJARA JAL., A 13 DE ABRIL DEL 2015.

OBJETIVO.
El alumno disear un programa en lenguaje ensamblador que implemente, en su sistema mnimo,
un contador binario ascendente/descendente.
RESUMEN.
Una subrutina o subprograma en una seccin o parte de programa separado del programa principal
que puede ser llamado para realizar una funcin especfica. La subrutina puede ser requerida por el
programa principal u otra subrutina tantas veces como sea necesario. Cuando se llama a una
subrutina la ejecucin del programa en curso se detiene, el contador de programa PC (program
counter) se carga con la posicin de memoria de la subrutina, ejecutndose hasta llegar a la
instruccin RET (final de subrutina), donde se produce el retorno al programa principal
reanudndose su ejecucin. El los lenguajes de nivel alto como C, Basic se conoce a las subrutinas
con el nombre funciones o procedimientos.
En las subrutinas se han de tener en cuenta las siguientes consideraciones:

Realizan funciones concretas y no son operativas por si mismas.


Siempre estn ligadas a un programa principal o a otras subrutinas.
Pueden ser llamadas tantas veces como sea necesario por lo que se reduce el cdigo el
programa al tener el efecto de reutilizacin de cdigo.
Permiten la divisin del programa en bloques por lo que realizan la funcin de
estructuracin. Proporcionando mayor visibilidad y comprensin del mismo.

Como buen consejo, se recomienda siempre que sea posible la divisin del programa en subrutinas
o subprogramas y se minimice el contenido de sentencias en el programa principal. Sobre todo, las
subrutinas son necesarias cuando una parte de un programa se ha de ejecutar mltiples veces.
Conseguiremos que el programa se mas sencillo y que ocupe menos espacio en la ROM.
Si una subrutina est formada por pocas instrucciones, puede ser no aconsejable crearla, ya que el
mecanismo de llamada y retorno puede hacer que sea ms lenta su ejecucin que situar las
instrucciones directamente en el programa principal.
Ciclos de retardo.
El tiempo de un retardo por programa no tiene un valor fijo, este depende de las instrucciones que
forman parte del bucle (los ciclos mquina utilizados) y de la velocidad del reloj del
microprocesador (CPU).
Para este ejemplo en cuestin, el bucle se realiza sobre la instruccin DJNZ, la cual necesita dos
ciclos mquina para su ejecucin. Cada ciclo mquina utiliza 12 periodos de reloj. Si la frecuencia
de la CPU es de 12MHz, el tiempo empleado en realizar las 256 iteraciones es de 512 s
(microsegundos).
Para poder realizar retardos por software con tiempos superiores al segundo se ha de realizar
mediante el anidamiento de bucles. En la figura se muestra un anidamiento de bucles con los
registros R0, R1 y R2. En este sistema, por cada decremento del registro R1, el registro R0 se ha
decrementado 256 veces, y por cada decremento de R2 el R1 ha realizado 256 iteraciones, por lo
que el resultado final es de 2^24 = 16777216 iteraciones. El tiempo resultante es
aproximadamente 33,554432 segundos, segn las condiciones expuestas en el ejemplo anterior.

BIBLIOGRAFIA.
http://www.alciro.org/alciro/microcontroladores-8051_24/programacion-ensamblador_287.htm
http://www.alciro.org/alciro/microcontroladores-8051_24/subrutina-subprograma_357.htm

DESARROLLO TEORICO.
1. Dibujar el diagrama de flujo para realizar un contador binario ascendente /descendente con
subrutina de retardo de 1, 3 y 5 segundos.

2. Escribir y describir el cdigo en lenguaje ensamblador y lenguaje maquina.


A51 MACRO ASSEMBLER CONTADOR
20:39:30 PAGE 1

04/12/2015

MACRO ASSEMBLER A51 V8.02b


OBJECT MODULE PLACED IN contador.OBJ
ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE contador.asm SET(SMALL)
DEBUG EP
LOC OBJ

LINE

SOURCE

0000
1 ORG 0000H
0000 E5B0
2 MOV A,P3
0002 5407
3 ANL A,#07H
0004 FA
4 MOV R2,A
0005 BA000A
5 CJNE R2,#00H,ASC3S

6
0008 7400
000A 04
000B F590
000D 1150
000F B4FFF8
12
0012 BA010A
0015 7400
0017 04
0018 F590
001A 115D
001C B4FFF8
19
001F BA030A
0022 7400
0024 04
0025 F590
0027 116A
0029 B4FFF8
26
27
002C BA050A
002F 74FF
0031 14
0032 F590
0034 1150
0036 B400F8
34
0039 BA060A
003C 74FF
003E 14
003F F590
0041 115D
0043 B400F8
41
0046 74FF
0048 14
0049 F590
004B 116A
004D B400F8
47
0050 7A08
0052 79FF
0054 78FF
0056 D8FE
0058 D9FA
005A DAF6
005C 22
55
005D 7A17

7 MOV A,#00H;contador 1s ascendente


8 REGRESO:INC A
9
MOV P1,A
10
ACALL RETARDO1S
11
CJNE A,#0FFH,REGRESO
13 ASC3S:CJNE R2,#01H,ASC5S
14
MOV A,#00H
15 REGRESO1: INC A
16
MOV P1,A
17
ACALL RETARDO3S
18
CJNE A,#0FFH,REGRESO1
20 ASC5S:CJNE R2,#03,DSC1S
21
MOV A,#00H
22 REGRESO2: INC A
23
MOV P1,A
24
ACALL RETARDO5S
25
CJNE A,#0FFH,REGRESO2

28 DSC1S:CJNE R2,#05H,DSC3S
29
MOV A,#0FFH
30 REGRESO3: DEC A
31
MOV P1,A
32
ACALL RETARDO1S
33
CJNE A,#00H,REGRESO3
35 DSC3S: CJNE R2,#06H,DSC5S
36
MOV A,#0FFH
37 REGRESO4: DEC A
38
MOV P1,A
39
ACALL RETARDO3S
40
CJNE A,#00H,REGRESO4
42 DSC5S: MOV A,#0FFH
43 REGRESO5: DEC A
44
MOV P1,A
45
ACALL RETARDO5S
46
CJNE A,#00H,REGRESO5
48
49
50
51
52
53
54

RETARDO1S: MOV R2,#08H


RET3: MOV R1,#0FFH
RET2: MOV R0,#0FFH
RET1:
DJNZ R0,RET1
DJNZ R1,RET2
DJNZ R2,RET3
RET

56

RETARDO3S: MOV R2,#17H

005F 79FF
57 RET33: MOV R1,#0FFH
0061 78FF
58 RET22: MOV R0,#0FFH
A51 MACRO ASSEMBLER CONTADOR
20:39:30 PAGE 2
0063 D8FE
0065 D9FA
0067 DAF6
0069 22

59
60
61
62

04/12/2015

RET11: DJNZ R0,RET11


DJNZ R1,RET22
DJNZ R2,RET33
RET

63
006A 7A27
006C 79FF
006E 78FF
0070 D8FE
0072 D9FA
0074 DAF6
0076 22

64 RETARDO5S: MOV R2,#27H


65 RET333: MOV R1,#0FFH
66 RET222: MOV R0,#0FFH
67 RET111: DJNZ R0,RET111
68
DJNZ R1,RET222
69
DJNZ R2,RET333
70
RET

71
72
73 END
A51 MACRO ASSEMBLER CONTADOR
20:39:30 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------

NAME

T Y P E V A L U E ATTRIBUTES

ASC3S. . . . . . . C ADDR 0012H A


ASC5S. . . . . . . C ADDR 001FH A
DSC1S. . . . . . . C ADDR 002CH A
DSC3S. . . . . . . C ADDR 0039H A
DSC5S. . . . . . . C ADDR 0046H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
REGRESO. . . . . . C ADDR 000AH A
REGRESO1 . . . . . C ADDR 0017H A
REGRESO2 . . . . . C ADDR 0024H A
REGRESO3 . . . . . C ADDR 0031H A
REGRESO4 . . . . . C ADDR 003EH A
REGRESO5 . . . . . C ADDR 0048H A
RET1 . . . . . . . C ADDR 0056H A
RET11. . . . . . . C ADDR 0063H A
RET111 . . . . . . C ADDR 0070H A
RET2 . . . . . . . C ADDR 0054H A
RET22. . . . . . . C ADDR 0061H A
RET222 . . . . . . C ADDR 006EH A
RET3 . . . . . . . C ADDR 0052H A
RET33. . . . . . . C ADDR 005FH A
RET333 . . . . . . C ADDR 006CH A

04/12/2015

RETARDO1S. . . . . C ADDR 0050H A


RETARDO3S. . . . . C ADDR 005DH A
RETARDO5S. . . . . C ADDR 006AH A

REGISTER BANK(S) USED: 0

ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)


Este programa funciona de la siguiente manera:
El micro obtendr un dato del puerto de 3bits, el ms significativo indicara si el contador ser
ascendente o descendente y los 2 bits menos significativos sern los que indiquen el tiempo por el
cual se regir el contador.
El tiempo de retardo ser de 1,3 y 5 segundos, estos retardos se obtuvieron mediante el uso de
DJNZ's anidados.
DESARROLLO PRACTICO.
Redactar los pasos necesarios para llevar a cabo las siguientes actividades:
1. Demostrar el correcto funcionamiento del contador binario.
1. Programar la memoria EEPROM con el programa previamente diseado en el Desarrollo
terico.
2. Colocar la EEPROM en el sistema mnimo y adecuar los puertos para que se puedan
colocar los datos del selector y poder visualizar el contador
3. Prender nuestro sistema mnimo y correr el programa.
4. Colocar diferentes combinaciones en el minidip para visualizar todos los tiempos y el tipo
de contador(ascendente o descendente).
5. Observar el contador.
CONCLUSIONES.

Se debe dar respuesta a las siguientes cuestiones:


Qu tipo de problemas se tuvieron en el diseo del sistema y como los solucionaste.
R=Se tuvo problema al tratar de medir los tiempos de los retardos en la simulacin,
pero se soluciono observando el video que subi el profesor en donde explica cmo
hacer eso.
Recomendaciones para el uso del sistema mnimo.
R=Retirar y colocar la EEPROM con cuidado, ya que esta tiende a daarse muy
fcilmente.
MATERIAL.
1 Computadora con KEIL instalado
1 Barra de LED's
1 Minidip de 4
1 Sistema Mnimo.

You might also like