Este es la aplicacion para un ascensor, creo que lo utilice para un proyecto del laboratorio de controles pero recuerdo.
1: DEFSEG absseg, START=0000H, ABSOLUTE
2: SEG absseg
3:
4: ORG 0000h
5: LD SP,3DFFH
6:
7: LD A,11001111B
8: OUT (CA),A
9:
10: LD A,0FFH
11: OUT (CA),A
12:
13: LD A,11001111B
14: OUT (CB),A
15: LD A,0
16: OUT (CB),A
17:
18: LD A,0
19: OUT (PB),A
20: LD IY,DONDE
21: ; AHORA SE VERIFICA SI SE PRESIONO ALGO
22: ESPERAR: CALL RETRASO
23: IN A,(PA)
24: AND 00000111B
25: CP 0
26: JP Z,ESPERAR
27: ; SE COMPARA CON CERO PORQUE ESO INDICA QUE NO SE PRESIONO NADA EN LA BOTONERA
28: DEC A
29: LD HL,DONDE
30: SUB (HL)
31: JP C,BAJA
32: ; SI HAY CARRY INDICA QUE EL ASCENSOR DE ENCUENTRA POR ENCIMA DE DONDE SE REALIZO LA LLAMADA
33: CP 0
34: JP Z,ESPERAR
35: ; EN ESTE CASO SE COMPARA CON CERO PORQUE ESO INDICA QUE SE PRESIONO EL BOTON DEL PISO DONDE
36: ; YA SE ENCUENTRA EL ASCENSOR, ES DECIR QUE NO TIENE QUE SUBIR NI BAJAR
37:
38: LD B,A
39: LAZO01: IN A,(PA)
40: BIT 3,A
41: JP NZ,ABRE3
42: ; SI EL BIT 3 SE PONE EN 1 INDICA QUE ALGUIEN CRUZO LAS PUERTAS DEL ASCENSOR CUANDO SE ESTABAN CERRANDO LAS PUERTAS
43: CALL CERRAR
44: IN A,(PA)
45: BIT 5,A
46: JP Z,LAZO01
47: ; SE EJECUTA LA FUNCION CERRAR MIENTRAS QUE EL SENSOR DE CIERRE (BIT 5) DE PUERTAS SEA 0
48: CALL APAGAR
49:
50: SUBE: CALL SUBIR
51: CALL RETRASO
52: DJNZ SUBE
53: CALL APAGAR
54: ABRE: CALL ABRIR
55: IN A,(PA)
56: BIT 4,A
57: JP Z,ABRE
58: ; SE EJECUTA LA FUNCION ABRIR MIENTRAS QUE EL SENSOR DE APERTURA( BIT 4) DE PUERTAS SEA 0
59: CALL APAGAR
60: JP ESPERAR
61:
62: BAJA: NEG
63: LD B,A
64:
65: LAZO02: IN A,(PA)
66: BIT 3,A
67: JP NZ,ABRE4
68: CALL CERRAR
69: IN A,(PA)
70: BIT 5,A
71: JP Z,LAZO02
72: CALL APAGAR
73:
74: LAZO10: CALL BAJAR
75: CALL RETRASO
76: DJNZ LAZO10
77: CALL APAGAR
78: ABRE2: CALL ABRIR
79: IN A,(PA)
80: BIT 4,A
81: JP Z,ABRE2
82: CALL APAGAR
83: JP ESPERAR
84:
85: ABRE3: CALL ABRIR
86: IN A,(PA)
87: BIT 4,A
88: JP Z,ABRE3
89: CALL APAGAR
90: CALL RETRASO
91: JP LAZO01
92:
93: ABRE4: CALL ABRIR
94: IN A,(PA)
95: BIT 4,A
96: JP Z,ABRE4
97: CALL APAGAR
98: CALL RETRASO
99: JP LAZO02
100:
101: ABRIR: LD HL,PUERTOB
102: LD A,(HL)
103: SET 6,A
104: RES 5,A
105: LD (HL),A
106: OUT (PB),A
107: RET
108:
109: CERRAR: LD HL,PUERTOB
110: LD A,(HL)
111: SET 5,A
112: RES 6,A
113: LD (HL),A
114: OUT (PB),A
115: RET
116:
117: APAGAR: LD HL,PUERTOB
118: LD A,(HL)
119: RES 6,A
120: RES 5,A
121: RES 4,A
122: RES 3,A
123: LD (HL),A
124: OUT (PB),A
125: RET
126:
127: SUBIR: LD HL,PUERTOB
128: INC (HL)
129: LD A,(HL)
130: SET 4,A
131: RES 3,A
132: LD (HL),A
133: OUT (PB),A
134: INC (IY)
135: RET
136:
137: BAJAR: LD HL,PUERTOB
138: DEC (HL)
139: LD A,(HL)
140: SET 3,A
141: RES 4,A
142: LD (HL),A
143: OUT (PB),A
144: DEC (IY)
145: RET
146:
147: RETRASO: PUSH BC
148: PUSH AF
149: LD B,50
150: LD C,0
151: RETRA: LD A,3
152: ADD C
153: LD C,A
154: DJNZ RETRA
155: POP AF
156: POP BC
157: RET
158:
159:
160: ORG 500H
161:
162: PA EQU 04H
163: PB EQU 05H
164: CA EQU 06H
165: CB EQU 07H
166: PUERTOB DB 0
167: DONDE DB 0
168:
169: END
No hay comentarios:
Publicar un comentario