Vous êtes sur la page 1sur 5

LIST

P=16F877A

INCLUDE

<P16F877A.INC>

__CONFIG

_PWRTE_ON & _CP_OFF & _LVP_OFF & _WDT_OFF &

_XT_OSC

ERRORLEVEL
2
corroboracion de bancos al compilar

ORG
GOTO
ORG

0X00
ETIQUETAS

;Elimina el mensaje de error por

;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

STATUS,5 ;Banco -> 01

MOVLW

0X06

MOVWF

ADCON1

MOVLW

0XFF

MOVWF

TRISA

CLRF

TRISB

;Configurando PORTA como Digital

;PORTA: IN

;PORTB: OUT

BCF

STATUS,5 ;Banco -> 00

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

;NO, entonces testea la siguiente posibilidad


;SI

;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

;Volvemos a "COMPROBAR" si "SIGUE

INTER_1,0
STATUS,2
TEST

GOTO
$-.6
DESEADA (SUBRUTINA 1)"

;ya no entonces regresamos a comprobar


;sigue, entonces se "REPITE LA SUBRUTINA

SUBRUT_2
MOVLW

d'102'

MOVWF

PORTB

MOVF
PORTA,0
ACTIVADA" la condicion "INTER_2"
XORWF
BTFSS
GOTO
otra condicion

;Volvemos a "COMPROBAR" si "SIGUE

INTER_2,0
STATUS,2
TEST

GOTO
$-.6
DESEADA (SUBRUTINA 2)"

;ya no entonces regresamos a comprobar


;sigue, entonces se "REPITE LA SUBRUTINA

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

;;Volvemos a "COMPROBAR" si "SIGUE

;ya no entonces regresamos a comprobar


;sigue, entonces se "REPITE LA SUBRUTINA

MOVLW

0X08

MOVWF

PORTB

MOVF
PORTA,0
ACTIVADA" la condicion "INTER_4"
XORWF
BTFSS
GOTO
otra condicion

;Volvemos a "COMPROBAR" si "SIGUE

INTER_4,0
STATUS,2
TEST

GOTO
$-.6
DESEADA (SUBRUTINA 4)"

;ya no entonces regresamos a comprobar


;sigue, entonces se "REPITE LA SUBRUTINA

SUBRUT_5
MOVLW

0X10

MOVWF

PORTB

MOVF
PORTA,0
ACTIVADA" la condicion "INTER_5"
XORWF

;Volvemos a "COMPROBAR" si "SIGUE

INTER_5,0

BTFSS

STATUS,2

GOTO

TEST

;ya no entonces regresamos a comprobar otra

condicion
GOTO
$-.6
DESEADA (SUBRUTINA 5)"

;sigue, entonces se "REPITE LA SUBRUTINA

SUBRUT_6
MOVLW

0X20

MOVWF

PORTB

MOVF
PORTA,0
ACTIVADA" la condicion "INTER_6"
XORWF

;Volvemos a "COMPROBAR" si "SIGUE

INTER_6,0

BTFSS

STATUS,2

GOTO

TEST

;ya no entonces regresamos a comprobar otra

condicion
GOTO
$-.6
DESEADA (SUBRUTINA 6)"
END

;sigue, entonces se "REPITE LA SUBRUTINA