El enunciado de este programa era para llevar el crono de una competencia en una piscina, se usa interrupciones de puerto y CTC
1: ORG 2000H
2: LD SP,3DFFH
3: LD A,11001111B ; modo tres
4: OUT (CA),A
5: LD A,0FFH; todas entradas
6: OUT (CA),A
7: ERROR: IN A,(DA)
8: CP 0FFH
9: JP NZ,ERROR
10: LD A,0FFH ; vector de interrupcion
11: OUT (CA),A
12: LD A,10000111B ; PALABRA DE CONTROL DE INTERRUPCIONES DEL PUERTO
13: OUT (CA),A
14:
15: ; CONFIGURANDO LOS CTC
16: LD A,8
17: OUT (00H),A
18: LD A,10101111B
19: OUT (00H),A
20: LD A,10101111B
21: OUT (01H),A
22: LD A,10101111B
23: OUT (02H),A
24: LD A,10101111B
25: OUT (03H),A
26: ; CONFIGURO EL SISTEMA
27: LD A,26H
28: LD I,A
29: IM 2
30: ESPERAR: EI
31: HALT
32: JR ESPERAR
33:
34: ORG 2700H
35: LAZO01: IN A,(DA)
36: BIT 7,A
37: JP Z,CARRIL4
38: BIT 6,A
39: JP Z,CARRIL3
40: BIT 5,A
41: JP Z,CARRIL2
42: BIT 4,A
43: JP Z,CARRIL1
44: BIT 3,A
45: JP Z,FCARRIL4
46: BIT 2,A
47: JP Z,FCARRIL3
48: BIT 1,A
49: JP Z,FCARRIL2
50: LD A,10101111B
51: OUT (03H),A
52: RETI
53:
54: CARRIL4: LD A,69
55: OUT (00H),A
56: LD IY,RELOJ00
57: LD (IY),0
58: LD (IY+1),0
59: LD (IY+2),0
60: JP VOLVER
61: CARRIL3: LD A,69
62: OUT (01H),A
63: LD IY,RELOJ01
64: LD (IY),0
65: LD (IY+1),0
66: LD (IY+2),0
67: JP VOLVER
68:
69: CARRIL2: LD A,69
70: OUT (02H),A
71: LD IY,RELOJ02
72: LD (IY),0
73: LD (IY+1),0
74: LD (IY+2),0
75: JP VOLVER
76: CARRIL1: LD A,69
77: OUT (03H),A
78: LD IY,RELOJ03
79: LD (IY),0
80: LD (IY+1),0
81: LD (IY+2),0
82: JP VOLVER
83: FCARRIL3: LD A,10101111B
84: OUT (01H),A
85: JP VOLVER
86: FCARRIL4: LD A,10101111B
87: OUT (00H),A
88: JP VOLVER
89: FCARRIL2: LD A,10101111B
90: OUT (02H),A
91: VOLVER: RETI
92:
93: ORG 2800H
94: PUSH IY
95: PUSH IX
96: LD IX,RELOJ4
97: LD IY,RELOJ00
98: CALL RELOJ
99: CALL TRANS
100: POP IX
101: POP IY
102: RETI
103:
104: ORG 3000H
105: PUSH IY
106: PUSH IX
107: LD IX,RELOJ3
108: LD IY,RELOJ01
109: CALL RELOJ
110: CALL TRANS
111: POP IX
112: POP IY
113: RETI
114:
115: ORG 3200H
116: PUSH IY
117: PUSH IX
118: LD IX,RELOJ2
119: LD IY,RELOJ02
120: CALL RELOJ
121: CALL TRANS
122: POP IX
123: POP IY
124: RETI
125:
126: ORG 3400H
127: PUSH IY
128: PUSH IX
129: LD IX,RELOJ1
130: LD IY,RELOJ03
131: CALL RELOJ
132: CALL TRANS
133: POP IX
134: POP IY
135: RETI
136:
137: RELOJ: INC (IY+2)
138: LD A,(IY+2)
139: CALL CHECK
140: LD (IY+2),A
141: CP 0A0H
142: JP NC,MINUTO
143: JP AQUI
144: MINUTO: LD (IY+2),0
145: INC (IY+1)
146: LD A,(IY+1)
147: CALL CHECK
148: LD (IY+1),A
149: CP 60H
150: JP NC,HORA
151: JP AQUI
152: HORA: LD (IY+1),0
153: INC (IY)
154: LD A,(IY)
155: CALL CHECK
156: LD (IY),A
157: CP 60H
158: JP C,AQUI
159: LD (IY),1
160: JP AQUI
161: CHECK: CP 0AH
162: CALL Z,SUMA
163: CP 1AH
164: CALL Z,SUMA
165: CP 2AH
166: CALL Z,SUMA
167: CP 3AH
168: CALL Z,SUMA
169: CP 4AH
170: CALL Z,SUMA
171: CP 5AH
172: CALL Z,SUMA
173: CP 6AH
174: CALL Z,SUMA
175: CP 7AH
176: CALL Z,SUMA
177: CP 8AH
178: CALL Z,SUMA
179: CP 9AH
180: CALL Z,SUMA
181: RET
182: SUMA: ADD 6
183: AQUI: RET
184:
185: TRANS:
186: LD C,(IY+2)
187: LD A,C
188: AND 0FH
189: OR 30H
190: LD (IX+7),A
191: LD A,C
192: RLCA
193: RLCA
194: RLCA
195: RLCA
196: AND 0FH
197: OR 30H
198: LD (IX+6),A
199:
200: LD C,(IY+1)
201: LD A,C
202: AND 0FH
203: OR 30H
204: LD (IX+4),A
205: LD A,C
206: RLCA
207: RLCA
208: RLCA
209: RLCA
210: AND 0FH
211: OR 30H
212: LD (IX+3),A
213:
214: LD C,(IY+0)
215: LD A,C
216: AND 0FH
217: OR 30H
218: LD (IX+1),A
219: LD A,C
220: RLCA
221: RLCA
222: RLCA
223: RLCA
224: AND 0FH
225: OR 30H
226: LD (IX+0),A
227: RET
228:
229: ORG 2500H
230: RELOJ1 DB "00:00:00"
231: RELOJ2 DB "00:00:00"
232: RELOJ3 DB "00:00:00"
233: RELOJ4 DB "00:00:00"
234: RELOJ00 DB 0,0,0
235: RELOJ01 DB 0,0,0
236: RELOJ02 DB 0,0,0
237: RELOJ03 DB 0,0,0
238: CA EQU 06H
239: DA EQU 04H
240:
241: ORG 2600H
242: DW 2700H,0,0,0
243: DW 2800H,3000H,3200H,3400H
244: END
245: ;LAB. DE DIGITALES II
No hay comentarios:
Publicar un comentario