Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

;###############################################################################

LIST
p=PIC16F887
#include
p16f887.inc
ORG
0x00 ;Vector de Reset
GOTO
inicio ;Programa Principal
;############################# DEFINICIONES ####################################
w_temp

EQU 0x0C ;Variable para guar

status_temp

EQU

0x0D ; Variable para

con0

EQU

0x0E ;Variable de te

mult
con1

equ
EQU

0x20
0x0F ; Variable de t

con2

EQU

0x10 ;Variable de te

dar W
guardar STATUS
mporizacion
emporizacion
mporizacion
led_uno
EQU
0x11
led_dos
EQU
0x12
led_tres
EQU
0x13
led_cuatro
EQU
0x14
led_cinco
EQU
0x15
led_seis
EQU
0x16
led_siete
EQU
0x17
led_ocho
EQU
0x18
;################### Comienzo de programa ######################################
;#######################
ORG
MOVWF
MOVF
MOVWF
BCF
DECFSZ
MOVLW
MOVWF
BCF
BSF

Tratamiento de interrupciones #########################


0x04 ;Vector de interrupcion
w_temp ;Guarda W
STATUS,W
status_temp ;Guarda STATUS
INTCON,GIE
con0,F ;salta si tiempo =1 seg
0x3D ;Variable para temporizar
con0 ;con0 x divisor x TMR0 = 1 segundo
INTCON,T0IF
INTCON,GIE

;Tratamos el primer led


INCF
led_uno,F
MOVF
led_uno,W
SUBLW
0x0A ;10 ? (led_uno) --> W
BTFSS
STATUS,Z ; Si Z=1=> (led_uno)=10
MOVLW
0X00
MOVWF
led_uno ;0 --> led_uno
;Tratamos el segundo led
INCF
led_dos,F
MOVF
led_dos,W
SUBLW
0x0A
BTFSS
STATUS,Z
MOVLW
0X00
MOVWF
led_dos
;Tratamos el tercer led
INCF
led_tres,F

MOVF
MOVLW
BTFSS
MOVLW
MOVWF

led_tres,W
0x0A
STATUS,Z
0X00
led_tres

;Tratamos el cuarto led


INCF
led_cuatro,F
MOVF
led_cuatro,W
MOVLW
0x0A
BTFSS
STATUS,Z
MOVLW
0X00
MOVWF
led_cuatro
;Tratamos el quinto led
INCF
led_cinco,F
MOVF
led_cinco,W
MOVLW
0x0A
BTFSS
STATUS,Z
MOVLW
0X00
MOVWF
led_cinco
;Tratamos el sexto led
INCF
led_seis,F
MOVF
led_seis,W
MOVLW
0x0A
BTFSS
STATUS,Z
MOVLW
0X00
MOVWF
led_seis
;Tratamos el septimo led
INCF
led_siete,F
MOVF
led_siete,W
MOVLW
0x0A
BTFSS
STATUS,Z
MOVLW
0X00
MOVWF
led_siete
;Tratamos el octavo led
INCF
led_ocho,F
MOVF
led_ocho,W
MOVLW
0x0A
BTFSS
STATUS,Z
MOVLW
0X00
MOVWF
led_ocho
;####################### PROGRAMA PRINCIPAL ####################################
inicio
;BSF
STATUS,RP0 ;banco 1
;MOVWF
TRISB ;Configuracion PORTB
;CLRF
TRISA
;BCF
STATUS,RP0 ;banco 0
BSF STATUS,RP0
BCF STATUS,RP1
BCF TRISB,0
BCF TRISB,1
BCF TRISB,2
BCF TRISB,3
BCF TRISB,4
BCF TRISB,5
BCF TRISB,6

BCF TRISB,7
BCF STATUS,RP0
CLRF
MOVLW
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
MOVLW

INTCON
0x3F ;Variable para temporizar
led_uno ;led_uno=0
led_dos ; led_dos=0
led_tres ;led_tres=0
led_cuatro ;led_cuatro=0
led_cinco ;led_cinco=0
led_seis ;led_seis=0
led_siete ;led_siete=0
led_ocho ;led_ocho=0
B'10100000' ;Habilitamos interrupciones

MOVWF

INTCON

CALL
GOTO

led
bucle

T0IE
bucle

;###############################################################################
;Rutina prender y apagar led
led
MOVF
led_uno,W ; led uno prendid
o
MOVWF
PORTA
BSF
PORTB,0
CALL
retardo
BCF
PORTB,0
MOVF
MOVWF
BSF
CALL
BCF

led_dos,W ;led dos prendido


PORTA
PORTB,1
retardo
PORTB,1

MOVF

led_tres,W ;led tres prendi

MOVWF
BSF
CALL
BCF

PORTA
PORTB,2
retardo
PORTB,2

MOVF

led_cuatro,W ;led cuatro pr

MOVWF
BSF
CALL
BCF

PORTA
PORTB,3
retardo
PORTB,3

MOVF

led_cinco,W ;led cinco pren

MOVWF
BSF
CALL
BCF

PORTA
PORTB,4
retardo
PORTB,4

MOVF

led_seis,W ;led seis prendi

MOVWF
BSF
CALL

PORTA
PORTB,5
retardo

do

endido

dido

do

BCF

PORTB,5

MOVF

led_siete,W ;led siete pren

dido
MOVWF
BSF
CALL
BCF

PORTA
PORTB,6
retardo
PORTB,6

MOVF

led_ocho,W ;led ocho prendid

MOVWF
BSF
CALL
BCF

PORTA
PORTB,7
retardo
PORTB,7

RETURN
;###############################################################################
;rutina retardo
retardo
BCF INTCON,T0IF
;Limpiar bit desborde Timer 0
CLRF TMR0
espera
BTFSS INTCON,T0IF
DECFSZ mult,F
;GOTO retardo
RETURN
;########################### FIN DE PROGRAMA #####################
END ;Fin de Programa

You might also like