+ All Categories
Home > Documents > ASCENSOR, fotos, esquemas y

ASCENSOR, fotos, esquemas y

Date post: 23-Mar-2016
Category:
Upload: joaquin-berrocal
View: 243 times
Download: 6 times
Share this document with a friend
Description:
ASCENSOR realizado con el carro de una impresora de formato A3 dispone de 5 pisos. Fotos construcción, esquemas, circuito emsamblador y hexadecimal para grabar en el PIC16F876. Majena el BUS I2C para aumentar las puertas de E/S con el PCF8574P
Popular Tags:
33
ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002) Visitar; http://iesccp.comze.com/ 1
Transcript
Page 1: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 1

Page 2: ASCENSOR, fotos, esquemas y

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

Page 3: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 3

Page 4: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 4

Page 5: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 5

Page 6: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 6

Page 7: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 7

Page 8: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 8

Page 9: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 9

Page 10: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 10

Page 11: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 11

Page 12: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 12

Page 13: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 13

Page 14: ASCENSOR, fotos, esquemas y

ASCENSOR DE 5 PISOS (en ensamblador) JOAQUÍN BERROCAL PIRIS (2002)

Visitar; http://iesccp.comze.com/ 14

Page 15: ASCENSOR, fotos, esquemas y

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

+

Page 16: ASCENSOR, fotos, esquemas y

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

+

Page 17: ASCENSOR, fotos, esquemas y

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

Page 18: ASCENSOR, fotos, esquemas y

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

Page 19: ASCENSOR, fotos, esquemas y

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

Page 20: ASCENSOR, fotos, esquemas y

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

Page 21: ASCENSOR, fotos, esquemas y

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

Page 22: ASCENSOR, fotos, esquemas y

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

Page 23: ASCENSOR, fotos, esquemas y

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

Page 24: ASCENSOR, fotos, esquemas y

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

Page 25: ASCENSOR, fotos, esquemas y

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

Page 26: ASCENSOR, fotos, esquemas y

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

Page 27: ASCENSOR, fotos, esquemas y

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

Page 28: ASCENSOR, fotos, esquemas y

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

Page 29: ASCENSOR, fotos, esquemas y

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

Page 30: ASCENSOR, fotos, esquemas y

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

Page 31: ASCENSOR, fotos, esquemas y

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

Page 32: ASCENSOR, fotos, esquemas y

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

Page 33: ASCENSOR, fotos, esquemas y

F:\MIS PROYECTOS\ASCENSOR\ascensor.asm

:100440005B30860005148514051585157029EA2191:100450003620A50025081F39A7002719272A4F3065:10046000860005148514051585157029EA213620A6:10047000A50025081F39A700A719362A663086006F:1004800005148514051585157029EA213620A50067:1004900025081F39A700271A452A6D308600051444:0804A00085140515851570296E:00000001FF

;************************************************************************************************

16


Recommended