Está en la página 1de 3

LIST P = 16F877A

INCLUDE<P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
ORG
GOTO
ORG

0X00
PORTS
0X05

CONTA_1
CONTA_2
CONTA_3

EQU
EQU
EQU

PORTS

CLRF
BSF
MOVLW
MOVWF
MOVLW
CLRF
BCF
GOTO
CLRF
CLRF
CLRF
CLRF
BTFSS

STATUS
STATUS,5
0X06
ADCON1
0XFF
TRISB
STATUS,5
INICIO
PORTA
PORTB
PORTC
PORTD
PORTA,0

;Limpiando el registro STATUS


;Entrando al banco 1
;Configurando el PORTA como digital

GOTO
CALL

AUN_NO
RETARDO_T

;NO entonces volvemos a preguntar


;Si el sensor se activo, entonces es

INICIO

AUN_NO
ado?

0X20
0X21
0X22

;PORTA: digital IN
;PORTB: digital OUT
;Entrando al banco 0

;El sensor ubicado en RA0 esta activ

pera 2 segundos
MOVLW
B'00111111'
segundos, entonces comienza a girar M1
MOVWF
PORTB
(M1 gira en sentido horario)
CALL
S1
active S1
CLRF
PORTA
S1
BTFSS
PORTA,1
ado?
GOTO
S1
MOVLW
B'00000000'
apaga M1
MOVWF
PORTB

;Si el sensor se activo y paso los 2

TODAVIA
ado?-E1

;que controla la faja transportadora


;El motor se transporta hasta que se
;El sensor ubicado en RA1 esta activ
;NO entonces volvemos a preguntar
;Si el sensor se activo, entonces se

BTFSS

PORTD,0

;El sensor ubicado en RD0 esta activ

GOTO
MOVLW
MOVWF
CALL

TODAVIA
B'00000001'
PORTD
RETARDO_1T

;NO entonces volvemos a preguntar


;Si el sensor se activo,

MOVWF

PORTD

;que controla la base transportadora

CALL

S2

;La base se transporta hasta que se

CLRF
BTFSS

PORTA
PORTA,2

;El sensor ubicado en RA2 esta activ

GOTO
BTFSS

S2
PORTD,1

;NO entonces volvemos a preguntar


;El sensor ubicado en RD1 esta activ

;Si el sensor se activo, entonces es

pera 4 segundos
SUBE
active S2
S2
ado?
AUN

ado?--E2
GOTO
MOVLW

AUN
B'00000010'

;NO entonces volvemos a preguntar


;Si el sensor se activo, entonces se

MOVWF
CALL

PORTD
S3

;El motor se transporta hasta que se

CLRF

PORTA

BTFSS

PORTA,3

apaga M1
active S3
S3
ado?

GOTO
S3
MOVLW
B'00000111'
mienza a girar M2
MOVWF
PORTC
(M2 gira en sentido horario)
CALL
RETARDO_2T
CALL
S4
CLRF
PORTA
S4
BTFSS
PORTA,4
ado?
GOTO
S4
TAMBIEN
BTFSS
PORTA,5
GOTO
TAMBIEN
GOTO
INICIO
RETARDO_T

movlw
movwf
movlw
movwf
movlw
movwf
nop
decfsz
goto
decfsz
lta si llega a 0
goto
ta_1
decfsz
lta si llega a 0
goto
ta_1
return

.20
CONTA_3
.100
CONTA_2
.250
CONTA_1

RETARDO_1T

.40
CONTA_3
.100
CONTA_2
.250
CONTA_1

movlw
movwf
movlw
movwf
movlw
movwf
nop
decfsz
goto
decfsz
lta si llega a 0
goto
ta_1
decfsz
lta si llega a 0

CONTA_1,1
$-.2
CONTA_2,1
$-.6
CONTA_3,1
$-.10

CONTA_1,1
$-.2
CONTA_2,1
$-.6
CONTA_3,1

;El sensor ubicado en RA3 esta activ


;NO entonces volvemos a preguntar
;Si el sensor se activo entonces co
;que controla la faja transportadora
; entonces espera 6 segundos
;El sensor ubicado en RA4 esta activ
;pregunta de nuevo

; W <- m
; CONTA_3 <- W
; W <-m
; CONTA_2 <- W
; W <- n
;CONTA_1W
;no opera
;CONTA_1CONTA_1-1 y salta si llego a 0
;NO es 0, entonces salta al nop
;SI es 0, entonces CONTA_2CONTA_2 -1 y sa
;No es 0, entonces regresa a cargar con
;SI es 0, entonces CONTA_2CONTA_2 -1 y sa
;No es 0, entonces regresa a cargar con

; W <- m
; CONTA_3 <- W
; W <-m
; CONTA_2 <- W
; W <- n
;CONTA_1W
;no opera
;CONTA_1CONTA_1-1 y salta si llego a 0
;NO es 0, entonces salta al nop
;SI es 0, entonces CONTA_2CONTA_2 -1 y sa
;No es 0, entonces regresa a cargar con
;SI es 0, entonces CONTA_2CONTA_2 -1 y sa

goto

$-.10

;No es 0, entonces regresa a cargar con

ta_1
return
RETARDO_2T

movlw
movwf
movlw
movwf
movlw
movwf
nop
decfsz
goto
decfsz
lta si llega a 0
goto
ta_1
decfsz
lta si llega a 0
goto
ta_1
return
END

.60
CONTA_3
.100
CONTA_2
.250
CONTA_1
CONTA_1,1
$-.2
CONTA_2,1
$-.6
CONTA_3,1
$-.10

; W <- m
; CONTA_3 <- W
; W <-m
; CONTA_2 <- W
; W <- n
;CONTA_1W
;no opera
;CONTA_1CONTA_1-1 y salta si llego a 0
;NO es 0, entonces salta al nop
;SI es 0, entonces CONTA_2CONTA_2 -1 y sa
;No es 0, entonces regresa a cargar con
;SI es 0, entonces CONTA_2CONTA_2 -1 y sa
;No es 0, entonces regresa a cargar con

También podría gustarte