viernes, 21 de mayo de 2010

Digitales II – Prof. Mendoza – 4ª evaluación del Semestre 2005-II

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        ALARMA


  11:  ; 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,PARADA1


  40:          CALL INICIO


  41:          LD C,0


  42:  AQUI8:        LD B,4


  43:          LD D,0


  44:  AQUI3:        LD A,(IX)


  45:          CP D


  46:          CALL Z,DETENER1


  47:  AQUI:        CALL ARRIBA


  48:          INC D


  49:          LD A,(IX)


  50:          CP D


  51:          CALL Z,DETENER1


  52:          DJNZ AQUI


  53:          LD A,C


  54:          CP 6


  55:          JP Z,DEVOLVER


  56:          INC C


  57:          CALL DERECHA


  58:          LD D,0


  59:          LD IX,PARADA1


  60:          LD B,4


  61:  AQUI2:        CALL ABAJO


  62:          DJNZ AQUI2


  63:          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,4


  71:  AQUI5:        CALL ABAJO


  72:          INC D


  73:          LD A,(IX)


  74:          CP D


  75:          CALL Z,DETENER1


  76:          DJNZ AQUI5


  77:          LD A,C


  78:          CP 0


  79:          JP Z,FINAL


  80:          CALL IZQUIERDA


  81:          DEC C


  82:          LD D,0


  83:          LD IX,PARADA1


  84:          LD B,4


  85:  AQUI6:        CALL ARRIBA


  86:          DJNZ AQUI6


  87:          CALL IZQUIERDA


  88:          DEC C


  89:          LD A,(IX)


  90:          CP D


  91:          CALL Z,DETENER1


  92:          LD B,4


  93:          JP AQUI5


  94:  DETENER1:    INC IX


  95:          LD (HL),24H


  96:          CALL RETRASO


  97:          LD (HL),0


  98:          CALL VERIFP


  99:          RET


 100:  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),A


 107:  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:          RET


 160:  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,PARADA3


 175:          CALL INICIO


 176:          LD B,4


 177:          LD C,0


 178:          LD D,0


 179:          LD A,(IX)


 180:          CP D


 181:          CALL Z,DETENER1


 182:  BAQUI:        CALL ARRIBA


 183:          INC D


 184:          LD A,(IX)


 185:          CP D


 186:          CALL Z,DETENER1


 187:          DJNZ BAQUI


 188:          CALL DERECHA


 189:          INC C


 190:          LD B,4


 191:          LD D,0


 192:          LD IX,PARADA3


 193:          LD A,(IX)


 194:          CP D


 195:          CALL Z,DETENER1


 196:  BAQUI2:        CALL ABAJO


 197:          INC D


 198:          LD A,(IX)


 199:          CP D


 200:          CALL Z,DETENER1


 201:          DJNZ BAQUI2


 202:          CALL DERECHA


 203:          INC C


 204:          LD B,4


 205:          LD D,0


 206:          LD IX,PARADA4


 207:          LD A,(IX)


 208:          CP D


 209:          CALL Z,DETENER1


 210:  BAQUI3:        CALL ARRIBA


 211:          INC D


 212:          LD A,(IX)


 213:          CP D


 214:          CALL Z,DETENER1


 215:          DJNZ BAQUI3


 216:          CALL DERECHA


 217:          INC C


 218:          LD B,4


 219:          LD D,0


 220:          LD IX,PARADA4


 221:          LD A,(IX)


 222:          CP D


 223:          CALL Z,DETENER1


 224:  BAQUI4:        CALL ABAJO


 225:          INC D


 226:          LD A,(IX)


 227:          CP D


 228:          CALL Z,DETENER1


 229:          DJNZ BAQUI4


 230:          CALL DERECHA


 231:          INC C


 232:          LD B,4


 233:          LD D,0


 234:          LD IX,PARADA3


 235:          LD A,(IX)


 236:          CP D


 237:          CALL Z,DETENER1


 238:  BAQUI5:        CALL ARRIBA


 239:          INC D


 240:          LD A,(IX)


 241:          CP D


 242:          CALL Z,DETENER1


 243:          DJNZ BAQUI5


 244:          CALL DERECHA


 245:          INC C


 246:          LD B,4


 247:          LD D,0


 248:          LD IX,PARADA3


 249:          LD A,(IX)


 250:          CP D


 251:          CALL Z,DETENER1


 252:  BAQUI6:        CALL ABAJO


 253:          INC D


 254:          LD A,(IX)


 255:          CP D


 256:          CALL Z,DETENER1


 257:          DJNZ BAQUI6


 258:          CALL DERECHA


 259:          INC C


 260:          LD B,4


 261:          LD D,0


 262:          LD IX,PARADA4


 263:          LD A,(IX)


 264:          CP D


 265:          CALL Z,DETENER1


 266:  BAQUI7:        CALL ARRIBA


 267:          INC D


 268:          LD A,(IX)


 269:          CP D


 270:          CALL Z,DETENER1


 271:          DJNZ BAQUI7


 272:          CALL DERECHA


 273:          INC C


 274:          LD B,4


 275:          LD D,0


 276:          LD IX,PARADA4


 277:          LD A,(IX)


 278:          CP D


 279:          CALL Z,DETENER1


 280:  BAQUI8:        CALL ABAJO


 281:          INC D


 282:          LD A,(IX)


 283:          CP D


 284:          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 D


 292:          CALL Z,DETENER1


 293:  BAQUI9:        CALL ARRIBA


 294:          INC D


 295:          LD A,(IX)


 296:          CP D


 297:          CALL Z,DETENER1


 298:          DJNZ BAQUI9


 299:          CALL IZQUIERDA


 300:          DEC C


 301:          LD B,4


 302:          LD D,0


 303:          LD IX,PARADA3


 304:          LD A,(IX)


 305:          CP D


 306:          CALL Z,DETENER1


 307:  BAQUI10:    CALL ABAJO


 308:          INC D


 309:          LD A,(IX)


 310:          CP D


 311:          CALL Z,DETENER1


 312:          DJNZ BAQUI10


 313:          CALL IZQUIERDA


 314:          DEC C


 315:          LD B,4


 316:          LD D,0


 317:          LD IX,PARADA4


 318:          LD A,(IX)


 319:          CP D


 320:          CALL Z,DETENER1


 321:  BAQUI11:    CALL ARRIBA


 322:          INC D


 323:          LD A,(IX)


 324:          CP D


 325:          CALL Z,DETENER1


 326:          DJNZ BAQUI11


 327:          CALL IZQUIERDA


 328:          DEC C


 329:          LD B,4


 330:          LD D,0


 331:          LD IX,PARADA4


 332:          LD A,(IX)


 333:          CP D


 334:          CALL Z,DETENER1


 335:  BAQUI12:    CALL ABAJO


 336:          INC D


 337:          LD A,(IX)


 338:          CP D


 339:          CALL Z,DETENER1


 340:          DJNZ BAQUI12


 341:          CALL IZQUIERDA


 342:          DEC C


 343:          LD B,4


 344:          LD D,0


 345:          LD IX,PARADA3


 346:          LD A,(IX)


 347:          CP D


 348:          CALL Z,DETENER1


 349:  BAQUI13:    CALL ARRIBA


 350:          INC D


 351:          LD A,(IX)


 352:          CP D


 353:          CALL Z,DETENER1


 354:          DJNZ BAQUI13


 355:          CALL IZQUIERDA


 356:          DEC C


 357:          LD B,4


 358:          LD D,0


 359:          LD IX,PARADA3


 360:          LD A,(IX)


 361:          CP D


 362:          CALL Z,DETENER1


 363:  BAQUI14:    CALL ABAJO


 364:          INC D


 365:          LD A,(IX)


 366:          CP D


 367:          CALL Z,DETENER1


 368:          DJNZ BAQUI14


 369:          CALL IZQUIERDA


 370:          DEC C


 371:          LD B,4


 372:          LD D,0


 373:          LD IX,PARADA4


 374:          LD A,(IX)


 375:          CP D


 376:          CALL Z,DETENER1


 377:  BAQUI15:    CALL ARRIBA


 378:          INC D


 379:          LD A,(IX)


 380:          CP D


 381:          CALL Z,DETENER1


 382:          DJNZ BAQUI15


 383:          CALL IZQUIERDA


 384:          DEC C


 385:          LD B,4


 386:          LD D,0


 387:          LD IX,PARADA4


 388:          LD A,(IX)


 389:          CP D


 390:          CALL Z,DETENER1


 391:  BAQUI16:    CALL ABAJO


 392:          INC D


 393:          LD A,(IX)


 394:          CP D


 395:          CALL Z,DETENER1


 396:          DJNZ BAQUI16


 397:          JP FINAL


 398:   


 399:  MODO2:        LD HL,EDIFICIO


 400:          LD IX,PARADA2


 401:          CALL INICIO


 402:          LD B,4


 403:          LD C,0


 404:  AAQUI2:        CALL ARRIBA


 405:          DJNZ AAQUI2


 406:          CALL DERECHA


 407:          INC C


 408:  AAQUI8:        LD B,4


 409:          LD D,0


 410:  AAQUI3:        LD A,(IX)


 411:          CP D


 412:          CALL Z,DETENER1


 413:  AAQUI:        CALL ABAJO


 414:          INC D


 415:          LD A,(IX)


 416:          CP D


 417:          CALL Z,DETENER1


 418:          DJNZ AAQUI


 419:          LD A,C


 420:          CP 7


 421:          JP Z,ADEVOLVER


 422:          INC C


 423:          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,4


 432:  AAQUI5:        CALL ARRIBA


 433:          INC D


 434:          LD A,(IX)


 435:          CP D


 436:          CALL Z,DETENER1


 437:          DJNZ AAQUI5


 438:          CALL IZQUIERDA


 439:          DEC C


 440:          LD D,0


 441:          LD IX,PARADA2


 442:          LD B,4


 443:  AAQUI6:        CALL ABAJO


 444:          DJNZ AAQUI6


 445:          LD A,C


 446:          CP 0


 447:          JP Z,FINAL


 448:          CALL IZQUIERDA


 449:          DEC C


 450:          LD A,(IX)


 451:          CP D


 452:          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