You are on page 1of 3

A/C LIST P=16F877A

INCLUDE "P16F877A.INC"

SENSOR EQU 0X20


FIJO EQU 0X21
PRUEBA EQU 0X22
VALOR EQU 0X23

ORG 0
NOP
GOTO INICIO

ORG 4
NOP
BTFSC PIR1, CCP1IF ; COMPROBAR INTERRUPCIÓN EN CCP1
GOTO INCREMENTO
BTFSC PIR2, CCP2IF ; COMPROBAR INTERRUPCIÓN EN CCP2
GOTO DECREMENTO
BTFSC INTCON, RBIF ; COMPROBAR INTERRUPCIÓN DE SENSOR
GOTO LEER_SENSOR
BTFSC INTCON, INTF ; COMPROBAR INTERRUPCIÓN DE SOBRECARGA
GOTO FINAL
INICIO
BSF STATUS, RP0 ; VAMOS AL BANCO 1
CLRF TRISD ; PUERTO D COMO SALIDA, PARA LOS 8 LEDS.
BCF TRISB, 1 ; RB1: SALIDA AIRE
MOVLW B'11011000'
MOVWF INTCON ;CONFIGURANDO INTERRUPCIONES
MOVLW B'00000100'
MOVWF PIE1 ; HABILITAR INTERRUPCIÓN DE CCP1
MOVLW B'00000001'
MOVWF PIE2 ; HABILITAR INTERRUPCIÓN DE CCP2

BCF STATUS,RP0 ; VOLVIENDO AL BANCO 0


MOVLW B'00110001' ;
MOVWF T1CON ; CONFIGURANDO TIMER1
MOVLW B'00000101'
MOVWF CCP1CON
MOVLW B'00000101'
MOVWF CCP2CON
MOVLW D'7'
MOVWF FIJO
CALL TABLA
MOVWF PORTD ;PONIENDO INICIALMENTE EN PORTD 25 GRADOS
BCF PORTB, 1 ; APAGAR AIRE.
MAIN
CLRWDT
GOTO MAIN
LEER_SENSOR
BCF INTCON, RBIF ; BORRAR BANDERA DE INTERRUPCION DEL PUERTO B
MOVLW B'01110000'
ANDWF PORTB,W
MOVWF SENSOR
SWAPF SENSOR,F ;LEYENDO PUERTO B
GOTO COMPROBAR
INCREMENTO
BCF PIR1, CCP1IF
MOVLW D'7'
XORWF FIJO,W
BTFSC STATUS,Z
RETFIE
INCF FIJO
MOVF FIJO,W
CALL TABLA
MOVWF PORTD
GOTO COMPROBAR
DECREMENTO
BCF PIR2, CCP2IF
MOVLW D'0'
XORWF FIJO,W
BTFSC STATUS,Z
RETFIE
DECF FIJO
MOVF FIJO, W
CALL TABLA
MOVWF PORTD
GOTO COMPROBAR
COMPROBAR
CLRF PRUEBA ; BORRAR PRUEBA
MOVLW D'7'
XORWF FIJO,W
BTFSC STATUS, Z ;COMPROBAR SI ESTA EN 25 GRADOS
GOTO BAJO
MOVLW D'0'
XORWF FIJO, W
BTFSC STATUS,Z
GOTO ALTO

MOVF FIJO,W
XORWF SENSOR, W
BTFSC STATUS, Z
GOTO BAJO
MOVF FIJO,W
MOVWF VALOR
AIRE INCF VALOR
MOVF SENSOR, W
XORWF VALOR, W
BTFSC STATUS, Z
GOTO ALTO
MOVLW D'7'
XORWF VALOR,W
BTFSC STATUS,Z
GOTO BAJO
GOTO AIRE
ALTO
BSF PORTB,1
RETFIE
BAJO
BCF PORTB, 1
RETFIE
TABLA
ADDWF PCL, F
RETLW B'00000001'
RETLW B'00000010'
RETLW B'00000100'
RETLW B'00001000'
RETLW B'00010000'
RETLW B'00100000'
RETLW B'01000000'
RETLW B'10000000'
FINAL
END

You might also like