ascensor, fotos, esquemas y
Post on 23-Mar-2016
247 Views
Preview:
DESCRIPTION
TRANSCRIPT
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 1
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 2
ASCENSOR DE 5 PISOS (Realizado con una impresora de formato A3)
Autor: JOAQUÍN BERROCAL PIRIS Fecha : 2002 Hecho en ENSAMBLADOR.
►El programa y el hexadecimal se encuentran al final
► SE MEMORIZAN LOS PULSADORES PRESIONADOS Y SE DESPLAZARÁ A LOS PISOS CORRESPONDIENTES SEGÚN EL ORDEN Y LA CERCANÍA DEL PISO EN EL QUE SE ENCUENTRE ► EL DISPLAY INDICA EL PISO POR EL QUE VA PASANDO ► DISPONE DE 10 PULSDORES; 5 SITUADOS EN EL PROPIO ASCENSOR Y OTROS 5 REPRESENTATIVOS DE CADA PISO -. Los LEDS son indicadores de: -. ROJO : Puerta Cerrada -. AMBAR: Puerta Abriendo -. VERDE: Entrar/Salir -. ROJO dcho: NO entrar ni salir
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 3
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 4
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 5
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 6
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 7
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 8
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 9
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 10
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 11
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 12
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 13
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)
Visitar; http://iesccp.comze.com/ 14
10/03/2009 17:26:39 f=0.72 C:\EAGLE\ascensor.sch (Sheet: 1/1)
>9 v
oltio
s
2K2
2K2
FC1
FC2FC3
FC4
FC5
1K
1K
1K
1K
1K
1K1K1K1K
1K
1K
1K
1K
1K
1K
1K
40106N
40106N40106N
40106N
40106N
PCF8574P
PCF8574P
10k
PIC16F876P
15 pf
15 pf
100 ohm
10k
SFH
610
SFH
610
SFH
610
SFH
610
SFH
610
47k 1k 47k 1k 47k 1k 47k 1k 47k 1k+5V
0V
0V
+5V
+5V
0V
+5V
GND
GND
GN
D
+5V
GND
GNDG
ND
GND
GND
GND
+5V
+5V
+5V
+5V
+5V
+12V
GN
D
GN
D
+5V
+5V
2K2
+5V
GND
+12V
zumbador
(+)
(+)
(+)(+) (+)
(+)(+) (+) (+)
(E) (E) (E) (E) (E)
(D) (D) (D) (D) (D)
>5 a 36 Voltios
ABC
RB7Zumbador
P3(B)P4(B)P5(B)P6(B)
P5(A)P6(A)P0(B)P1(B)P2(B)
(A)
(B)
INT
RC2
ABCDBOBINAS DEL MOTOR P.A.P.
REGLETA DE EXPANSIÓN
L293 E- DRIVER MOTOR
PU
LSA
DO
R D
E R
ES
ET
4 M
hz
triger Schmit para conformar las señales de
los Finales de Carrera
No Conex.
No Conex.
GND
+5 V
tecla
tecla
tecla
tecla
tecla
piso 1
piso 2
piso 3
piso 4
piso 5
pulsador
pulsador
pulsador
pulsador
pulsador
piso 1
piso 2
piso 3
piso 4
piso 5
DEFG
ZUMBADOR
ZUM
BA
DO
R
RB
3R
B4
RB
5R
B6
RA
4R
A5
RC
0R
C1
B AC
EFG D
L7805C-V
P3(
B)
P4(
B)
P5(
B)
P6(
B)
RC
2
RA4
RC1RC0RA5
CÁTODO-COMÚN
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R14
R15
R16
-+
SG1
12345678910SV
1
123456789SV
2
D2D3D4D5
3 124
S1
3 124
S2
3 124
S3
3 124
S4
3 124
S512
IC1A
34
IC1B
56
IC1C
98
IC1D
1110
IC1E
714
IC1P
VD
DV
SS
SCL14 SDA15
A01
A12
A23
INT13
VSS 8
VDD 16IC2
P0 4
P1 5
P2 6
P3 7
P4 9
P5 10
P6 11
P7 12
SCL14 SDA15
A01
A12
A23
INT13
VSS 8
VDD 16IC3
P0 4
P1 5
P2 6
P3 7
P4 9
P5 10
P6 11
P7 12
1 2345678910
RN
1
21
Q1
31 2
4
S6
IC4GND
IN OUT
1-2EN1
1A2
1Y3
GND14
GND25
2Y6
2A7
VCC28
VCC1 16
4A 15
4Y 14
GND3 13
GND4 12
3Y 11
3A 10
3-4EN 9
IC5
MCLR#/THV1
RA0/AN02
RA1/AN13
RA2/AN24
RA3/AN35
RA4/T0CKI6
RA5/AN47
OSC1/CLKIN9
OSC2/CLKOUT10
RC0/T1OSO11
RC1/T1OSI12
RC2/CCP113
RC3/SCK14
SDI/RC4 15SDO/RC5 16RC6 17RC7 18
820
INT/RB0 21RB1 22RB2 23PGM/RB3 24RB4 25RB5 26PGC/RB6 27PGD/RB7 28
19
IC6VDD
VSS
12345678910111213141516171819202122232425 JP1
1
JP2 1234 JP
3
C2 C1
X1-1
X1-2
12345
JP4
123456
JP5
123456789
10
JP6
123456789
JP7
C3
C4
R17
R18
124 3
OK1
124 3
OK2
124 3
OK3
124 3
OK4
124 3
OK5
R19
R20
R21
R22
R23
R24
R25
R26
R27
R28
12
JP8
B1
3 124
S7
3 124
S8
3 124
S9
3 124
S10
3 124
S11
R29
R30
R31
+5V
+5V
+5V
+5V+5V
+5V
+5V
GN
D
GND
GND
GND
GN
D
GN
D
GND
GN
D
TEC
LA1
TECLA1
TECLA1
TECLA1
TEC
LA2
TEC
LA2
TECLA2
TECLA2
TEC
LA3
TEC
LA3
TECLA3
TECLA3
TEC
LA4
TEC
LA4
TECLA4
TECLA4
TEC
LA5
TEC
LA5
TECLA5
RB7
RB7
RB
7
RB
7
FC1
FC1
FC2
FC2
FC3
FC3
FC4
FC4
FC5
FC5
LED
-RO
JO-N
O-E
/S
LED
-RO
JO-N
O-E
/S
LED-ROJO-NO-E/S
LED
-RO
JO-C
ER
RA
R
LED
-RO
JO-C
ER
RA
R
LED-ROJO-CERRAR
LLAMADA-1LLAMADA-1
LLAMADA-1
LLAMADA-1
LLAMADA-2
LLAMADA-2
LLAMADA-2
LLAMADA-2
LLAMADA-3
LLAMADA-3
LLAMADA-3
LLAMADA-3
LLAMADA-4
LLAMADA-4
LLAMADA-4
LLAMADA-4
LLAMADA-5
LLAMADA-5
LLAMADA-5
LLAMADA-5
P0(A)
P1(A)P2(A)
P3(A)
P4(A)
RA0
RA0
RA0
RA
0
RA1
RA
1
RA1
RA1
RA2
RA
2
RA2
RA2
RA3
RA
3
RA3
RA3
RA
4M
CLR
RA
5
RC
7R
B1
RB1
RB
1
RB
1
RC
6R
B2
RB2
RB
2
RB
2
RC
5R
B3
RB3
RB
3
RC
4/SD
A
RC4/SDARC4/SDA
RC4/SDA
RB
4
RB4
RB
4
RC
3/S
CL
RC3/SCL
RC3/SCL
RC3/SCL
RB
5
RB5
RB
5
RC
2R
B6
RB6
RB
6
RC
1
RC
0
RB0/INT
RB
0/IN
T
RB
0/IN
T
RB
0/IN
T
OU
T1O
UT2
OUT2
OU
T3
OUT3
OU
T4
OUT4
LED
-VE
RD
E-E
NTR
AR
/SA
LIR
LED
-VE
RD
E-E
NTR
AR
/SA
LIR
LED-VERDE-ENTRAR/SALIRLED-AMBAR-ABRIR
LED
-AM
BA
R-A
BR
IR
LED
-AM
BA
R-A
BR
IR
INTINT
INT
abcde
fgPKK
+
10/03/2009 17:25:02 f=0.75 C:\EAGLE\control-ascensor.sch (Sheet: 1/1)
>9 voltios
4010
6N
4010
6N40
106N
4010
6N
4010
6N
PC
F857
4P
PC
F857
4P
10k
PIC
16F8
76P
15 p
f
15 p
f
100
ohm
10k
+5V
0V
0V
+5V
+5V
0V
+5V GN
D
GND
GN
D
GN
D
GN
D
+5V
+5V+5V
+5V
+5V
+12V
GND
GND
+5V
+5V
2K2
2K2
2K2 +5V
GN
D
+12V
>5 a
36
Volti
os
RB7
Zum
bado
r
P3(B
)P4
(B)
P5(B
)P6
(B)
P5(A
)P6
(A)
P0(B
)P1
(B)
P2(B
)
(A)
(B)
INT
RC
2
AB
CD
BO
BIN
AS
DE
L M
OTO
R P
.A.P
.R
EG
LETA
DE
EX
PAN
SIÓ
N
L293
E- D
RIV
ER
MO
TOR
PULSADOR DE RESET
4 Mhz
trige
r Sch
mit
para
con
form
ar la
s se
ñale
s de
los
Fina
les
de C
arre
ra
No
Con
ex.
No
Con
ex.
ZUM
BAD
OR
L780
5C-V
D E F GA B CTEC
LA 1
TEC
LA 2
TEC
LA 3
TEC
LA 4
TEC
LA 5
+ 5V
(-)
FIN
ALE
S D
E C
AR
RE
RA
(+) F
INA
LES
DE
CA
RR
ER
A
LLA
MA
DA
1LL
AM
AD
A 2
LLA
MA
DA
3LL
AM
AD
A 4
LLA
MA
DA
5
(-) P
ULS
ADO
RES
DE
LLAM
ADA
SE
NS
OR
FC
3S
EN
SO
R F
C 4
SE
NS
OR
FC
5
SE
NS
OR
FC
1S
EN
SO
R F
C 2
SEN
SOR
ES F
C y
PU
ERTA
FC1
FC2
FC3 FC
4
FC5
FC1
FC2
FC3
FC4
FC5
LED
-RO
JO-N
O-E
/SLE
D-V
ER
DE
-EN
TRA
R/S
ALI
RLE
D-A
MB
AR
-AB
RIR
LED
-RO
JO-C
ER
RA
R
RC3/SCL
RC4/SDA
12 IC
1A
34 IC
1B
56 IC
1C
98 IC
1D
1110
IC1E
714 IC1PVDD VSS
SC
L14
SD
A15
A0
1
A1
2
A2
3
INT
13
VS
S8
VD
D16
IC2
P0
4
P1
5
P2
6
P3
7
P4
9
P5
10
P6
11
P7
12
SC
L14
SD
A15
A0
1
A1
2
A2
3
INT
13
VS
S8
VD
D16
IC3
P0
4
P1
5
P2
6
P3
7
P4
9
P5
10
P6
11
P7
12
12345678910
RN1
21
Q1
312 4
S6
IC4
GN
D
INO
UT
1-2E
N1
1A2
1Y3
GN
D1
4
GN
D2
5
2Y6
2A7
VC
C2
8
VC
C1
16
4A15
4Y14
GN
D3
13
GN
D4
12
3Y11
3A10
3-4E
N9
IC5
MC
LR#/
THV
1
RA
0/A
N0
2
RA
1/A
N1
3
RA
2/A
N2
4
RA
3/A
N3
5
RA
4/T0
CK
I6
RA
5/A
N4
7
OS
C1/
CLK
IN9
OS
C2/
CLK
OU
T10
RC
0/T1
OS
O11
RC
1/T1
OS
I12
RC
2/C
CP
113
RC
3/S
CK
14
SD
I/RC
415
SD
O/R
C5
16R
C6
17R
C7
18
820
INT/
RB
021
RB
122
RB
223
PG
M/R
B3
24R
B4
25R
B5
26P
GC
/RB
627
PG
D/R
B7
28
19
IC6
VD
D
VS
S
12345678910111213141516171819202122232425
JP1
1
JP2
1234
JP3
C2
C1
X1-1
X1-2
1 2 3 4 5
JP4 1 2 3 4 5 6
JP5 1 2 3 4 5 6 7 8 9 10JP6 1 2 3 4 5 6 7 8 9
JP7
C3
C4
R17
R18
1 2
JP8
B1
R29
R30
R31
+5V
+5V
GND
GND
TEC
LA1
TEC
LA2
TEC
LA3
TEC
LA4
RB7
RB7
LLAM
ADA-
1
LLAM
ADA-
1
LLAM
ADA-
2
LLAM
ADA-
2LL
AMAD
A-3
LLAM
ADA-
3
LLAM
ADA-
4
LLAM
ADA-
4
LLAM
ADA-
5
LLAM
ADA-
5
P0(
A)
P1(
A)
P2(
A)
P3(
A)
P4(
A)
RA0
RA0
RA0
RA0
RA1
RA1
RA1
RA1
RA2
RA2
RA2
RA2
RA3
RA3
RA3
RA3
RA4
RA
4
MCLR
RA5
RA
5
RC7RB1
RB
1
RC6RB2
RB
2
RC5RB3
RB
3
RC4/SDA
RC
4/S
DA
RC
4/S
DA
RC
4/S
DA
RB4
RB
4
RC3/SCL
RC
3/S
CL
RC
3/S
CL
RC
3/S
CL
RB5
RB
5
RC2RB6
RB
6
RC1
RC
1
RC0
RC
0
RB
0/IN
T
RB0/INT
OUT1OUT2
OU
T2
OUT3
OU
T3
OUT4
OU
T4
INT
INT
INT
+
10/03/2009 17:01:31 C:\EAGLE\puerta-ascensor.sch (Sheet: 1/1)
1K
1K
1K
1K
1K
1K1K1K1K
1K
1K
1K
1K
1K
1K
1K
+5V
GND
GND
GN
D
zumbador
tecla
tecla
tecla
tecla
tecla
piso 1
piso 2
piso 3
piso 4
piso 5
CÁTODO-COMÚN1
R32
R33
R34
R35
R36
R37
R38
R39
R40
R41
R42
R43
R44
R45
R46
R47
-+
SG2
12345678910S
V3
123456789S
V4
D1D6D7D8
3 124
S12
3 124
S13
3 124
S14
3 124
S15
3 124
S16
+5V
+5V
GN
DTE
CLA
1
TECLA1
TEC
LA2
TEC
LA2
TEC
LA3
TEC
LA3
TEC
LA4
TEC
LA4
TEC
LA5
TEC
LA5
A
A
B
B
C
C
D
D
E
E F
F
G
G
RB
7
RB
7
abcde
fgPKK
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
;; ASCENSOR (sacado con ayuda del EJEMPLO 33);; Autor: Joaquín Berrocal Piris;;;El módulo MSSP. Modo I2C Master. Trama de recepción;;El módulo MSSP de los dispositivos PIC16F87X incorpora por hardware el interface I2C tanto;en el modo Master como en el modo Slave. Las líneas RC3/SCL y RC4/SDA actúan como señales;de reloj y datos del bus I2C respectivamente.;;se trata de controlar un ascensor de un edificio de 5 plantas. Se simula el motor de apertura; y cierre de las puertas con leds. Los finales de carrera se obtinen con optoacopladores ;CNY 70 ver pagina 69 del libro de Microbótica. Sobre fondo negro o bien al aire da nivel 0;y sobre fondo blanco; nivel 1 a través de la patilla (D);DISPOSITIVOS DE LOS QUE CONSTA;;1 CHIP 16f876; 2 CHIPS PCF 8574 ; UN DRIVER L293B PARA EL CONTROL DEL MOTOR
;1 DISPLAY 7 SEGMENTOS Para indicar el piso en el que se encuentra Conectado (RB0 A RB6);Zumbador conectado a RB7;MOTOR PASO A PASO Conectado de RA0 A RA3;4 LEDS:;ROJO1 (Cerrar) -------RA4 AMBAR(Abrir) --------- RA5 VERDE(Entrar/salir)----RC0;ROJO2 (NO SALIR) -----RC1;TRANSMISIÓN BUS I2C -------------RC3(SCL) y RC4 (SDA) "ponerlas como entradas";El pulsador de teclado 5 está conectado a RC2
; NO UTILIZO LAS PATILLAS P7 DE LOS PCF 8574 POR CREAR PROBLEMAS CON EL BUS I2C Y BLOQUEARLO; ;El dispositivo I2C PCF8574. Puerto de E/S de 8 bits:LOS UTILIZO PARA CAPTAR EL ESTADO; DE LOS FINALES DE CARRERA, DE LOS PULSADORES Y DE LOS PULSADORES DE LLAMADA
;(A) PCF8574 ---- Dirección 0111(000)1 -- dirección 0 en modo lectura;Conectado a ;5 Finales de carrera----P0/P1/P2/P3/P4
;2 Pulsadores de llamada--P5/P6
;(B) pcf8574 ---- Dirección 0111(001)1 -- dirección 1 en modo lectura;Conectado a ;3 Pulsadores de llamada----P0/P1/P2
;4 Pulsadores teclado--------P3/P4/P5/P6
;El quinto pulsador del teclado lo conecto a RC2
;;DRIVER L293B ------- salidas: ;out1 ----a 1 del motor out2 --- a 2 del motor out3 --- a 3 del motor out4-- a 4 del motor; Entradas;;IN1----con RA0 IN2 ----Con RA1 IN3 ---- con RA2 IN4 --- con RA3;;OBSERVACIONES; COMBINACIONES DEL GIRO DEL MOTOR;; A DERECHA A IZQUIERDA;1 PASO-- 0101 1 PASO-- 0110;2 PASO-- 0110 2 PASO-- 0101 Conectado a RA0/RA1/RA2/RA3;3 PASO-- 1010 3 PASO-- 1001;4 PASO-- 1001 4 PASO-- 1010;; NOTA: CONSIDERO QUE EL MOTOR TIENE MÁX VELOCIDAD CON 130 PASOS/SEG-----7,6923 msg es decir ;que la temporización deber ser como mínimo de ese valor.YO LE DARÉ UNA TEMPORIZACIÓN MAYOR;PARA QUE VAYA MÁS LENTO Y A SU VEZ CON MAS FUERZA. le voy a dar 18,482 msgs.;Observacion; al (B) PCF8574 le sobra una E/S la P7 y al 16F876 las RC2/RC5/RC6/RC7
List p=16F876 ;Tipo de procesadorinclude "P16F876.INC" ;Definiciones de registros internos
RA0 equ H'0000'RA1 equ H'0001'RA2 equ H'0002' ;Posicione de las puertas de E/S de los RA3 equ H'0003' ; PIC 16F876RA4 equ H'0004'RA5 equ H'0005' RB0 equ H'0000'RB1 equ H'0001'RB2 equ H'0002'RB3 equ H'0003'RB4 equ H'0004'
1
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
RB5 equ H'0005'RB6 equ H'0006'RB7 equ H'0007'
RC0 equ H'0000'RC1 equ H'0001'RC2 equ H'0002'RC3 equ H'0003'RC4 equ H'0004'RC5 equ H'0005'RC6 equ H'0006'RC7 equ H'0007'
P0 equ H'0000' ;Posicione de las puertas de E/S de losP1 equ H'0001' ;pic PCF8574 (Dispositivo I2C.Puerto de E/S de 8 bits)P2 equ H'0002'P3 equ H'0003'P4 equ H'0004'P5 equ H'0005'P6 equ H'0006'P7 equ H'0007'
TEMP1 equ 0X31 ;registro de temporización (para la velocidad motor)TEMP2 equ 0X32 ;registro de temporización (para la velocidad motor)
CONTA1 equ 0X21CONTA2 equ 0X22 ;registros para la temporización de Abrir/cerrar puertaCONTA3 equ 0X23CONTA4 equ 0X24
PUERTOA equ 0X25PUERTOB equ 0X26
FinalesdeC equ 0X27TRESLLAMADAS equ 0X28DOSLLAMADAS equ 0X29TECLADO equ 0X30
;************************ P R O G R A M A *********************************************
org 0x00 ;Vector de Resetgoto Inicio
org 0x05 ;Salva el vector de interrupción
;***************TEMPORIZCIÓN PARA DAR LA VELOCIDAD AL MOTOR******************************
;Se temporiza 10 MILISEGUNDOS (considero que la velocidad máxima es de ;130pasos/seg = a 7,692msg)PERO PONGO UNA TEMPORIZACIÓN DE 18,482 msg
DELAY movlw 0x25movwf TEMP1clrf TEMP2
DELAY_1 decfsz TEMP2,F ;Decremento temp2 (767 usg)goto DELAY_1 ;Todavía no, temporizar decfsz TEMP1,F ;decrementar 25 veces mas; 7702usg =18,482)goto DELAY_1
return
;*****************************************************************************************
;**********************TEMPORIZACIÓN DE 2 SGDOS PARA ABRIR/CERRAR ************************
TEMPO2S movlw 0x0C ;Cargo con valor 12 decimal para contar hasta 1,9635 sgsmovwf CONTA3clrf CONTA1clrf CONTA2
TEMP2S decfsz CONTA1,F ;Temporización de Abrir/Cerrar de aprox. 2 sg.goto TEMP2Sdecfsz CONTA2,F
2
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
goto TEMP2Sdecfsz CONTA3,Fgoto TEMP2S
return
;*****************************************************************************************
;*************************TEMPORIZACIÓN DE 6 SGDOS PARA ENTRAR-SALIR*********************
TEMPO6S movlw 0x24 ;Cargo con valor 36 decimal para contar hasta 5,89 sgmovwf CONTA4clrf CONTA1clrf CONTA2
TEMP6S decfsz CONTA1,F ;Temporización de Abrir/Cerrar de aprox. 2 sg.goto TEMP6Sdecfsz CONTA2,Fgoto TEMP6Sdecfsz CONTA4,Fgoto TEMP6S
return
;*****************************************************************************************;Send_Start: Envía la condición de inicio
Send_Start bcf PIR1,SSPIF ;Restaura el flag del módulo MSSPbsf STATUS,RP0 ;Seleciona página 1bsf SSPCON2,SEN ;Activa secuencia de iniciobcf STATUS,RP0
Start_Wait btfss PIR1,SSPIF ;Fin de secuencia de inicio ??goto Start_Wait ;No, esperarreturn
;Send_Stop: Envía la secuencia de stop
Send_Stop bcf PIR1,SSPIF ;Restaura el flag del módulo MSSPbsf STATUS,RP0 ;Seleciona página 1bsf SSPCON2,PEN ;Activa secuencia de stopbcf STATUS,RP0
Stop_Wait btfss PIR1,SSPIF ;Fin de secuencia de Stop ??goto Stop_Wait ;No, esperarreturn
;Send_Byte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK
Send_Byte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSPmovwf SSPBUF ;Byte a transmitir pasa al buffer de salida
Send_Byte_Wait btfss PIR1,SSPIF ;Recibido el bit /ACK ??goto Send_Byte_Wait ;No, esperarreturn
;Read_Byte: Lee un byte procedente del dispositivo I2C selecionado y lo devuelve en W;Seguidamente se genera y transmite el bit /ACK
Read_Byte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSPbsf STATUS,RP0 ;Selecciona página 1bsf SSPCON2,RCEN ;Activa el modo receptorbcf STATUS,RP0 ;Selecciona página 0
Read_Wait btfss PIR1,SSPIF ;Recibidos los 8 bits ??goto Read_Wait ;No, esperar
bcf PIR1,SSPIF ;Restaura el flag del módulo MSSPbsf STATUS,RP0 ;Selecciona página 1bcf SSPCON2,ACKDT ;Pone bit ACK a "0"bsf SSPCON2,ACKEN ;Aciva la secuencia de generación del bit ACKbcf STATUS,RP0 ;Selecciona página 0
ACK_Wait btfss PIR1,SSPIF ;Secuencia ACK finalizada ??goto ACK_Wait ;No, esperarmovf SSPBUF,W ;Lee el byte recibidoreturn
;**********************************INICIO DEL PROGRAMA ***********************************
3
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
;PROGRAMA PRINCIPAL
Inicio bsf STATUS,RP0 ;Selecciona banco 1movlw b'00000110'movwf ADCON1 ;Puerta A digitalclrf TRISA ;Puerta A salidaclrf TRISB ;Puerta B salidamovlw b'00011100'movwf TRISC ;RC2/RC3/SCL y RC4/SDA entradas las demás salida
movlw b'10000000'movwf SSPSTAT ;Velocidad estándar con niveles I2Cmovlw .9movwf SSPADD ;Velocidad del bus I2C 100KHz
bcf STATUS,RP0 ;Selecciona banco 0
movlw b'11111111' ;PARA INICIAR LAS PUETAS DESDE UN ESTADO movwf PORTA ;CONOCIDO
clrf PORTCclrf PORTB
;Para iniciar con los leds desconectadosbsf PORTC,RC0 ;activan por negativo el led verde de entrar/salirbsf PORTC,RC1 ;y el led rojo 2 de No Entrar/salir
;**RUTINA PARA POSICIONAR EL ASCENSOR EN EL CASO DE NO ESTAR ENFRENTADO A UN FINAL DE CARRERA**
bcf STATUS,Z ;para inicar con seguridad en z=0
movlw b'00101000'movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de iniciomovlw b'01110001'call Send_Byte ;Envía byte de dirección del(A) PCF8574 ("lectura")
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estado; de los 5 finales de carrera
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finales
btfss STATUS,Z ;verifica si hay un Final de Carrera activo. Si no haygoto POSICION ;Z=1 el resultado de la operación es cero.Ir a POSICIONAR
;si está enfrentado a un Final de Carrera. Leer ;los pulsadores de llamada y del teclado
call Send_Stop ;Parar la lectura
;**************************Módulo MSSP en el modo Master I2C******************************;Aquí inicio el módulo MSSP y leo los puertos de E/S de los dispositivos I2C PCF8574
LECTURA movlw b'00101000'movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de iniciomovlw b'01110001'call Send_Byte ;Envía byte de dirección del(A) PCF8574 ("lectura")
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 2 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
movf PUERTOA,W ;Llevo de nuevo el contenido del (A) PCF 8574 al Wandlw b'01100000' ;Discrimino para conocer el estado de 2 puls. de llamadamovwf DOSLLAMADAS ;los guardo (pisos 1-2)
call Send_Stop ;Para poder leer ahora el (B) PCF 8474
;AHORA ENVÍO DIRECCIÓN DEL PUERTO (B) PCF8574 PARA CONOCER EL ESTADO DE LOS TRES PULSADORES DE
4
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
;LLAMADA (pisos 3-4 y 5) y EL DE LOS 5 PULSADORES DEL TECLADO.
movlw b'00101000'movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de inicio
movlw b'01110011' ;dirección del segundo puerto de E/S el (B) pcf8574call Send_Byte ;Envía byte de dirección del(B) PCF8574 ("lectura")
call Read_Byte ;Lee el dispositivo (B) PCF8584 para conocer el estado;de los tres pulsadores de llamada y los 4 del TECLADO
movwf PUERTOBmovf PUERTOB,W ;lo vuelvo a poner en el banco W
andlw b'00000111' ;Discrimino para conocer el estado de los 3 llamadas;(pulsadores de los pisos 3-4 y 5)
movwf TRESLLAMADAS ;los guardo en el registro TRESLLAMADAS (pisos 3-4 y 5)
movf PUERTOB,W ;Llevo de nuevo el contenido del (B) PCF 8574 al Wandlw b'01111000' ;Discrimino para conocer el estado de los 4 puls. del TECLADOmovwf TECLADO ;los guardo en el registro (estado pulsadores del teclado)
;pulsador 1-2-3-4 .el 5º lo leo a traves de RC0
call Send_Stop ;Para terminar la lectura del (B) y poder leer ahora ; el (A) PCF 8474
;*****************************************************************************************
;**************RUTINAS PARA CONOCER CUÁL pulsador de llamada está activo****************
;--------------------HAY UN PULSADOR DE LLAMADA EN CADA PISO------------------------------
LLAMADA1 btfsc DOSLLAMADAS,P5 ;comprueba si corresponde al goto LLAMADA2 ;pulsador del piso 1goto PLANTA1A
LLAMADA2 btfsc DOSLLAMADAS,P6 ;comprueba si corresponde al goto LLAMADA3 ;pulsador del piso 2goto PLANTA1B
;-------------- DEL CHIP (B) PCF 8574 --------------------------------------
LLAMADA3 btfsc TRESLLAMADAS,P0 ;comprueba si corresponde al goto LLAMADA4 ;pulsador del piso 3goto PLANTA1C
LLAMADA4 btfsc TRESLLAMADAS,P1 ;comprueba si corresponde al goto LLAMADA5 ;pulsador del piso 4goto PLANTA1D
LLAMADA5 btfsc TRESLLAMADAS,P2 ;comprueba si corresponde al goto PULSADORES1 ;pulsador del piso 5goto PLANTA1E ;salta a leer los pulsadores del teclado
;**************RUTINAS PARA CONOCER CUÁL pulsador DEL TECLADO ESTÁ ACTIVO****************
PULSADORES1 btfsc TECLADO,P3 ; VERIFICA SI SE HA PULSADO PARA IR AL goto PULSADORES2 ;PISO Nº 1goto PLANTA1A
PULSADORES2 btfsc TECLADO,P4 ; VERIFICA SI SE HA PULSADO PARA IR AL goto PULSADORES3 ;PISO Nº 2goto PLANTA1B
PULSADORES3 btfsc TECLADO,P5 ; VERIFICA SI SE HA PULSADO PARA IR AL goto PULSADORES4 ;PISO Nº 3goto PLANTA1C
PULSADORES4 btfsc TECLADO,P6 ; VERIFICA SI SE HA PULSADO PARA IR AL goto PULSADORES5 ;PISO Nº 4goto PLANTA1D
5
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
PULSADORES5 btfsc PORTC,RC2 ;EL TECLADO 5º Piso está conectado al RC2 ;VERIFICA SI SE HA PULSADO PARA IR AL PISO Nº 5
goto LECTURA ;vuelvo a leer el estado de pulsadores ;de llamada/del teclado y los Finales de Carrera
goto PLANTA1E
;************************************************************************************************;***RUTINAS PARA AVERIGUAR DONDE SE ENCUENTRA EL ASCENSOR Y HACERLO ABRIR/CERRAR/BAJAR 0 SUBIR***
;debo poner de nuevo las istrucciones de lectura del dispositivo I2C pcf8574 Del A y del B para conocer ;el estado de los finales de carrera y de los pulsadores de llamada y del teclado.
PLANTA1A movlw b'00101000'movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de inicio
movlw b'01110001'call Send_Byte ;Envía byte de dirección del(A) PCF8574 ("lectura")
PLANTA1A1 call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 2 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W. (pisos 1º y 2º)
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
movf PUERTOA,W ;Llevo de nuevo el contenido del (A) PCF 8574 al W
btfsc FinalesdeC,P0 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA2Amovlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTBgoto ABRIR ;por estar en la primera planta y nosotros también
PLANTA2A btfsc FinalesdeC,P1 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA3Amovlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTBgoto BAJAR_A_1 ;por estar en la segunda planta y nosotros en la 1ª
PLANTA3A btfsc FinalesdeC,P2 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA4Amovlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTBgoto BAJAR_A_1 ;por estar en la tercera planta y nosotros en la 1ª
PLANTA4A btfsc FinalesdeC,P3 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA5Amovlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTBgoto BAJAR_A_1 ;por estar en la cuarta planta y nosotros en la 1ª
PLANTA5A btfsc FinalesdeC,P4 ;en el reg FinalesdeC esta el estado de los 5 Finales
goto PLANTA1A1
movlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTBgoto BAJAR_A_1 ;por estar en la quinta planta y nosotros en la 1ª
;*************************************************************************************************
PLANTA1B movlw b'00101000'movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de inicio
movlw b'01110001'call Send_Byte ;Envía byte de dirección del(A) PCF8574 ("lectura")
PLANTA1B1 call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estado
6
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
movwf PUERTOA ; de los 5 finales de carrera y de 2 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P0 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA2Bmovlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTBgoto SUBIR_A_2 ;por estar en la primera planta y nosotros en la 3ª
PLANTA2B btfsc FinalesdeC,P1 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA3Bmovlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTBgoto ABRIR ;por estar en la segunda planta y nosotros también
PLANTA3B btfsc FinalesdeC,P2 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA4Bmovlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTBgoto BAJAR_A_2 ;por estar en la tercera planta y nosotros en la 2ª
PLANTA4B btfsc FinalesdeC,P3 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA5Bmovlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTBgoto BAJAR_A_2 ;por estar en la cuarta planta y nosotros en la 2ª
PLANTA5B btfsc FinalesdeC,P4 ;en el reg FinalesdeC esta el estado de los 5 Finales
goto PLANTA1B1
movlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTBgoto BAJAR_A_2 ;por estar en la quinta planta y nosotros en la 2ª
;*************************************************************************************************
PLANTA1C movlw b'00101000'movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de inicio
movlw b'01110001'call Send_Byte ;Envía byte de dirección del(A) PCF8574 ("lectura")
PLANTA1C1 call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 2 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P0 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA2Cmovlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTBgoto SUBIR_A_3 ;por estar en la primera planta y nosotros en la 3ª
PLANTA2C btfsc FinalesdeC,P1 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA3Cmovlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTBgoto SUBIR_A_3 ;por estar en la segunda planta y nosotros en la 3ª
PLANTA3C btfsc FinalesdeC,P2 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA4Cmovlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTBgoto ABRIR ;por estar en la tercera planta y nosotros también
PLANTA4C btfsc FinalesdeC,P3 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA5Cmovlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTB
7
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
goto BAJAR_A_3 ;por estar en la cuarta planta y nosotros en la 3ª
PLANTA5C btfsc FinalesdeC,P4 ;en el reg FinalesdeC esta el estado de los 5 Finales
goto PLANTA1C1
movlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTBgoto BAJAR_A_3 ;por estar en la quinta planta y nosotros en la 3ª
;************************************************************************************************PLANTA1D movlw b'00101000'
movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de inicio
movlw b'01110001'call Send_Byte ;Envía byte de dirección del(A) PCF8574 ("lectura")
PLANTA1D1 call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 2 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P0 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA2Dmovlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTBgoto SUBIR_A_4 ;por estar en la primera planta y nosotros en la 4ª
PLANTA2D btfsc FinalesdeC,P1 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA3Dmovlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTBgoto SUBIR_A_4 ;por estar en la segunda planta y nosotros en la 4ª
PLANTA3D btfsc FinalesdeC,P2 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA4Dmovlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTBgoto SUBIR_A_4 ;por estar en la tercera planta y nosotros en la 4ª
PLANTA4D btfsc FinalesdeC,P3 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA5Dmovlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTBgoto ABRIR ;por estar en la cuarta planta y nosotros también
PLANTA5D btfsc FinalesdeC,P4 ;en el reg FinalesdeC esta el estado de los 5 Finales
goto PLANTA1D1
movlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTBgoto BAJAR_A_4 ;por estar en la quinta planta y nosotros en la 4ª
;************************************************************************************************
PLANTA1E movlw b'00101000'movwf SSPCON ;Módulo MSSP en On
call Send_Start ;Envía condición de inicio
movlw b'01110001'call Send_Byte ;Envía byte de dirección del(A) PCF8574 ("lectura")
PLANTA1E1 call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 2 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
8
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
btfsc FinalesdeC,P0 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA2Emovlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTBgoto SUBIR_A_5 ;por estar en la primera planta y nosotros en la 5ª
PLANTA2E btfsc FinalesdeC,P1 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA3Emovlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTBgoto SUBIR_A_5 ;por estar en la segunda planta y nosotros en la 5ª
PLANTA3E btfsc FinalesdeC,P2 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA4Emovlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTBgoto SUBIR_A_5 ;por estar en la tercera planta y nosotros en la 5ª
PLANTA4E btfsc FinalesdeC,P3 ;en el reg FinalesdeC esta el estado de los 5 Finalesgoto PLANTA5Emovlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTBgoto SUBIR_A_5 ;por estar en la cuarta planta y nosotros en la 5ª
PLANTA5E btfsc FinalesdeC,P4 ;en el reg FinalesdeC esta el estado de los 5 Finales
goto PLANTA1E1
movlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTBgoto ABRIR ;por estar en la quinta planta y nosotros también
;************************************************************************************************
;***********************RUTINA PARA POSICIONAR EL ASCENSOR***************************************
POSICIONAR call SUBIR;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
POSICION call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
UNO btfsc FinalesdeC,P0 ;¿ha llegado al piso nº 1?goto DOS ;Ver si está en el piso nº 2movlw b'01000110' ;Activa display cátodo común Piso 1movwf PORTBgoto PARAR
DOS btfsc FinalesdeC,P1 ;¿ha llegado al piso nº 2?goto TRES ;Ver si está en el piso nº 3movlw b'01011011' ;Activa display cátodo común Piso 2movwf PORTBgoto PARAR
TRES btfsc FinalesdeC,P2 ;¿ha llegado al piso nº 3?goto CUATRO ;Ver si está en el piso nº 4movlw b'01001111' ;Activa display cátodo común Piso 3movwf PORTBgoto PARAR
CUATRO btfsc FinalesdeC,P3 ;¿ha llegado al piso nº 4?goto CINCO ;Ver si está en el piso nº 5movlw b'01100110' ;Activa display cátodo común Piso 4movwf PORTBgoto PARAR
CINCO btfsc FinalesdeC,P4 ;¿ha llegado al piso nº 5?goto POSICIONAR ;VOLVER A ACTIVAR EL MOTOR Y A LEER LOS FINALES DE CARRERAmovlw b'01101101' ;Activa display cátodo común Piso 5movwf PORTBgoto PARAR
9
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
PARAR bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;__________________________________________________________________________________________________
;************************************************************************************************
;****************************RUTINAS DE ABRIR / BAJAR A 1-2-3-4 / SUBIR A 2-3-4-5 ***************
ABRIR bcf PORTA,RA5 ;activa por (-) RA5 led Ambar (abrir)bcf PORTC,RC1 ;Led rojo2 No entrar ni salir encendidocall TEMPO2S ;tiempo que tarda en abrirsebsf PORTA,RA5 ;puerta abierta y led ambar y rojo2 apagadosbsf PORTC,RC1 ;bcf PORTC,RC0 ;led verde encendido se puede entrar y/o salirbsf PORTB,RB7 ;Zumbador activo por +call TEMPO6S ;Tiempo para entrar y/o salirbsf PORTC,RC0 ;led verde apagado no se puede entrar ni salir
bcf PORTB,RB7 ;Zumbador desactivado.Puerta cerrada
bcf PORTA,RA4 ;activa por (-) RA4 led Rojo1 (cerrar)bcf PORTC,RC1 ;led rojo2 encendido No E/Scall TEMPO2S ;tiempo que tarda en cerrarsebsf PORTA,RA4 ;puerta cerrada y led rojo1 apagado
call Send_Stop ;para poder leer el siguiente puerto de E/S
goto LECTURA ;Ir de nuevo a chequear los pulsadores y el teclado;________________________________________________________________________________________________
BAJAR call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P0 ;¿ha llegado al piso nº 1?goto DOS_A ;Mirar si está en el piso 1 y así indicarlo en el displaymovlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTB
DOS_A btfsc FinalesdeC,P1 ;¿ha llegado al piso nº 2?goto TRES_A ;Mirar si está en el piso 2 y así indicarlo en el displaymovlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTB
TRES_A btfsc FinalesdeC,P2 ;¿ha llegado al piso nº 3?goto CUARTO_A ;Mirar si está en el piso 3 y así indicarlo en el displaymovlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTB
CUARTO_A btfsc FinalesdeC,P3 ;¿ha llegado al piso nº 4?goto QUINTO_A ;Mirar si está en el piso 4 y así indicarlo en el displaymovlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTB
QUINTO_A btfsc FinalesdeC,P4 ;¿ha llegado al piso nº 5?goto MOTOR_BAJA ;Mirar si está en el piso 5 y así indicarlo en el displaymovlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTB
MOTOR_BAJA bcf PORTA,RA0 ;combinación de bajar RA3 RA2 RA1 RA0bcf PORTA,RA3call DELAY ; 1º paso--- 0 1 1 0bsf PORTA,RA0 ; 2ºpaso--- 0 1 0 1bsf PORTA,RA3 ; 3ºpaso--- 1 0 0 1
10
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
; 4ºpaso--- 1 0 1 0
bcf PORTA,RA1bcf PORTA,RA3call DELAYbsf PORTA,RA1bsf PORTA,RA3
bcf PORTA,RA1bcf PORTA,RA2call DELAYbsf PORTA,RA1bsf PORTA,RA2
bcf PORTA,RA0bcf PORTA,RA2call DELAYbsf PORTA,RA0bsf PORTA,RA2
return;___________________________________________________________________________________________________
BAJAR_A_1 call BAJAR;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P0 ;¿ha llegado al piso nº 1?goto BAJAR_A_1movlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;_______________________________________________________________________________________________
BAJAR_A_2 call BAJAR;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P1 ;¿ha llegado al piso nº 2?goto BAJAR_A_2movlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;_______________________________________________________________________________________________
BAJAR_A_3 call BAJAR
11
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P2 ;¿ha llegado al piso nº 3?goto BAJAR_A_3movlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;________________________________________________________________________________________________
BAJAR_A_4 call BAJAR
;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P3 ;¿ha llegado al piso nº 4?goto BAJAR_A_4movlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;*************************************************************************************************
SUBIR call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P0 ;¿ha llegado al piso nº 1?goto DOS_B ;Mirar si está en el piso 1 y así indicarlo en el displaymovlw b'00000110' ;Activa display cátodo comun Piso 1movwf PORTB
DOS_B btfsc FinalesdeC,P1 ;¿ha llegado al piso nº 2?goto TRES_B ;Mirar si está en el piso 2 y así indicarlo en el displaymovlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTB
TRES_B btfsc FinalesdeC,P2 ;¿ha llegado al piso nº 3?goto CUARTO_B ;Mirar si está en el piso 3 y así indicarlo en el displaymovlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTB
CUARTO_B btfsc FinalesdeC,P3 ;¿ha llegado al piso nº 4?goto QUINTO_B ;Mirar si está en el piso 4 y así indicarlo en el display
12
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
movlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTB
QUINTO_B btfsc FinalesdeC,P4 ;¿ha llegado al piso nº 5?goto MOTOR_SUBE ;Mirar si está en el piso 5 y así indicarlo en el displaymovlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTB
MOTOR_SUBE bcf PORTA,RA1 ;combinación de subir RA3 RA2 RA1 RA0bcf PORTA,RA3call DELAY ; 1º paso--- 0 1 0 1bsf PORTA,RA1 ; 2ºpaso--- 0 1 1 0bsf PORTA,RA3 ; 3ºpaso--- 1 0 1 0
; 4ºpaso--- 1 0 0 1
bcf PORTA,RA0bcf PORTA,RA3call DELAYbsf PORTA,RA0bsf PORTA,RA3
bcf PORTA,RA0bcf PORTA,RA2call DELAYbsf PORTA,RA0bsf PORTA,RA2
bcf PORTA,RA1bcf PORTA,RA2call DELAYbsf PORTA,RA1bsf PORTA,RA2
return
;_______________________________________________________________________________________________
SUBIR_A_2 call SUBIR
;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P1 ;¿ha llegado al piso nº 2?goto SUBIR_A_2movlw b'01011011' ;Activa display cátodo comun Piso 2movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;_________________________________________________________________________________________________
SUBIR_A_3 call SUBIR
;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estado
13
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
movwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P2 ;¿ha llegado al piso nº 3?goto SUBIR_A_3movlw b'01001111' ;Activa display cátodo comun Piso 3movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;__________________________________________________________________________________________________
SUBIR_A_4 call SUBIR
;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P3 ;¿ha llegado al piso nº 4?goto SUBIR_A_4movlw b'01100110' ;Activa display cátodo comun Piso 4movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
;____________________________________________________________________________________________________
SUBIR_A_5 call SUBIR;NOS ENCONTRAMOS LEYENDO EL PUERTO (A) DE E/S por ello; no pongo el MSSP en ON ni direcciona al chip (A)
call Read_Byte ;Lee el dispositivo (A) PCF8584 para conocer el estadomovwf PUERTOA ; de los 5 finales de carrera y de 3 puls. de llamadamovf PUERTOA,W ;lo vuelvo a poner en el banco W
andlw b'00011111' ;Discrimino para conocer el estado de los 5 finalesmovwf FinalesdeC ;los guardo en el registro
btfsc FinalesdeC,P4 ;¿ha llegado al piso nº 5?goto SUBIR_A_5movlw b'01101101' ;Activa display cátodo comun Piso 5movwf PORTB
bsf PORTA,RA0 ;SI; parar motorbsf PORTA,RA1bsf PORTA,RA2bsf PORTA,RA3
goto ABRIR ;ABRIR PUERTA
end ;Fin del programa fuente
14
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
;************************************************************************************************
; A S C E N S O R HEXADECIMAL
;************************************************************************************************
:020000040000FA:02000000452891:06000A002530B100B20137:10001000B20B0828B10B082808000C30A300A1017E:10002000A201A10B1128A20B1128A30B1128080073:100030002430A400A101A201A10B1C28A20B1C28A2:10004000A40B1C2808008C118316111483128C1D1C:10005000272808008C118316111583128C1D2E2859:1000600008008C1193008C1D332808008C11831616:10007000911583128C1D3A288C118316911211163A:1000800083128C1D412813080800831606309F0038:10009000850186011C308700803094000930930070:1000A0008312FF308500870186010714871403112E:1000B0002830940023207130312036201F39031D51:1000C0004D292A20283094002320713031203620F9:1000D000A50025081F39A70025086039A9002A2096:1000E000283094002320733031203620A6002608C3:1000F0000739A80026087839B0002A20A91A8128D3:100100009C28291B8428C02828188728E328A81899:100110008A28062928198D282929B01990289C2871:10012000301A9328C028B01A9628E328301B992843:1001300006290719622829292830940023207130C4:1001400031203620A50025081F39A70025082718CB:10015000AC28063086007029A718B1285B308600CD:10016000AE292719B6284F308600AE29A719BB281B:1001700066308600AE29271AA1286D308600AE2988:10018000283094002320713031203620A500250826:100190001F39A7002718CF2806308600182AA7186D:1001A000D4285B30860070292719D9284F30860063:1001B000BD29A719DE2866308600BD29271AC52863:1001C0006D308600BD292830940023207130312005:1001D0003620A50025081F39A7002718F228063069:1001E0008600272AA718F7285B308600272A2719B8:1001F000FC284F3086007029A71901296630860037:10020000CC29271AE8286D308600CC2928309400A4:100210002320713031203620A50025081F39A70082:100220002718152906308600362AA7181A295B30A8:100230008600362A27191F294F308600362AA7192B:100240002429663086007029271A0B296D30860014:10025000DB29283094002320713031203620A5007E:1002600025081F39A7002718382906308600452A97:10027000A7183D295B308600452A271942294F30AF:100280008600452AA719472966308600452A271A7D:100290002E296D3086007029EA213620A500250818:1002A0001F39A70027185729463086006B29A71841:1002B0005C295B3086006B29271961294F30860045:1002C0006B29A7196629663086006B29271A4C29E5:1002D0006D3086006B290514851405158515702968:1002E000851287100D208516871407108617182091:1002F00007148613051287100D2005162A20622880:100300003620A50025081F39A7002718892906309F:100310008600A7188D295B308600271991294F3058:100320008600A719952966308600271A99296D300D:100330008600051085110520051485158510851189:1003400005208514851585100511052085140515D2:10035000051005110520051405150800802136201B:10036000A50025081F39A7002718AE2906308600EA:100370000514851405158515702980213620A500E2:1003800025081F39A700A718BD295B308600051472:10039000851405158515702980213620A5002508AE:1003A0001F39A7002719CC294F3086000514851462:1003B00005158515702980213620A50025081F39CF:1003C000A700A719DB2966308600051485140515DA:1003D000851570293620A50025081F39A700271884:1003E000F32906308600A718F7295B308600271905:1003F000FB294F308600A719FF2966308600271A8F:10040000032A6D3086008510851105208514851519:100410000510851105200514851505100511052009:10042000051405158510051105208514051508000E:10043000EA213620A50025081F39A700A718182A89
15
F:\MIS PROYECTOS\ASCENSOR\ascensor.asm
:100440005B30860005148514051585157029EA2191:100450003620A50025081F39A7002719272A4F3065:10046000860005148514051585157029EA213620A6:10047000A50025081F39A700A719362A663086006F:1004800005148514051585157029EA213620A50067:1004900025081F39A700271A452A6D308600051444:0804A00085140515851570296E:00000001FF
;************************************************************************************************
16
top related