AYUDA CONTROL DE TEMPERATURA
Publicado por sasha (1 intervención) el 20/03/2013 05:41:03
hola! me gustaria saber si alguien podria ayudarme a ponerle un set point (o una temperatura fija) a este control de temperatura para que pueda prender el led en RB0 cuando la temperatura sea mayor a 30 grados y se apague cuando sea menor, por favor he intentado de mil formas y nada mas no le encuentro donde y como debe ir, solo tengo la idea de que tengo que hacer una comparacion con una resta pero no se que debo restar con que ni en que parte del programa ponerlo, este programa solo muestra la temperatura que da el sensor lm35 en uns pantalla LCD, les agradeceria mucho su ayuda!
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
INCLUDE <P16F887.INC> ;DECLARO LA LIBRERIA DEL MICROCONTROLADOR CORRESPONDIENTE
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
;P A L A B R A D E C O N F I G U R A C I O N
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR40V
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
CBLOCK 0X20
NUM1,NUM2,NUM3
PORTLCDT,PORTLCDTEMP,PORTDTEMP
POINTER ;REGISTROS UTILIZADOS EN BINBCD Y EN LA ADQUISICION DE DATOS
UNIDADES,DECENAS ;
CENTENAS,MILLARES
DATOH
SAMPLE
SHIFT
ENDC
CBLOCK 0X70 ;SE COLOCA A DATOL EN UNA DE LAS LOCALIDADES DE
DATOL ;MEMORIA QUE ESTAN ESPEJADAS EN BANCO0 Y BANCO1
ENDC
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
ERRORLEVEL -207 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 207
ERRORLEVEL -302 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 302
ERRORLEVEL -305 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 305
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
#DEFINE RS PORTC,2
#DEFINE EN PORTC,3
LIMPIAR EQU B'00000001' ;LIMPIA TODA LA PANTALLA
RENGLON1 EQU B'10000000' ;COLOCA EN EL RENGLON 1
RENGLON2 EQU B'11000000' ;COLOCA EN EL RENGLON2
DISON EQU B'00001100' ;ENCIENDE EL DISPLAY
HOME EQU B'00000010' ;VA A LA DIDERCCION 0
SHIFTDL EQU B'00011100' ;ROTA EL LCD A LA IZQUIERDA
SHIFTDR EQU B'00011000' ;ROTA EL LCD A LA DERECHA
SHIFTCL EQU B'00010100' ;ROTA EL CURSOR A LA IZQUIERDA
SHIFTCR EQU B'00010000' ;ROTA EL CURSOR A LA DERECHA
PORTLCD EQU PORTD
ORG 0X00 ; VECTOR DE INICIO O RESET
GOTO CONFIGURACION
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-TABLAS DE DATOS PARA LA SUBRUTINA BINBCD_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
TABLAU ;TABLA DE UNIDADES
MOVF POINTER,W
ADDWF PCL,F
RETLW D'2'
RETLW D'6'
RETLW D'8'
RETLW D'4'
RETLW D'2'
RETLW D'6'
RETLW D'8'
RETLW D'4'
RETLW D'2'
RETLW D'1'
TABLAD ;TABLA DE DECENAS
MOVF POINTER,W
ADDWF PCL,F
RETLW D'1'
RETLW D'5'
RETLW D'2'
RETLW D'6'
RETLW D'3'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
TABLAC ;TABLA DE CENTENAS
MOVF POINTER,W
ADDWF PCL,F
RETLW D'5'
RETLW D'2'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
CONFIGURACION
BANKSEL TRISA
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
BANKSEL PORTB ;ELIMINO POSIBLES LATCH EN LOS PUERTOS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CALL INIT_ADQUI ;LLAMO A LA SUBRUTINA DE INICIALIZACION DE EL MODULO ADC
CALL INITLCD ;;LLAMO A LA SUBRUTINA DE INICIALIZACION DE LA LCD
START
CALL D16X2 ;LLAMO A LA SUBRUTINA QUE ESCRIBE EL MENSAJE INICIAL
;CODIGO QUE HACE QUE SE EJECUTE EL COMANDO DE ROTACION A LA DERECHA X VECES
MOVLW .14
MOVWF SHIFT
VUELTA
CALL RETARDO
MOVLW SHIFTDR ;COMANDO DE ROTACION
CALL CMD
DECFSZ SHIFT,F
GOTO VUELTA
MOVLW LIMPIAR ;COMANDO DE LIMPIEZA DE PANTALLA
CALL CMD
OPERA
MOVLW RENGLON1 ;COMANDO PARA EMPEZAR A ESCRIBIR A PARTIR
CALL CMD ;DE LA PRIMERA DIRECCION DEL RENGLON1
CALL ADQUI ;SE LLAMA A LA SUBRUTINA DE ADQUISICION DE DATOS DEL ADC
CALL BINBCD ;LLAMO A LA SUBRUTINA QUE CONVIERTE DE BINARIO A ASCII
;****************************************
MOVF MILLARES,W
CALL DATO
MOVF CENTENAS,W
CALL DATO
MOVF DECENAS,W
CALL DATO
MOVF UNIDADES,W
CALL DATO
;****************************************
MOVLW ' '
CALL DATO
MOVLW 0XDF ;° (grados)
CALL DATO
MOVLW 'C'
CALL DATO
GOTO OPERA ;REGRESO AL INICIO DEL PROGRAMA PRINCIPAL
;**************************SUBRUTINA DE LOS MENSAJES **************************
D16X2
MOVLW "P"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "O"
CALL DATO
MOVLW "Y"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "C"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "O"
CALL DATO
MOVLW RENGLON2
CALL CMD
MOVLW "T"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "M"
CALL DATO
MOVLW "P"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "U"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO
MOVLW " "
CALL DATO
MOVLW "A"
CALL DATO
MOVLW "/"
CALL DATO
MOVLW "D"
CALL DATO
RETURN
;**********************SUBRUTINA DE ADQUISICION DEL ADC**********************
ADQUI:
CALL SAMPLETIME ;RETARTO DE ADQUISICION
BSF ADCON0,GO ;INICIA LA CONVERSION
BTFSC ADCON0,GO ;YA SE TERMINO LA CONVERSION?
GOTO $-1 ;NO? PREGUNTA DE NUEVO
BANKSEL ADRESH ;SI, CONTINUA
MOVF ADRESH,W ;LEE LA PARTE MAS SIGNIFICATIVA
MOVWF DATOH ;GUARDALO EN DATOH
BANKSEL ADRESL ;CAMBIO A BANCO1
MOVF ADRESL,W ;LEE LA PARTE MENOS SIGNIFICATIVA
MOVWF DATOL ;GUARDALO EN DATOL
BANKSEL PORTB ;CAMBIO A BANCO0
BCF STATUS,C ;BORRA EL BIT DE ACARREO
RRF DATOH,F ;ELIMINO EL BIT MENOS SIGNIFICATIVO
RRF DATOL,F ;PARA OCUPAR SOLO 9 BITS SI QUIERO 8 BITS COPIO Y PEGO ESTOS 3 RENGLONES Y ASI SUCESIVAMENTE
;SI QUIERO 7 LO COPIO OTRA DOS VECES.
RETURN
SAMPLETIME:
MOVLW .225
MOVWF SAMPLE
ESPERA_S:
NOP
NOP
DECFSZ SAMPLE,F
GOTO ESPERA_S
RETURN
BINBCD
CLRF MILLARES
CLRF UNIDADES
CLRF DECENAS
CLRF CENTENAS
CLRF POINTER
OTRA
BTFSS DATOH,7
GOTO ROTA
CALL TABLAU
ADDWF UNIDADES,F
CALL TABLAD
ADDWF DECENAS,F
CALL TABLAC
ADDWF CENTENAS,F
;****************************************
MOVF UNIDADES,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYOR
GOTO MENOR
MAYOR
INCF DECENAS,F
MOVLW D'10'
SUBWF UNIDADES,F
GOTO DECE
MENOR
MOVLW D'10'
SUBWF UNIDADES,W
BTFSS STATUS,Z
GOTO DECE
GOTO MAYOR
;****************************************
DECE
MOVF DECENAS,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORD
GOTO MENORD
MAYORD
INCF CENTENAS,F
MOVLW D'10'
SUBWF DECENAS,F
GOTO CENTE
MENORD
MOVLW D'10'
SUBWF DECENAS,W
BTFSS STATUS,Z
GOTO CENTE
GOTO MAYORD
;****************************************
CENTE
MOVF CENTENAS,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORC
GOTO MENORC
MAYORC
INCF MILLARES,F
MOVLW D'10'
SUBWF CENTENAS,F
GOTO MILLA
MENORC
MOVLW D'10'
SUBWF CENTENAS,W
BTFSS STATUS,Z
GOTO MILLA
GOTO MAYORC
;****************************************
MILLA
MOVF MILLARES,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORM
GOTO MENORM
MAYORM
MOVLW D'10'
SUBWF MILLARES,F
GOTO ROTA
MENORM
MOVLW D'10'
SUBWF MILLARES,W
BTFSS STATUS,Z
GOTO ROTA
GOTO MAYORM
;****************************************
ROTA
RLF DATOL,F
RLF DATOH,F
INCF POINTER,F
MOVF POINTER,W
SUBLW D'10'
BTFSS STATUS,Z
GOTO OTRA
MOVLW 0X30
ADDWF UNIDADES,F
MOVLW 0X30
ADDWF DECENAS,F
MOVLW 0X30
ADDWF CENTENAS,F
MOVLW 0X30
ADDWF MILLARES,F
RETURN
;**********************SUBRUTINA DE CONFIGURACION DEL ADC **********************
INIT_ADQUI:
BSF STATUS,RP0
BSF TRISA,0
CLRF ADCON1
BCF STATUS,RP0
MOVLW B'11000001'
MOVWF ADCON0
RETURN
INITLCD
MOVLW B'00110000';1
CALL DATOX
MOVLW B'00110000';2
CALL DATOX
MOVLW B'00110000';3
CALL DATOX
;DL=1 ->8 BITS;DL=0 ->4 BITS
;N=1 ->2 LINEAS N=0 ->1 LINEA
;F=1 ->5X11 F=0 ->5X8
MOVLW B'00100000';4
CALL DATOX
MOVLW B'00100000';5 Function set 0 0 1 DL N F X X
CALL DATOX
MOVLW B'10000000'
CALL DATOX
;D=1 ->DISPLAY-ON
;C=1 ->CURSOR-ON
;B=1 ->PARPADEO-ON
; 0 0 0 0 1 D C B
MOVLW B'00000000';6 Display control
CALL DATOX
MOVLW B'10000000'
CALL DATOX
MOVLW B'00000000';7
CALL DATOX
MOVLW B'11000000'
CALL DATOX
;CONFIGURACION DE ESCRITURA DECREMENTAL-INCREMENTAL
;I/D=1 ->INCREMENTAL AUTOMATICO
;SH=1 ->PARPADEA PANTALLA COMPLETA
; 0 0 0 0 0 1 I/D SH
MOVLW B'00000000';8 Cursor and display shift 0x06
CALL DATOX
MOVLW B'01100000'
CALL DATOX
MOVLW HOME
CALL CMD
MOVLW LIMPIAR
CALL CMD
RETURN
DATOX
MOVWF PORTLCDT
MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
BCF RS
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN
DATO
BSF RS
MOVWF PORTLCDT
MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
SWAPF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN
CMD
BCF RS
MOVWF PORTLCDT
MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
SWAPF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN
RETARDO5MS
MOVLW D'1'
MOVWF NUM3
OTRA25 MOVLW D'100'
MOVWF NUM2
OTRA15 MOVLW D'166'
MOVWF NUM1
OTRA5 DECFSZ NUM1,F
GOTO OTRA5
DECFSZ NUM2,F
GOTO OTRA15
DECFSZ NUM3,F
GOTO OTRA25
RETURN
RETARDO ;retardo de recorrimiento de proyecto...
MOVLW .1
MOVWF NUM3
OTRA1 MOVLW .200
MOVWF NUM2
OTRAR MOVLW .166
MOVWF NUM1
DECFSZ NUM1,F
GOTO $-1
DECFSZ NUM2
GOTO OTRAR
DECFSZ NUM3
GOTO OTRA1
RETURN
END
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
INCLUDE <P16F887.INC> ;DECLARO LA LIBRERIA DEL MICROCONTROLADOR CORRESPONDIENTE
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
;P A L A B R A D E C O N F I G U R A C I O N
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR40V
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
CBLOCK 0X20
NUM1,NUM2,NUM3
PORTLCDT,PORTLCDTEMP,PORTDTEMP
POINTER ;REGISTROS UTILIZADOS EN BINBCD Y EN LA ADQUISICION DE DATOS
UNIDADES,DECENAS ;
CENTENAS,MILLARES
DATOH
SAMPLE
SHIFT
ENDC
CBLOCK 0X70 ;SE COLOCA A DATOL EN UNA DE LAS LOCALIDADES DE
DATOL ;MEMORIA QUE ESTAN ESPEJADAS EN BANCO0 Y BANCO1
ENDC
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
ERRORLEVEL -207 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 207
ERRORLEVEL -302 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 302
ERRORLEVEL -305 ; ELIMINO DE LA VENTANA DE COMPILACION EL ERROR 305
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
#DEFINE RS PORTC,2
#DEFINE EN PORTC,3
LIMPIAR EQU B'00000001' ;LIMPIA TODA LA PANTALLA
RENGLON1 EQU B'10000000' ;COLOCA EN EL RENGLON 1
RENGLON2 EQU B'11000000' ;COLOCA EN EL RENGLON2
DISON EQU B'00001100' ;ENCIENDE EL DISPLAY
HOME EQU B'00000010' ;VA A LA DIDERCCION 0
SHIFTDL EQU B'00011100' ;ROTA EL LCD A LA IZQUIERDA
SHIFTDR EQU B'00011000' ;ROTA EL LCD A LA DERECHA
SHIFTCL EQU B'00010100' ;ROTA EL CURSOR A LA IZQUIERDA
SHIFTCR EQU B'00010000' ;ROTA EL CURSOR A LA DERECHA
PORTLCD EQU PORTD
ORG 0X00 ; VECTOR DE INICIO O RESET
GOTO CONFIGURACION
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-TABLAS DE DATOS PARA LA SUBRUTINA BINBCD_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
TABLAU ;TABLA DE UNIDADES
MOVF POINTER,W
ADDWF PCL,F
RETLW D'2'
RETLW D'6'
RETLW D'8'
RETLW D'4'
RETLW D'2'
RETLW D'6'
RETLW D'8'
RETLW D'4'
RETLW D'2'
RETLW D'1'
TABLAD ;TABLA DE DECENAS
MOVF POINTER,W
ADDWF PCL,F
RETLW D'1'
RETLW D'5'
RETLW D'2'
RETLW D'6'
RETLW D'3'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
TABLAC ;TABLA DE CENTENAS
MOVF POINTER,W
ADDWF PCL,F
RETLW D'5'
RETLW D'2'
RETLW D'1'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
RETLW D'0'
CONFIGURACION
BANKSEL TRISA
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
BANKSEL PORTB ;ELIMINO POSIBLES LATCH EN LOS PUERTOS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CALL INIT_ADQUI ;LLAMO A LA SUBRUTINA DE INICIALIZACION DE EL MODULO ADC
CALL INITLCD ;;LLAMO A LA SUBRUTINA DE INICIALIZACION DE LA LCD
START
CALL D16X2 ;LLAMO A LA SUBRUTINA QUE ESCRIBE EL MENSAJE INICIAL
;CODIGO QUE HACE QUE SE EJECUTE EL COMANDO DE ROTACION A LA DERECHA X VECES
MOVLW .14
MOVWF SHIFT
VUELTA
CALL RETARDO
MOVLW SHIFTDR ;COMANDO DE ROTACION
CALL CMD
DECFSZ SHIFT,F
GOTO VUELTA
MOVLW LIMPIAR ;COMANDO DE LIMPIEZA DE PANTALLA
CALL CMD
OPERA
MOVLW RENGLON1 ;COMANDO PARA EMPEZAR A ESCRIBIR A PARTIR
CALL CMD ;DE LA PRIMERA DIRECCION DEL RENGLON1
CALL ADQUI ;SE LLAMA A LA SUBRUTINA DE ADQUISICION DE DATOS DEL ADC
CALL BINBCD ;LLAMO A LA SUBRUTINA QUE CONVIERTE DE BINARIO A ASCII
;****************************************
MOVF MILLARES,W
CALL DATO
MOVF CENTENAS,W
CALL DATO
MOVF DECENAS,W
CALL DATO
MOVF UNIDADES,W
CALL DATO
;****************************************
MOVLW ' '
CALL DATO
MOVLW 0XDF ;° (grados)
CALL DATO
MOVLW 'C'
CALL DATO
GOTO OPERA ;REGRESO AL INICIO DEL PROGRAMA PRINCIPAL
;**************************SUBRUTINA DE LOS MENSAJES **************************
D16X2
MOVLW "P"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "O"
CALL DATO
MOVLW "Y"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "C"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "O"
CALL DATO
MOVLW RENGLON2
CALL CMD
MOVLW "T"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "M"
CALL DATO
MOVLW "P"
CALL DATO
MOVLW "E"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO
MOVLW "T"
CALL DATO
MOVLW "U"
CALL DATO
MOVLW "R"
CALL DATO
MOVLW "A"
CALL DATO
MOVLW " "
CALL DATO
MOVLW "A"
CALL DATO
MOVLW "/"
CALL DATO
MOVLW "D"
CALL DATO
RETURN
;**********************SUBRUTINA DE ADQUISICION DEL ADC**********************
ADQUI:
CALL SAMPLETIME ;RETARTO DE ADQUISICION
BSF ADCON0,GO ;INICIA LA CONVERSION
BTFSC ADCON0,GO ;YA SE TERMINO LA CONVERSION?
GOTO $-1 ;NO? PREGUNTA DE NUEVO
BANKSEL ADRESH ;SI, CONTINUA
MOVF ADRESH,W ;LEE LA PARTE MAS SIGNIFICATIVA
MOVWF DATOH ;GUARDALO EN DATOH
BANKSEL ADRESL ;CAMBIO A BANCO1
MOVF ADRESL,W ;LEE LA PARTE MENOS SIGNIFICATIVA
MOVWF DATOL ;GUARDALO EN DATOL
BANKSEL PORTB ;CAMBIO A BANCO0
BCF STATUS,C ;BORRA EL BIT DE ACARREO
RRF DATOH,F ;ELIMINO EL BIT MENOS SIGNIFICATIVO
RRF DATOL,F ;PARA OCUPAR SOLO 9 BITS SI QUIERO 8 BITS COPIO Y PEGO ESTOS 3 RENGLONES Y ASI SUCESIVAMENTE
;SI QUIERO 7 LO COPIO OTRA DOS VECES.
RETURN
SAMPLETIME:
MOVLW .225
MOVWF SAMPLE
ESPERA_S:
NOP
NOP
DECFSZ SAMPLE,F
GOTO ESPERA_S
RETURN
BINBCD
CLRF MILLARES
CLRF UNIDADES
CLRF DECENAS
CLRF CENTENAS
CLRF POINTER
OTRA
BTFSS DATOH,7
GOTO ROTA
CALL TABLAU
ADDWF UNIDADES,F
CALL TABLAD
ADDWF DECENAS,F
CALL TABLAC
ADDWF CENTENAS,F
;****************************************
MOVF UNIDADES,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYOR
GOTO MENOR
MAYOR
INCF DECENAS,F
MOVLW D'10'
SUBWF UNIDADES,F
GOTO DECE
MENOR
MOVLW D'10'
SUBWF UNIDADES,W
BTFSS STATUS,Z
GOTO DECE
GOTO MAYOR
;****************************************
DECE
MOVF DECENAS,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORD
GOTO MENORD
MAYORD
INCF CENTENAS,F
MOVLW D'10'
SUBWF DECENAS,F
GOTO CENTE
MENORD
MOVLW D'10'
SUBWF DECENAS,W
BTFSS STATUS,Z
GOTO CENTE
GOTO MAYORD
;****************************************
CENTE
MOVF CENTENAS,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORC
GOTO MENORC
MAYORC
INCF MILLARES,F
MOVLW D'10'
SUBWF CENTENAS,F
GOTO MILLA
MENORC
MOVLW D'10'
SUBWF CENTENAS,W
BTFSS STATUS,Z
GOTO MILLA
GOTO MAYORC
;****************************************
MILLA
MOVF MILLARES,W
SUBLW D'10'
BTFSS STATUS,C
GOTO MAYORM
GOTO MENORM
MAYORM
MOVLW D'10'
SUBWF MILLARES,F
GOTO ROTA
MENORM
MOVLW D'10'
SUBWF MILLARES,W
BTFSS STATUS,Z
GOTO ROTA
GOTO MAYORM
;****************************************
ROTA
RLF DATOL,F
RLF DATOH,F
INCF POINTER,F
MOVF POINTER,W
SUBLW D'10'
BTFSS STATUS,Z
GOTO OTRA
MOVLW 0X30
ADDWF UNIDADES,F
MOVLW 0X30
ADDWF DECENAS,F
MOVLW 0X30
ADDWF CENTENAS,F
MOVLW 0X30
ADDWF MILLARES,F
RETURN
;**********************SUBRUTINA DE CONFIGURACION DEL ADC **********************
INIT_ADQUI:
BSF STATUS,RP0
BSF TRISA,0
CLRF ADCON1
BCF STATUS,RP0
MOVLW B'11000001'
MOVWF ADCON0
RETURN
INITLCD
MOVLW B'00110000';1
CALL DATOX
MOVLW B'00110000';2
CALL DATOX
MOVLW B'00110000';3
CALL DATOX
;DL=1 ->8 BITS;DL=0 ->4 BITS
;N=1 ->2 LINEAS N=0 ->1 LINEA
;F=1 ->5X11 F=0 ->5X8
MOVLW B'00100000';4
CALL DATOX
MOVLW B'00100000';5 Function set 0 0 1 DL N F X X
CALL DATOX
MOVLW B'10000000'
CALL DATOX
;D=1 ->DISPLAY-ON
;C=1 ->CURSOR-ON
;B=1 ->PARPADEO-ON
; 0 0 0 0 1 D C B
MOVLW B'00000000';6 Display control
CALL DATOX
MOVLW B'10000000'
CALL DATOX
MOVLW B'00000000';7
CALL DATOX
MOVLW B'11000000'
CALL DATOX
;CONFIGURACION DE ESCRITURA DECREMENTAL-INCREMENTAL
;I/D=1 ->INCREMENTAL AUTOMATICO
;SH=1 ->PARPADEA PANTALLA COMPLETA
; 0 0 0 0 0 1 I/D SH
MOVLW B'00000000';8 Cursor and display shift 0x06
CALL DATOX
MOVLW B'01100000'
CALL DATOX
MOVLW HOME
CALL CMD
MOVLW LIMPIAR
CALL CMD
RETURN
DATOX
MOVWF PORTLCDT
MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
BCF RS
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN
DATO
BSF RS
MOVWF PORTLCDT
MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
SWAPF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN
CMD
BCF RS
MOVWF PORTLCDT
MOVF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
SWAPF PORTLCDT,W
ANDLW B'11110000'
MOVWF PORTLCDTEMP
MOVF PORTD,W
ANDLW B'00001111'
MOVWF PORTDTEMP
MOVF PORTDTEMP,W
IORWF PORTLCDTEMP,W
MOVWF PORTLCD
NOP
NOP
NOP
NOP
BSF EN
CALL RETARDO5MS
BCF EN
RETURN
RETARDO5MS
MOVLW D'1'
MOVWF NUM3
OTRA25 MOVLW D'100'
MOVWF NUM2
OTRA15 MOVLW D'166'
MOVWF NUM1
OTRA5 DECFSZ NUM1,F
GOTO OTRA5
DECFSZ NUM2,F
GOTO OTRA15
DECFSZ NUM3,F
GOTO OTRA25
RETURN
RETARDO ;retardo de recorrimiento de proyecto...
MOVLW .1
MOVWF NUM3
OTRA1 MOVLW .200
MOVWF NUM2
OTRAR MOVLW .166
MOVWF NUM1
DECFSZ NUM1,F
GOTO $-1
DECFSZ NUM2
GOTO OTRAR
DECFSZ NUM3
GOTO OTRA1
RETURN
END
Valora esta pregunta
0