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),A7: ERROR: IN A,(DA)
8: CP 0FFH9: 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 2700H35: 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,RELOJ0098: 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,RELOJ01109: 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,RELOJ02120: 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,RELOJ03131: 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 0AH162: CALL Z,SUMA
163: CP 1AH164: CALL Z,SUMA
165: CP 2AH166: CALL Z,SUMA
167: CP 3AH168: CALL Z,SUMA
169: CP 4AH170: CALL Z,SUMA
171: CP 5AH172: CALL Z,SUMA
173: CP 6AH174: CALL Z,SUMA
175: CP 7AH176: CALL Z,SUMA
177: CP 8AH178: CALL Z,SUMA
179: CP 9AH180: CALL Z,SUMA
181: RET 182: SUMA: ADD 6 183: AQUI: RET 184: 185: TRANS: 186: LD C,(IY+2) 187: LD A,C188: AND 0FH
189: OR 30H
190: LD (IX+7),A 191: LD A,C 192: RLCA 193: RLCA 194: RLCA 195: RLCA196: AND 0FH
197: OR 30H
198: LD (IX+6),A 199: 200: LD C,(IY+1) 201: LD A,C202: AND 0FH
203: OR 30H
204: LD (IX+4),A 205: LD A,C 206: RLCA 207: RLCA 208: RLCA 209: RLCA210: AND 0FH
211: OR 30H
212: LD (IX+3),A 213: 214: LD C,(IY+0) 215: LD A,C216: AND 0FH
217: OR 30H
218: LD (IX+1),A 219: LD A,C 220: RLCA 221: RLCA 222: RLCA 223: RLCA224: AND 0FH
225: OR 30H
226: LD (IX+0),A 227: RET 228: 229: ORG 2500H230: 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,3400H244: END
245: ;LAB. DE DIGITALES II
No hay comentarios:
Publicar un comentario