Contador Binario y Hexadecimal
Contador Binario y Hexadecimal
Contador Binario y Hexadecimal
PRACTICA NO. 5
CONTADOR BINARIO ASC/DESC
SISTEMAS DIGITALES III
JOSE MA. VALENCIA
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:
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.
04/12/2015
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
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
56
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
63
006A 7A27
006C 79FF
006E 78FF
0070 D8FE
0072 D9FA
0074 DAF6
0076 22
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
04/12/2015