Você está na página 1de 3

LIST P=16F877A

include<P16F877A.inc>
;DECLARACION DE FUSIBLES
__CONFIG _XT_OSC & _CP_OFF & _WDT_OFF & _PWRTE_ON
;ETIQUETAS
CONTA_3
CONTA_2
CONTA_1
CONTA_10
CONTA_5

EQU
EQU
EQU
EQU
EQU

0X20
0X21
0X22
0X23
0X24

;INICIO DE PROGRAMA
ORG 0
GOTO INICIO
ORG 5
INICIO

ELECCION
AUTOMATICO

BSF STATUS,5
MOVLW 0X06
MOVWF ADCON1
MOVLW 0XFF
MOVWF TRISA
CLRF TRISB
BCF STATUS,5
CLRF PORTA
CLRF PORTB
BTFSC PORTA,4
GOTO AUTOMATICO
GOTO MANUAL
MOVLW B'00000101'
MOVWF PORTB
CALL RETARDOF
MOVLW B'00000001'
MOVWF PORTB
CALL RETARDO_I
MOVLW B'00000101'
MOVWF PORTB
CALL RETARDOF
MOVLW B'00000100'
MOVWF PORTB
CALL RETARDO_I
MOVLW B'00000101'
MOVWF PORTB
CALL RETARDOF
MOVLW B'00001010'
MOVWF PORTB
CALL RETARDOB
CLRF PORTB

MANUAL

CLRF PORTA
CLRF PORTB

AVANCE

BTFSS PORTA,0
GOTO DERECHA
GOTO F_ACT_FWD

DERECHA
IZQUIERDA

ATRAS

BTFSS PORTA,1
GOTO IZQUIERDA
GOTO D_ACT_DER
BTFSS
PORTA,2
GOTO
ATRAS
GOTO
I_ACT_IZQ
BTFSS
GOTO
GOTO

PORTA,3
MANUAL
B_ACT_ATRAS

F_ACT_FWD
MOVLW
B'00000101'
orario)giran de manera que el carro avanza
MOVWF
PORTB
BTFSS
PORTA,4
GOTO
SIGUE_FWD
GOTO
AUTOMATICO
SIGUE_FWD
BTFSC
PORTA,0
GOTO
F_ACT_FWD
GOTO
MANUAL
B_ACT_ATRAS

SIGUE_ATRAS

D_ACT_DER

;M1 y M2 (giran en sentido h

MOVLW
MOVWF
BTFSS
GOTO
GOTO
BTFSC
GOTO
GOTO

B'00001010'
PORTB
PORTA,4
SIGUE_ATRAS
AUTOMATICO
PORTA,3
B_ACT_ATRAS
MANUAL

MOVLW
MOVWF
BTFSS

B'00000001'
PORTB
PORTA,4

;Esta activado el modo autom

GOTO
GOTO
BTFSC

SIGUE_DER
AUTOMATICO
PORTA,1

;NO
;SI
;Esta desactivado el modo de

GOTO
GOTO

D_ACT_DER
MANUAL

atico?
SIGUE_DER
recha?

I_ACT_IZQ
MOVLW
B'00000100'
el carro rota haia la izquierda
MOVWF
PORTB
BTFSS
PORTA,4
atico?
GOTO
SIGUE_IZQ
GOTO
AUTOMATICO
SIGUE_IZQ
BTFSC
PORTA,2
quierda
GOTO
I_ACT_IZQ
GOTO
MANUAL
RETARDOB

MOVLW
MOVWF
MOVLW
MOVWF
movlw
movwf

d'10'
CONTA_10
d'5'
CONTA_5
d'10'
CONTA_3

;M1 y M2 giran de manera que


;Esta activado el modo autom
;NO
;SI
;Esta desactivado el modo iz
;NO
;SI

movlw
movwf
movlw
movwf
nop
decfsz

d'100'
CONTA_2
d'250'
CONTA_1

goto
decfsz
goto
decfsz
goto
DECFSZ
GOTO
DECFSZ
GOTO
return

$-.2
CONTA_2,F
$-.6
CONTA_3,F
$-.10
CONTA_5,F
$-.14
CONTA_10,F
$-.18

MOVLW
MOVWF
movlw
movwf
movlw
movwf
movlw
movwf
nop
decfsz
goto
decfsz
goto
decfsz
goto
DECFSZ
goto
return

d'5'
CONTA_5
d'10'
CONTA_3
d'100'
CONTA_2
d'250'
CONTA_1

movlw
movwf
movlw
movwf
movlw
movwf
nop
decfsz
goto
decfsz
goto
decfsz
goto
return
END

d'10'
CONTA_3
d'100'
CONTA_2
d'250'
CONTA_1

CONTA_1,F

a si llega a cero

RETARDOF

RETARDO_I

CONTA_1,F
$-.2
CONTA_2,F
$-.6
CONTA_3,F
$-.10
CONTA_5,F
$-.14

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

;no opera
;CONTA_1<-CONTA_1 - 1 y salt

Você também pode gostar