Professional Documents
Culture Documents
P=16F877A
INCLUDE
<P16F877A.INC>
__CONFIG
_XT_OSC
ERRORLEVEL
2
corroboracion de bancos al compilar
ORG
GOTO
ORG
0X00
ETIQUETAS
;Vector RESET
;Iniciar programa
0X05
ETIQUETAS
CBLOCK
0X20
INTER_1
;---------------------------------------------------------
INTER_2
;---------------------------------------------------------
INTER_3
ETIQUETAS-------------------------INTER_4
;---------------------;-------------------------DE------------------------------
INTER_5
INTERRUPTORES---------------------INTER_6
;---------------------;---------------------------------------------------------
ENDC
GOTO
PORTS
CLRF
STATUS
PORTS
BSF
MOVLW
0X06
MOVWF
ADCON1
MOVLW
0XFF
MOVWF
TRISA
CLRF
TRISB
;PORTA: IN
;PORTB: OUT
BCF
GOTO
CARGA
CARGA
;Carga de ESTADOS que ACTIVARAN
las SUBRUTINA SI se CUMPLE su ACTIVACION
MOVLW
0X01
MOVWF
INTER_1
MOVLW
0X02
MOVWF
INTER_2
MOVLW
0X04
MOVWF
INTER_3
MOVLW
0X08
MOVWF
INTER_4
MOVLW
0X10
MOVWF
INTER_5
MOVLW
0X20
MOVWF
INTER_6
GOTO
TEST
TEST
CLRF
PORTB
CLRF
PORTA
;Interruptor 1 activado?
MOVF
PORTA,0
XORWF
BTFSS
INTER_1,0
STATUS,2
GOTO
$+.2
( PORTA = INTER_2??)
GOTO
SUBRUT_1
;W <- PORTA
;W <- PORTA XOR INTER_1
;PORTA = INTER_1??
;NO, entonces testea la siguiente posibilidad
;SI
;Interruptor 2 activado?
MOVF
XORWF
BTFSS
PORTA,0
INTER_2,0
STATUS,2
;W <- PORTA
;W <- PORTA XOR INTER_2
;PORTA = INTER_2??
GOTO
$+.2
( PORTA = INTER_3??)
GOTO
SUBRUT_2
;Interruptor 3 activado?
MOVF
PORTA,0
XORWF
BTFSS
INTER_3,0
STATUS,2
GOTO
$+.2
( PORTA = INTER_4??)
GOTO
SUBRUT_3
;W <- PORTA
;W <- PORTA XOR INTER_3
;PORTA = INTER_3??
;NO, entonces testea la siguiente posibilidad
;SI
;Interruptor 4 activado?
MOVF
PORTA,0
XORWF
BTFSS
INTER_4,0
STATUS,2
GOTO
$+.2
( PORTA = INTER_5??)
GOTO
SUBRUT_4
;W <- PORTA
;W <- PORTA XOR INTER_4
;PORTA = INTER_4??
;NO, entonces testea la siguiente posibilidad
;SI
;Interruptor 5 activado?
MOVF
PORTA,0
XORWF
BTFSS
INTER_5,0
STATUS,2
GOTO
$+.2
( PORTA = INTER_6??)
GOTO
SUBRUT_5
;W <- PORTA
;W <- PORTA XOR INTER_5
;PORTA = INTER_5??
;NO, entonces testea la siguiente posibilidad
;SI
;Interruptor 6 activado?
MOVF
XORWF
BTFSS
PORTA,0
INTER_6,0
STATUS,2
;W <- PORTA
;W <- PORTA XOR INTER_6
;PORTA = INTER_6??
GOTO
TEST
;NO, entonces como ya no hay otra posibilidad
volvemos a comparar todos los estados
GOTO
SUBRUT_1
SUBRUT_6
;SI
MOVLW
d'51'
MOVWF
PORTB
MOVF
PORTA,0
ACTIVADA" la condicion "INTER_1"
XORWF
BTFSS
GOTO
otra condicion
INTER_1,0
STATUS,2
TEST
GOTO
$-.6
DESEADA (SUBRUTINA 1)"
SUBRUT_2
MOVLW
d'102'
MOVWF
PORTB
MOVF
PORTA,0
ACTIVADA" la condicion "INTER_2"
XORWF
BTFSS
GOTO
otra condicion
INTER_2,0
STATUS,2
TEST
GOTO
$-.6
DESEADA (SUBRUTINA 2)"
SUBRUT_3
MOVLW
0X04
MOVWF
PORTB
MOVF
PORTA,0
ACTIVADA" la condicion "INTER_3"
XORWF
BTFSS
GOTO
otra condicion
INTER_3,0
STATUS,2
TEST
GOTO
$-.6
DESEADA (SUBRUTINA 3)"
SUBRUT_4
MOVLW
0X08
MOVWF
PORTB
MOVF
PORTA,0
ACTIVADA" la condicion "INTER_4"
XORWF
BTFSS
GOTO
otra condicion
INTER_4,0
STATUS,2
TEST
GOTO
$-.6
DESEADA (SUBRUTINA 4)"
SUBRUT_5
MOVLW
0X10
MOVWF
PORTB
MOVF
PORTA,0
ACTIVADA" la condicion "INTER_5"
XORWF
INTER_5,0
BTFSS
STATUS,2
GOTO
TEST
condicion
GOTO
$-.6
DESEADA (SUBRUTINA 5)"
SUBRUT_6
MOVLW
0X20
MOVWF
PORTB
MOVF
PORTA,0
ACTIVADA" la condicion "INTER_6"
XORWF
INTER_6,0
BTFSS
STATUS,2
GOTO
TEST
condicion
GOTO
$-.6
DESEADA (SUBRUTINA 6)"
END