Verga no recuerdo el enunciado a 100% pero era un ascensor Hijo de P…, que tenia varias forma de funcionamiento, hice como 5 versiones pero esta fue la mas explicita.
Hay versiones de menos lineas pero no estan comentadas pero basicamente cumplian el mismo proposito.
Este programa corre en el simulador AVSIMZ80
1: ; PROGRAMA # 4. INTERRUPCIONES 2: ; PREPARATIVOS DEL PROCESADOR PARA OPERAR BAJA INTERRUPCIONES 3: ; SE USA EL PUERTO B PARA MANEJAR LOS MOTORES DEL ASCENSOR 4: ; Y EL PUERTO A PARA LAS ENTRADAS DE LOS SENSORES DEL MODO Y EL 5: ; SENSOR DE PESO Y LA ALARMA ASOCIADO A ESTE ULTIMO 6: ; PUERTO A BIT 0 MODO 1 7: ; BIT 1 MODO 2 8: ; BIT 2 MODO 3 9: ; BIT 3 SENSOR DE PESO 10: ; BIT 7 ALARMA11: ; LOS NIVELES DE ACTIVACION "1"
12: ORG 1000H 13: LD SP,3DFFH 14: LD A,35H ; VECTOR DE INTERRUPCIONES I 15: LD I,A 16: IM 2 ; MODO 2 17: LD A,0FH ; PUERTO B EN MODO 0 18: OUT (07H),A 19: LD A,11001111B ; PUERTO A EN MODO 3 20: OUT (06H),A 21: LD A,00001111B ; 22: OUT (06H),A 23: LD A,0 ; VECTOR DE INTERRUPCION DEL PUERTO 24: OUT (06H),A 25: LD A,10110111B ; PALABRA DE CONTROL 26: OUT (06H),A 27: LD A,11111000B ; PALABRA DE LA MASCARA 28: OUT (06H),A 29: WAIT: EI 30: HALT 31: JP WAIT 32: 33: ; LOS MODOS DE FUNCIONAMIENTO SE ANALIZARON DE LA SIGUIENTE 34: ;FORMA, PRIMERO SE VEIA CUANTAS PARADAS SE HACIAN POR COLUMNAS 35: ; Y DESPUES SE ANALIZARON LA DISTANCIA ENTRE CADA PARADA 36: ; DECLARANDOSE ESA INFORMACION EN LAS TABLAS 37: 38: MODO1: LD HL,EDIFICIO 39: LD IX,PARADA140: CALL INICIO
41: LD C,0 42: AQUI8: LD B,4 43: LD D,0 44: AQUI3: LD A,(IX) 45: CP D46: CALL Z,DETENER1
47: AQUI: CALL ARRIBA
48: INC D 49: LD A,(IX) 50: CP D51: CALL Z,DETENER1
52: DJNZ AQUI 53: LD A,C 54: CP 6 55: JP Z,DEVOLVER 56: INC C57: CALL DERECHA
58: LD D,0 59: LD IX,PARADA1 60: LD B,461: AQUI2: CALL ABAJO
62: DJNZ AQUI263: CALL DERECHA
64: INC C 65: LD D,0 66: JP AQUI8 67: DEVOLVER: LD IX,PARADA1 68: INC IX 69: LD D,0 70: LD B,471: AQUI5: CALL ABAJO
72: INC D 73: LD A,(IX) 74: CP D75: CALL Z,DETENER1
76: DJNZ AQUI5 77: LD A,C 78: CP 0 79: JP Z,FINAL80: CALL IZQUIERDA
81: DEC C 82: LD D,0 83: LD IX,PARADA1 84: LD B,485: AQUI6: CALL ARRIBA
86: DJNZ AQUI687: CALL IZQUIERDA
88: DEC C 89: LD A,(IX) 90: CP D91: CALL Z,DETENER1
92: LD B,4 93: JP AQUI5 94: DETENER1: INC IX 95: LD (HL),24H96: CALL RETRASO
97: LD (HL),098: CALL VERIFP
99: RET100: VERIFP: IN A,(04H)
101: BIT 3,A 102: JP Z,NADA 103: LD A,80H 104: OUT (04H),A 105: LD A,0 106: OUT (05H),A107: LAZO: IN A,(04H)
108: BIT 3,A 109: JP NZ,LAZO 110: NADA: LD A,0 111: OUT (04H),A 112: RET 113: RETRASO: PUSH BC 114: LD B,50 115: AQUI4: NOP 116: DJNZ AQUI4 117: POP BC 118: RET 119: INICIO: LD B,32 120: AQUI7: INC HL 121: DJNZ AQUI7 122: RET 123: APAGAR: LD A,0 124: OUT (05H),A 125: RET 126: ABAJO: INC HL 127: INC HL 128: INC HL 129: INC HL 130: INC HL 131: INC HL 132: INC HL 133: INC HL 134: LD A,1 135: OUT (05H),A 136: RET 137: ; ESTOS INCREMENTOS Y DECREMENTOS SON LA CANTIDAD DE LOCALIDADES QUE TENGO QUE 138: ;DESPLAZARME PARA VISUALIZAR EN EL DUMP DEL AVSIMZ80 LA POSICION 139: ;ACTUAL DE ASCENSOR. POR CADA PISO QUE SE SUBA O SE BAJE, 140: ; REPRESENTA OCHO DESPLAZAMIENTOS EN LA MEMORIA 141: ARRIBA: DEC HL 142: DEC HL 143: DEC HL 144: DEC HL 145: DEC HL 146: DEC HL 147: DEC HL 148: DEC HL 149: LD A,2 150: OUT (05H),A 151: RET 152: IZQUIERDA: DEC HL 153: LD A,40H 154: OUT (05H),A 155: RET 156: DERECHA: INC HL 157: LD A,80H 158: OUT (05H),A 159: RET160: FINAL: CALL APAGAR
161: RETI 162: 163: ; RUTINA DE SERVICIO DEL PUERTO, SE TOMARAN ACCIONES DEPENDIENDO 164: ; DE QUE BIT INTERRUMPIO. 165: ORG 1500H 166: IN A,(04H)
167: BIT 0,A 168: JP NZ,MODO1 169: BIT 1,A 170: JP NZ,MODO2 171: JP MODO3 172: 173: MODO3: LD HL,EDIFICIO 174: LD IX,PARADA3175: CALL INICIO
176: LD B,4 177: LD C,0 178: LD D,0 179: LD A,(IX) 180: CP D181: CALL Z,DETENER1
182: BAQUI: CALL ARRIBA
183: INC D 184: LD A,(IX) 185: CP D186: CALL Z,DETENER1
187: DJNZ BAQUI188: CALL DERECHA
189: INC C 190: LD B,4 191: LD D,0 192: LD IX,PARADA3 193: LD A,(IX) 194: CP D195: CALL Z,DETENER1
196: BAQUI2: CALL ABAJO
197: INC D 198: LD A,(IX) 199: CP D200: CALL Z,DETENER1
201: DJNZ BAQUI2202: CALL DERECHA
203: INC C 204: LD B,4 205: LD D,0 206: LD IX,PARADA4 207: LD A,(IX) 208: CP D209: CALL Z,DETENER1
210: BAQUI3: CALL ARRIBA
211: INC D 212: LD A,(IX) 213: CP D214: CALL Z,DETENER1
215: DJNZ BAQUI3216: CALL DERECHA
217: INC C 218: LD B,4 219: LD D,0 220: LD IX,PARADA4 221: LD A,(IX) 222: CP D223: CALL Z,DETENER1
224: BAQUI4: CALL ABAJO
225: INC D 226: LD A,(IX) 227: CP D228: CALL Z,DETENER1
229: DJNZ BAQUI4230: CALL DERECHA
231: INC C 232: LD B,4 233: LD D,0 234: LD IX,PARADA3 235: LD A,(IX) 236: CP D237: CALL Z,DETENER1
238: BAQUI5: CALL ARRIBA
239: INC D 240: LD A,(IX) 241: CP D242: CALL Z,DETENER1
243: DJNZ BAQUI5244: CALL DERECHA
245: INC C 246: LD B,4 247: LD D,0 248: LD IX,PARADA3 249: LD A,(IX) 250: CP D251: CALL Z,DETENER1
252: BAQUI6: CALL ABAJO
253: INC D 254: LD A,(IX) 255: CP D256: CALL Z,DETENER1
257: DJNZ BAQUI6258: CALL DERECHA
259: INC C 260: LD B,4 261: LD D,0 262: LD IX,PARADA4 263: LD A,(IX) 264: CP D265: CALL Z,DETENER1
266: BAQUI7: CALL ARRIBA
267: INC D 268: LD A,(IX) 269: CP D270: CALL Z,DETENER1
271: DJNZ BAQUI7272: CALL DERECHA
273: INC C 274: LD B,4 275: LD D,0 276: LD IX,PARADA4 277: LD A,(IX) 278: CP D279: CALL Z,DETENER1
280: BAQUI8: CALL ABAJO
281: INC D 282: LD A,(IX) 283: CP D284: CALL Z,DETENER1
285: DJNZ BAQUI8 286: LD B,4 287: LD D,0 288: LD IX,PARADA3 289: INC IX 290: LD A,(IX) 291: CP D292: CALL Z,DETENER1
293: BAQUI9: CALL ARRIBA
294: INC D 295: LD A,(IX) 296: CP D297: CALL Z,DETENER1
298: DJNZ BAQUI9299: CALL IZQUIERDA
300: DEC C 301: LD B,4 302: LD D,0 303: LD IX,PARADA3 304: LD A,(IX) 305: CP D306: CALL Z,DETENER1
307: BAQUI10: CALL ABAJO
308: INC D 309: LD A,(IX) 310: CP D311: CALL Z,DETENER1
312: DJNZ BAQUI10313: CALL IZQUIERDA
314: DEC C 315: LD B,4 316: LD D,0 317: LD IX,PARADA4 318: LD A,(IX) 319: CP D320: CALL Z,DETENER1
321: BAQUI11: CALL ARRIBA
322: INC D 323: LD A,(IX) 324: CP D325: CALL Z,DETENER1
326: DJNZ BAQUI11327: CALL IZQUIERDA
328: DEC C 329: LD B,4 330: LD D,0 331: LD IX,PARADA4 332: LD A,(IX) 333: CP D334: CALL Z,DETENER1
335: BAQUI12: CALL ABAJO
336: INC D 337: LD A,(IX) 338: CP D339: CALL Z,DETENER1
340: DJNZ BAQUI12341: CALL IZQUIERDA
342: DEC C 343: LD B,4 344: LD D,0 345: LD IX,PARADA3 346: LD A,(IX) 347: CP D348: CALL Z,DETENER1
349: BAQUI13: CALL ARRIBA
350: INC D 351: LD A,(IX) 352: CP D353: CALL Z,DETENER1
354: DJNZ BAQUI13355: CALL IZQUIERDA
356: DEC C 357: LD B,4 358: LD D,0 359: LD IX,PARADA3 360: LD A,(IX) 361: CP D362: CALL Z,DETENER1
363: BAQUI14: CALL ABAJO
364: INC D 365: LD A,(IX) 366: CP D367: CALL Z,DETENER1
368: DJNZ BAQUI14369: CALL IZQUIERDA
370: DEC C 371: LD B,4 372: LD D,0 373: LD IX,PARADA4 374: LD A,(IX) 375: CP D376: CALL Z,DETENER1
377: BAQUI15: CALL ARRIBA
378: INC D 379: LD A,(IX) 380: CP D381: CALL Z,DETENER1
382: DJNZ BAQUI15383: CALL IZQUIERDA
384: DEC C 385: LD B,4 386: LD D,0 387: LD IX,PARADA4 388: LD A,(IX) 389: CP D390: CALL Z,DETENER1
391: BAQUI16: CALL ABAJO
392: INC D 393: LD A,(IX) 394: CP D395: CALL Z,DETENER1
396: DJNZ BAQUI16 397: JP FINAL 398: 399: MODO2: LD HL,EDIFICIO 400: LD IX,PARADA2401: CALL INICIO
402: LD B,4 403: LD C,0404: AAQUI2: CALL ARRIBA
405: DJNZ AAQUI2406: CALL DERECHA
407: INC C 408: AAQUI8: LD B,4 409: LD D,0 410: AAQUI3: LD A,(IX) 411: CP D412: CALL Z,DETENER1
413: AAQUI: CALL ABAJO
414: INC D 415: LD A,(IX) 416: CP D417: CALL Z,DETENER1
418: DJNZ AAQUI 419: LD A,C 420: CP 7 421: JP Z,ADEVOLVER 422: INC C423: CALL DERECHA
424: LD D,0 425: LD IX,PARADA2 426: LD B,4 427: JP AAQUI2 428: ADEVOLVER: LD IX,PARADA2 429: INC IX 430: LD D,0 431: LD B,4432: AAQUI5: CALL ARRIBA
433: INC D 434: LD A,(IX) 435: CP D436: CALL Z,DETENER1
437: DJNZ AAQUI5438: CALL IZQUIERDA
439: DEC C 440: LD D,0 441: LD IX,PARADA2 442: LD B,4443: AAQUI6: CALL ABAJO
444: DJNZ AAQUI6 445: LD A,C 446: CP 0 447: JP Z,FINAL448: CALL IZQUIERDA
449: DEC C 450: LD A,(IX) 451: CP D452: CALL Z,DETENER1
453: LD B,4 454: JP AAQUI5 455: 456: ORG 3500H 457: DW 1500H 458: 459: ORG 0000H 460: PARADA1 DB 0,4 461: ; AQUI DIGO QUE EN EL MODO1 HAY PARADAS 462: ; EN EL PISO 0 Y PISO 4. ES DECIR QUE HAY UNA DISTANCIA DE 4 463: ; PISOS POR PARADA Y QUE HAY DOS PARADAS EN LAS COLUMNAS PARES 464: PARADA2 DB 0,2,4 465: ; AQUI DE IGUAL FORMA SE DICE QUE HAY PARA EN PB, PISO 2 Y PISO 466: ; 4. HAY UNA DISTANCIA DE 2 PISOS POR PARADA. HAY TRES PARADAS EN 467: ;LAS COLUMNAS IMPARES 468: PARADA3 DB 0,2 469: PARADA4 DB 2,4 470: 471: ORG 0500H 472: EDIFICIO DS 40 473: ; PARA VISUALIZAR EL EDIFICIO EL DUMP 1 DEBE TENER COMO 474: ; DIRECCION INICIAL 0500H Y Y EL DUMP 2 DEBE TENER COMO DIRECCION 475: ; INICAL LA 0520H 476: END
No hay comentarios:
Publicar un comentario