Programa

A continuación se muestra el programa final de control del capacimetro digital con PIC 16F84.

Archivo .list: Programa

LIST P=16F84

 

TRISA EQU 85

TRISB EQU 86

PORTA EQU 05

PORTB EQU 06

W EQU 0

f EQU 1

 

PC EQU 02

EDATA EQU 08

EADR EQU 09

ECON1 EQU 88

ECON2 EQU 89

TIMER 0 EQU 01

OPCION EQU 81

STATUS EQU 03

REG1 EQU 10

REG3 EQU 12

REG4 EQU 17

AUXCI EQU 1B

BANDER1 EQU 1C

PER1 EQU 1E

REG5A EQU 1F

BANDERS EQU 20

REG1A EQU 22

REG2A EQU 23

REG3A EQU 24

REG4A EQU 25

CICLO EQU 26

INTCON EQU 0X0B

#DEFINE COMP PORTA,2

#DEFINE TRIGGER PORTA,3

#DEFINE ENABLE PORTA,1

#DEFINE RS PORTA,0

#DEFINE CARRY STATUS,0

#DEFINE OVERFL INTCON,2 ;BANDERA DE OVERFLOW DE TIMER0

 

ORG 00

GOTO INICIO

 

INICIO BSF 3,5 ;CONFIGURAR PUERTOS

MOVLW 0X04

MOVWF TRISA

MOVLW 0X00

MOVWF TRISB

MOVLW 0X80

MOVWF OPCION ;PREESCALIZADOR 1:2, CON FLANCO DE SUBIDA

BSF 3,5

BCF ENABLE ;LCD DESHABILITADO;

MOVLW .100 ;RETARDO DE ESTABILIDAD DE LCD

MOVWF REG1

CALL RETARDO

MOVLW 0X38 ; INICIA LCD A 8 BITS Y 2 LINEAS

CALL CONTROL

MOVLW 0X06 ; MENSAJE FIJO EN PANTALLA

CALL CONTROL

MOVLW 0X0C ; ACTIVA EL DISPLAY

CALL CONTROL

MOVLW 0X01 ; BORRAR PANTALLA

CALL CONTROL

 

CLEAR BSF TRIGGER ; DESCARGAR CONDENSADOR

BCF OVERFL ; BORRAR BANDERA DEL TIMER0

MOVLW .250

MOVWF REG1

CALL RETARDO ; RETARDO DE DESCARGA TOTAL DE C

MOVLW .250

MOVWF REG1

CALL RETARDO

CLRF REG1A ; CLEAR AL CONTADOR

CLRF REG2A

CLRF REG3A

CLRF REG4A

CLRF REG5A

CLRF BANDERS

CLRF TIMER0

BCF TRIGGER ; INICIAR CARGA DEL CONDENSADOR

FARA1 BCF OVERFL

FARAD2 BTFSC COMP ; COMPARACION VMAX DEL CONDENSADOR

GOTO CICLO2

BTFSS OVERFL

GOTO FARAD2 ; ESPERAR QUE CARGUE EL CONDENSADOR

 

INCF BANDERS,f

GOTO FARA1

 

CICLO2 MOVF TIMER0,W ; GUARDAR # DE PULSOS EN CICLO

MOVWF CICLO

MOVWF AUXCI

INCF BANDERS,f

MOVF BANDERS,W

MOVWF BANDER1 ; GUARDAR # DE BANDERAS EN

BANDER1

MOVLW .2 ; PERIODO PARA REPETIR DATOS

MOVWF PER1

CXLOS CALL INCONT

DECFSZ CICLO,f ; CONTAR # DE PULSOS DEL TIMER0

GOTO CXLOS

DECFSZ BANDERS,f ; DECREMENTAR CICLO DE ACUERDO

A # DE BANDERAS

DECFSZ PER1,f

GOTO CONTF

GOTO REPIT

BSF TRIGGER ; DESCARGAR CONDENSADOR

CALL VISUAL

GOTO CLEAR

REPIT MOVF AUXCI,W ; RECUPERAR LOS DATOS DEL

CONTEO

MOVWF CICLO ; PARA 2 VEZ Y PODER COMPENSAR

PREESCALIZADOR

MOVF BANDER1,W

MOVWF BANDERS

GOTO CXLOS

CONTF MOVLW 0XFF

MOVWF CICLO

GOTO CXLOS

 

VISUAL MOVLW 0X30 ; PERMITE VISUALIZAR LOS DATOS DE LOS

REG Y DE LA TABLA

ADDWF REG1A,f ; LOS CONVIERTE DE BCD A ASCII

ADDWF REG2A,f

ADDWF REG3A,f

ADDWF REG4A,f

ADDWF REG5A,f

MOVLW .1

CALL CONTROL

MOVLW "#"

CALL DATO

MOVLW "F"

CALL DATO

MOVLW "A"

CALL DATO

MOVLW "R"

CALL DATO

MOVLW "A"

CALL DATO

MOVLW "D"

CALL DATO

MOVLW "I"

CALL DATO

MOVLW "O"

CALL DATO

MOVLW "S"

CALL DATO

MOVLW ":"

CALL DATO

MOVF REG5A,W

CALL DATO

MOVF REG4A,W

CALL DATO

MOVF REG3A,W

CALL DATO

MOVLW "."

CALL DATO

MOVF REG2A,W

CALL DATO

MOVF REG1A,W

CALL DATO

RETURN

 

CONTROL BCF RS ; ESTA RUTINA GENERA LOS PULSOS PARA

ENVIAR ; UN DATO O UNA INSTRUCCION AL LCD

GOTO DATO1

DATO BSF RS

DATO1 BSF ENABLE

MOVWF PORTB

MOVLW .5

MOVWF REG1

CALL RETARDO

BCF ENABLE

CALL RETARDO

RETLW 0

 

RETARDO MOVF REG1,W ; RETARDO VARIABLE DE

ESTABILIDAD

MOVWF REG3

LOOP1 MOVLW .250

MOVWF REG4

LOOP NOP

DECFSZ REG4,f

GOTO LOOP

DECFSZ REG3,f

GOTO LOOP1

RETURN

 

INCONT INCF REG1A,f

:RUTINAPARA UNIDADES,DECENAS,CENTENAS DE

MOVLW 0X0A ; LOS VALORES DE CAPACITANCIA A

MEDIR

XORWF REG1A,W

BTFSS 3,2

GOTO SALIR

CLRF REG1A

INCF REG2A,f

MOVLW 0X0A

XORWF REG2A,W

BTFSS 3,2

GOTO SALIR

CLRF REG2A

INCF REG3A,f

MOVLW 0X0A

XORWF REG3A,W

BTFSS 3,2

GOTO SALIR

CLRF REG3A

INCF REG4A,f

MOVLW 0X0A

XORWF REG4A,W

BTFSS 3,2

GOTO SALIR

CLRF REG4A

INCF REG5A,f

MOVLW 0X0A

XORWF REG5A,W

BTFSS 3,2  

GOTO SALIR

CLRF REG5A

SALIR RETURN

END

 

WB01343_1.gif (599 bytes)                                                                                                          WB01345_1.gif (616 bytes)