PROGRAMA QUE TIENE DOS ENTRADAS ANALOGAS EN LAS CUELES SE PUEDEN CONECTAR DOS SENSORES DE TEMPERATURA LM35
;O UNA REFERENCIA DE NIVEL DE TEMPERATURA Y POTECIOMETRO.
;RAO ESTA UN LM35 Y EN RA1 ESTA UN POTENCIOMETRO QUE ES EL QUE AJUSTA EL NIVEL DE TEMPERATURA MAXIMO.
LIST P=16F873A
#INCLUDE<P16F873A.INC>
;DECLARACION DE VARIABLES
;CONVERSOR ANALOGO DIGITAL DE TRES DIGITOS
;CONVERSOR DE TEMPERATURA
TIMER0 EQU 01
PCL EQU 02
STATUS EQU 03
PORTA EQU 05
PORTB EQU 06
ADCON0 EQU 1F
ADCON1 EQU 9F
ADRESL EQU 9E
ADRESH EQU 1E
INTCON EQU 0B
UNI_GRADOS EQU 20 ;
DEC_GRADOS EQU 21
CEN_GRADOS EQU 22
CONVERSION1 EQU 23 ;REGISTRO PARA ALMACENAR EL RESULTADO DE LA CONVERSION DEL CANAL0
REG1 EQU 24
REG2 EQU 25
REG3 EQU 26
PDel0 EQU 27
PDel1 EQU 28
BEN EQU 29 ;REGISTRO PARA CHEQUAREL EL CANAL DEL CUAL LLEVA EL RESULTADO DE LA CONVERSION.
POTENCIOMETRO EQU 2A ;REGISTRO PARA ALMACENAR EL RESULTADO DE LA CONVERSION DEL CANAL1
CONVERSION2 EQU 2B ;REGISTRO PARA ALMACENAR EL RESULTADO DE LA CONVERSION DEL CANAL0,NO MODIFICADO
CENREF_GRADOS EQU 2C
DECREF_GRADOS EQU 2D
UNIREF_GRADOS EQU 2E;
CONVERSION3 EQU 2F ;REGISTRO PARA ALMACENAR EL RESULTADO DE LA CONVERSION DEL CANAL1,NO MODIFICADO
;BITS CONVERSOR
ADIF EQU 6
GODONE EQU 2
ADON EQU 0
ADFM EQU 7
C EQU 0
ORG 00
GOTO INICIO
ORG 05
TEMPO ;return
; Code generated by PDEL ver 1.0 on 06/07/2007 at 01:44:07 p.m.
; Description: Waits 2000 cycles
;-------------------------------------------------------------
PDelayA movlw .249 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoopB clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 goto PDelL3 ; 2 cycles delay
PDelL3
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoopB ; 2 no, loop
PDelL4 goto PDelL5 ; 2 cycles delay
PDelL5 clrwdt ; 1 cycle delay
return ; 2+2 Done
return ; 2+2 Done
TABLA ADDWF PCL,1
RETLW B'11000000'
RETLW B'11111001'
RETLW B'10100100'
RETLW B'10110000'
RETLW B'10011001'
RETLW B'10010010'
RETLW B'10000010'
RETLW B'11111000'
RETLW B'10000000'
RETLW B'10011000'
RETLW B'10111111'
RETLW B'11111111'
RETARDO ;return
; Code generated by PDEL ver 1.0 on 06/07/2007 at 07:46:41 p.m.
; Description: Waits 500 cycles
;-------------------------------------------------------------
PDelay movlw .123 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop0H clrwdt ; 1 clear watchdog
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop0H ; 2 no, loop
PDelL1H goto PDelL2H ; 2 cycles delay
PDelL2H clrwdt ; 1 cycle delay
return ; 2+2 Done
INICIO
BSF STATUS,5
BCF STATUS,6
CLRF PORTB
MOVLW 05
MOVWF ADCON1
MOVLW B'000011'
MOVWF PORTA
CLRF PORTC
BCF STATUS,5
CLRF PORTA
CLRF PORTB
CLRF PORTC
COROSO
CLRF UNI_GRADOS
CLRF DEC_GRADOS
CLRF CEN_GRADOS
CLRF CONVERSION1
CLRF CONVERSION2
CLRF POTENCIOMETRO
CLRF UNIREF_GRADOS
CLRF DECREF_GRADOS
CLRF CENREF_GRADOS
CLRF CONVERSION3
BCF STATUS,5
BSF STATUS,5
MOVLW B'10000101' ;RA0,RA1 ANALOGOS JUSTIFICACION LOS OCHO PRIMEROS BITS
;DE ADRESL Y DOS BITS DE ADRESH;RA2;RA3,RA4,RA5 DIGITALES
MOVWF ADCON1
BCF STATUS,5
EEE MOVLW B'01000001' ;CANAL0
MOVWF ADCON0
CLRF BEN ; SEÑAL PARA CANAL0
BCF STATUS,5
CALL EMP
CALL VISUAL
MOVLW B'01001001' ;CANAL1
MOVWF ADCON0
BSF BEN,0;SEÑAL PARA CANAL1
CALL EMP
CALL DECOD
CALL VISUAL
GOTO COROSO ;VOLVER A INICIAR LOS CHEQUEOS DE LOS RESPECTIVOS CANALES.RA0,RA1
EMP BCF PIR1,ADIF
BSF ADCON0,GODONE
CALL TEMPO
NOP
EL BTFSS PIR1,ADIF
GOTO EL
BCF PIR1,ADIF
BSF STATUS,5
BCF STATUS,6
MOVF ADRESL,0 ;LOW PARTE
BCF STATUS,5
BTFSS BEN,0 ;DE QUE CANAL VENGO?
GOTO FET ; BEN,0 :0 CANAL0
MOVWF POTENCIOMETRO ;BEN,0 :1 CANAL1
BCF STATUS,0
RRF POTENCIOMETRO,0
MOVWF POTENCIOMETRO
MOVWF CONVERSION3
RETURN ;ACONDICIONAMINTO DEL VALOR REAL DE ENTRADA RA1
FET BCF STATUS,0
MOVWF CONVERSION1
MOVWF CONVERSION2
RRF CONVERSION1,1 ;ACONDICIONAMINTO DEL VALOR REAL DE ENTRADA RA0
BCF STATUS,0 ;DECODIFICACION DEL RESULTADO DEL ADRESL
RRF CONVERSION2,1
MOVLW .100
LL SUBWF CONVERSION1,1
BTFSS STATUS,0
GOTO KK
INCF CEN_GRADOS,1
GOTO LL
KK ADDWF CONVERSION1
MOVLW .10
MM SUBWF CONVERSION1,1
BTFSS STATUS,0
GOTO NN
INCF DEC_GRADOS,1
GOTO MM
NN ADDWF CONVERSION1,0
MOVWF UNI_GRADOS
RETURN
DECOD
MOVLW .100
PP SUBWF POTENCIOMETRO,1
BTFSS STATUS,0
GOTO OO
INCF CENREF_GRADOS,1
GOTO PP
OO ADDWF POTENCIOMETRO,1
MOVLW .10
SS SUBWF POTENCIOMETRO,1
BTFSS STATUS,0
GOTO RR
INCF DECREF_GRADOS,1
GOTO SS
RR ADDWF POTENCIOMETRO,0
MOVWF UNIREF_GRADOS
MOVF CONVERSION3,0
SUBWF CONVERSION2,1 ;RESTA DEL CANAL0-CANAL1 ;CONVERCION2 - POTENCIOMETRO
BTFSC STATUS,0
GOTO PRENDA
BCF PORTA,5
RETURN ;APAGO VENTILADOR
PRENDA
BSF PORTA,5 ;PRENDO VENTILADOR
RETURN
VISUAL
MOVF UNI_GRADOS,0
CALL TABLA
BCF PORTA,3
MOVWF PORTB
BSF PORTA,2
CALL RETARDO
MOVF DEC_GRADOS,0
CALL TABLA
BCF PORTA,2
MOVWF PORTB
BSF PORTC,0
CALL RETARDO
MOVF UNIREF_GRADOS,0
CALL TABLA
BCF PORTA,3
CLRF PORTC
MOVWF PORTB
BSF PORTC,0
CALL RETARDO
MOVF DECREF_GRADOS,0
CALL TABLA
CLRF PORTC
MOVWF PORTB
BSF PORTC,1
CALL RETARDO
RETURN
END