Este programa emula un reloj digital, se utilizan interrupciones y CTC…
Este codigo esta sucio, llevaba el conteo en BCD empaquetado, que asco, pero fue de los primeros que hice, con el tiempo uno aprende que hay mejores tecnicas para hacer las cosas.
si mal no me equivoco escogi esa tecnica para que se viera en el dump de memoria del simulador AVSIMZ80
1: ORG 2000H
2: LD SP,3DFFH
3: ; CONFIGURANDO PUERTO
4: LD A,0
5: OUT (00H),A
6: LD A,10100101B
7: OUT (00H),A
8: LD A,50
9: OUT (00H),A
10: IM 2
11: EI
12: LD A,30H
13: LD I,A
14: LD HL,2500H
15: LD B,3
16: LD C,0
17: IN: LD (HL),A
18: INC HL
19: DJNZ IN
20: DEC HL
21: CALL CUENTAS
22: CUENTAS: CALL RETRASO1
23: CALL SIGUE
24: RETRASO1: LD B,30
25: AQUI: LD IY,2000H
26: INC IY
27: DJNZ AQUI
28: RET
29: SIGUE: INC (HL)
30: LD A,0AH
31: CP (HL)
32: CALL Z,SUMA
33: LD A,1AH
34: CP (HL)
35: CALL Z,SUMA
36: LD A,2AH
37: CP (HL)
38: CALL Z,SUMA
39: LD A,3AH
40: CP (HL)
41: CALL Z,SUMA
42: LD A,4AH
43: CP (HL)
44: CALL Z,SUMA
45: LD A,5AH
46: CP (HL)
47: CALL Z,SUMA
48: LD A,60H
49: CP (HL)
50: CALL Z,CUENTAM
51: CALL CUENTAS
52: CUENTAM: LD (HL),0
53: DEC HL
54: INC (HL)
55: LD A,0AH
56: CP (HL)
57: CALL Z,SUMA
58: LD A,1AH
59: CP (HL)
60: CALL Z,SUMA
61: LD A,2AH
62: CP (HL)
63: CALL Z,SUMA
64: LD A,3AH
65: CP (HL)
66: CALL Z,SUMA
67: LD A,4AH
68: CP (HL)
69: CALL Z,SUMA
70: LD A,5AH
71: CP (HL)
72: CALL Z,SUMA
73: LD A,60H
74: CP (HL)
75: CALL Z,CUENTAH
76: INC HL
77: RET
78: CUENTAH: LD (HL),0
79: DEC HL
80: INC (HL)
81: LD A,0AH
82: CP (HL)
83: CALL Z,SUMA
84: LD A,12H
85: CP (HL)
86: CALL Z,RE
87: INC HL
88: RET
89: RE: LD B,2
90: SET: LD (HL),0
91: INC HL
92: DJNZ SET
93: CALL CUENTAS
94: SUMA: LD A,(HL)
95: ADD 6
96: LD (HL),A
97: RET
98:
99: ORG 3200H
100: LD DE,2602H
101: LD A,(IX)
102: CP C
103: CALL Z,PRIM
104: CP C
105: CALL Z,SEGUN
106: CP C
107: CALL Z,TERCE
108: CP C
109: CALL Z,CUARTA
110: RETI
111: PRIM: PUSH AF
112: LD A,0
113: CP C
114: JP NZ,NADA
115: LD A,(HL)
116: LD (DE),A
117: DEC DE
118: LD A,(2500H)
119: LD (DE),A
120: DEC DE
121: LD A,(2501H)
122: LD (DE),A
123: LD (2500H),A
124: INC DE
125: LD A,(DE)
126: LD (2501H),A
127: INC DE
128: LD A,(DE)
129: LD (2502H),A
130: LD C,1
131: INC (IX)
132: JP NADA
133: SEGUN: EI
134: PUSH AF
135: LD A,1
136: CP C
137: JP Z,CAM2
138: JP NADA
139: CAM2: LD DE,2600H
140: LD A,(2502H)
141: LD (DE),A
142: INC DE
143: LD A,(2501H)
144: LD (DE),A
145: INC DE
146: LD A,(2500H)
147: LD (DE),A
148: LD A,(2602H)
149: LD (2502H),A
150: LD A,(2600H)
151: LD (2500H),A
152: INC C
153: INC (IX)
154: JP NADA
155: TERCE: EI
156: PUSH AF
157: LD A,2
158: CP C
159: JP Z,CAM3
160: JP NADA
161: CAM3: LD DE,2601H
162: LD A,(2502H)
163: LD (DE),A
164: INC DE
165: LD A,(2501H)
166: LD (DE),A
167: LD A,(2602H)
168: LD (2502H),A
169: LD A,(2601H)
170: LD (2501H),A
171: INC C
172: INC (IX)
173: JP NADA
174: CUARTA: EI
175: PUSH AF
176: LD A,3
177: CP C
178: JP Z,CAM4
179: JP NADA
180: CAM4: LD DE,2600H
181: LD A,(2502H)
182: LD (DE),A
183: INC DE
184: LD A,(2501H)
185: LD (DE),A
186: INC DE
187: LD A,(2500H)
188: LD (DE),A
189: LD (2502H),A
190: DEC DE
191: LD A,(DE)
192: LD (2501H),A
193: DEC DE
194: LD A,(DE)
195: LD (2500H),A
196: LD IY,2500H
197: LD A,12H
198: SUB (IY)
199: CALL C,AJU
200: LD C,0
201: LD IX,0
202: LD (IX),0
203: JP NADA
204: NADA: EI
205: POP AF
206: RET
207: AJU: LD (IY),0
208: RET
209:
210: ORG 3000H
211: DEFW 3200H
212:
213: ORG 3100H
214: DEFB 'PROG'
215: DEFB ' CTC'
216: DEFB 'SECC 04 '
217: END
No hay comentarios:
Publicar un comentario