Está en la página 1de 4

García González Axel Amadis

BANKSEL PORTB
EJERCICIO 1 MOVWF PORTB
GOTO Main
CBLOCK
aux,V_C,V_TMR
INTER
ENDC
BTFSS INTCON,TMR0IF ;COMPRUEBA
org 0x00
QUE SE ACTIVO LA INTERRUPCION TMR0
goto Inicio
GOTO INT_EXT
ORG 0X04
goto INTER
TMRO
GOTO INT_EXT
INT_TMR0
Inicio BANKSEL V_C
INCF V_C,F
BANKSEL OSCCON ;Programacion del MOVFW V_C
oscilador SUBLW.100 ;CAMBIAR
MOVLW b'01100111' ;Se programan 4 BTFSS STATUS,Z
[MHz] GOTO CONTINUA
MOVWF OSCCON CLRF V_C

BANKSEL LATB CONTINUA


CLRFLATB BANKSEL V_TMR ;V_TMR : 1->10 [Hz] 2-
BANKSEL ANSELB >15 [Hz] 3->20 [Hz]
CLRFANSELB MOVFW V_TMR
BANKSEL TRISB SUBLW.1
MOVLW b'00000001';B0 ENTRADA BTFSS STATUS,Z
(BOTON INT_EXT) B1:B7 SALI GOTO NO_1
MOVWF TRISB SI_1
MOVLW .162
;Activación de la interrupción externa por flanco de BANKSEL TMR0
de bajada MOVWF TMR0
;Activación de la interrupción del TMR0 GOTO FIN_TMR
BANKSEL INTCON NO_1
movlw 0xB0 ;GIE PEIE TMR0IE INTE BANKSEL V_TMR ;V_TMR : 1->10 [Hz] 2-
IOCIE TMR0IF INTF IOCIF >15 [Hz] 3->20 [Hz]
movwf INTCON ; 1 0 1 1 MOVFW V_TMR
0 0 0 0 SUBLW.31
BTFSS STATUS,Z
BANKSEL OPTION_REG ; SE GOTO SI_1
PROGRAMA EL PREESCALE PARA P=2 SI_2
movlw b'00000001' ; WPUEN MOVLW .162
INTEDG TMR0CS TMR0SE PSA PS2 PS1 PS0 BANKSEL TMR0
movwf OPTION_REG; 0 0 0 MOVWF TMR0
0 0 0 0 0 GOTO FIN_TMR

BANKSEL V_C
clrf V_C INT_EXT
BTFSS INTCON,INTF ;COMPRUEBA QUE SE
BANKSEL TMR0 ACTIVO LA INTERRUPCION EXTERNA
movlw .31 GOTO FIN_INT_EXT
movwf TMR0 BANKSEL PORTB
BTFSC PORTB,RB0
Main GOTO FIN_INT_EXT
BANKSEL V_C
LSLF V_C,W
García González Axel Amadis
BANKSEL V_TMR ;V_TMR : 1->10 [Hz] 2-
>15 [Hz] 3->20 [Hz]
MOVFW V_TMR
SUBLW.1
BTFSS STATUS,Z
GOTO NO_1_EXT

SI_1_EXT
BANKSEL V_TMR
INCF V_TMR,F
GOTO FIN_INT_EXT

NO_1_EXT
BANKSEL V_TMR ;V_TMR : 1->10 [Hz] 2-
>15 [Hz] 3->20 [Hz]
MOVFW V_TMR
SUBLW.2
BTFSS STATUS,Z
GOTO SI_3_EXT

SI_3_EXT
BANKSEL V_TMR
MOVLW .1
MOVWF V_TMR
GOTO FIN_INT_EXT

FIN_TMR
BCF INTCON,TMR0IF
RETFIE
FIN_INT_EXT
BCF INTCON,INTF
RETFIE

END

EJERCICIO 2
CBLOCK 0x20
V_V,cont_delay,cont_10ms,RANGO_ACTUAL,cont_100us,cont
_1s
García González Axel Amadis
ENDC
BANKSEL V_V
ORG 0x00 MOVWF V_V
GOTO INICIO SUBLW .76
BTFSS STATUS,C
INICIO GOTO RANK2
BANKSEL ADCON1 ;ADFM ADCS X RANK1 GOTO RANGO1 ;0-76
ADNREF ADPREF
MOVLW b'01110000' ; 0 111 - 0 00 RANK2 MOVWF V_V
MOVWF ADCON1 ;LEFT RC - VSS SUBLW .178
VCC BTFSC STATUS,C
GOTO RANK3
BANKSEL OSCCON ;Programacion del GOTO RANGO2 ;76-178
oscilador RANK3 GOTO RANGO3 ;178-255
MOVLW b'01101010' ;Se programan 4 [MHz]
MOVWF OSCCON RANGO2
BANKSEL RANGO_ACTUAL
BANKSEL TRISA MOVLW .02
BSF TRISA,0 ;Se configura el AN0 MOVWF RANGO_ACTUAL
BANKSEL ANSELA GOTO AG
BSF ANSELA,0 ;Se especifica como analogico
RANGO1
BANKSEL LATB BANKSEL RANGO_ACTUAL
CLRF LATB MOVLW .01
BANKSEL ANSELB MOVWF RANGO_ACTUAL
CLRF ANSELB GOTO AG
BANKSEL TRISB
MOVLW b'00000000';B0:B2 ENTRADA RANGO3
(BOTONES) B3:B5 SALIDA (INDIC. RANGO) BANKSEL RANGO_ACTUAL
MOVWF TRISB MOVLW .03
BANKSEL RANGO_ACTUAL ;INICIO RANGO MOVWF RANGO_ACTUAL
ACTUAL CON UN VALOR, POR EJEMPLO,1 GOTO AG
MOVLW .01
MOVWF RANGO_ACTUAL DELAY_1s ;RETRASO DE 1s PARA
Observar el LED prendido
CICLO movlw .10
movwf cont_1s
BANKSEL ADCON0 c1s call DELAY_100us
MOVLW b'00010000' ;Del bit 6:2 se decfsz cont_1s
selecciona el canal 00000->A0 00001->A1 etc... goto c1s
MOVWF ADCON0 ;Habilitar el RETURN
canal AN4
BSF ADCON0,ADON ;Prende el convertidor
CALL DELAY_72us ;6us*11.5=72us DELAY_100us
BSF ADCON0,ADGO ;Comenzar la conversión movlw .70
movwf cont_100us
ESPERA c100us call Retardo_10ms
BTFSC ADCON0,ADGO ;Conversión terminada? decfsz cont_100us
GOTO ESPERA ;Espera si aun no termina goto c100us
RETURN

BANKSEL ADRESH ; Se leen los 8 bits mas


significativos nada mas DELAY_72us
MOVFW ADRESH movlw .70
MOVWF V_V movwf cont_delay
MOVFW V_V c_d decfsz cont_delay
goto c_d
RETURN
García González Axel Amadis

Retardo_10ms
movlw d'250'
movwf cont_10ms
loop_int
nop
nop
decfsz cont_10ms
goto loop_int
return
AG
BANKSEL RANGO_ACTUAL
MOVLW .01
SUBWF RANGO_ACTUAL
BTFSS STATUS,Z
GOTO NO_UNO
SI_UNO
bsf PORTB,RB0
bcf PORTB,RB1
bcf PORTB,RB2
CALL DELAY_1s
movlw b'00000000'
movwf PORTB
GOTO CICLO
NO_UNO
BANKSEL RANGO_ACTUAL
MOVLW .02
SUBWF RANGO_ACTUAL
BTFSS STATUS,Z
GOTO ES_3
ES_2
bsf PORTB,RB0
bsf PORTB,RB1
bcf PORTB,RB2
CALL DELAY_1s
movlw b'00000000'
movwf PORTB
GOTO CICLO
ES_3
bsf PORTB,RB0
bsf PORTB,RB1
bsf PORTB,RB2
CALL DELAY_1s
movlw b'00000000'
movwf PORTB
GOTO CICLO
end

También podría gustarte