Anda di halaman 1dari 7

;****************** PROJETO VOLTIMETRO DIGITAL INICIO : 01/06/06

TERM.:05/06/06*********************************
; AUTOR: CL�UDIO CARMONA L�RIOS
; PROCESSADOR: PIC 16F676 DE 14 PINOS ,8 AD ,1 COMPARADOR, 1024 K FLASH,
64BYTES RAM,128 EEPROM,12 I/O
; OBJETIVO: MOSTRAR VALOR DE UMA TENS�O ANALOGICA NOS DIGITOS DE UM DISPLAY
EXTERNO, SENDO
; ESTE POR MULTIPLEXA��O. A CONVERS�O BINARIA PARA BCD E BCD PARA 7
SEGUIMENTOS SER�
; FEITO PELO PROGRAMA FIRMWARE.
; USE RC INTERNO NO_CLOCKOUT,WATCH DOG OFF, BROWN DETECT ON,POWER ON RESET ON,
; PINOS:1=VDD* 2=RA5/TICK1/OSC1/CLK IN* 3=RA4/T1G-/OSC2/CLKOUT* 4=RA3IN
APENAS/-MCLR/VPP* 5=RC5* 6=RC4* 7=AN7/RC3
; 8-RC2/AN6* 9=RC1/AN5* 10=RC0/AN4* 11=RA2/C OUT/T0CK1/INT/AN2* 12=RA1/-
CIN/PGD/AN1/VREF* 13=RA0/+CIN/PGD/AN0*
; 14=VSS (TERRA).
;
___________________________________________________________________________________
________________
;
#INCLUDE<P16F676.INC> ; ARQUIVO PADRAO

; USE RC INTERNO NO_CLOCKOUT,WATCH DOG OFF, BROWN DETECT ON,POWER ON RESET ON

; PAGINACAO DE MEMORIA;
#DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
#DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1
; VARIAVEIS
CBLOCK 0X20 ;ENDERECO INICIAL DE MEMORIA
DIG0 ;ACUMULADOR DOS DIGITOS DO DISPLAY ZERO
(0)
DIG1 ;ACUMULADOR DOS DIGITOS DO DISPLAY UM(1)
DIG2 ;ACUMULADOR DOS DIGITOS DO DISPLAY DOIS
(2)
DIG3 ;ACUMULADOR DOS DIGITOS DO DISPLAY TREIS
(3)(N�O USADO)
CENV ;CONTADOR DE ENVIO PARA MOSTRADOR EXTERNO
DEL1 ;DELAY
DEL2 ;IDEM
DEL3 ;IDEM
DEL4 ;DELAY PARA TRANSMISSAO E AMOSTRAGEM
DOS DISPLAYS
DEL5 ;IDEM
CONT1 ;CONTADOR AUXILIAR PARA RESULTADO PARTE
BAIXA DA CONVERS�O
CONT2 ;CONTADOR AUXILIAR PARA RESULTADO PARTE
ALTA DA CONVERS�O
CDELAP ;DELAY PARA REDUZIR CONVERS�ES E
OPERAR MULTIPLEXA��O
PONTK ;PONTEIRO PARA KATODOS DOS SEGUIMENTOS
WAUX ;W AUXILIAR
ENDC
;======================DEFINICAO DE BITS E
FLAGS==============================================

#DEFINE LIGAC ADCON0,1;DEFINE PALAVRA PARA LIGAR/DESLIGAR


CONVERS�O
#DEFINE BIT4 VALCOM,4;BITE N.4 DO REGISTRO DE VALOR A SER
COMPARADO
#DEFINE BIT5 VALCOM,5
#DEFINE BIT6 VALCOM,6
#DEFINE BIT7 VALCOM,7

;
***********************************************************************************
************
; CONSTANTES
VDEL1 EQU .250; 250 VALOR INICIAIS PARA DELAY
VDEL2 EQU .5; 250 IDEM
VDEL3 EQU .1 ; 1 IDEM
VDEL4 EQU .125 ; FREQUENCIA DE APRESENTA��O
MULTIPLEXADA (ALTERA O ABAIXO)
VDEL5 EQU .1
VDELAP EQU .40 ; VALOR DE VEZES QUE SER� REPETIDA
A ULTIMA CONVERS�O AD

;
***********************************************************************************
**************
; VETOR E2PROM
; ORG H'2100'

;..................................................................................
...............
; VETOR DE RESET
ORG 0X00
GOTO INICIO
;..................................................................................
..............
; VETOR DE INTERRUPCAO
ORG 0X04
RETFIE
;..................................................................................
..............
;
;
INICIO
BANK1 ;BANCO 1
CALL 0X03FF ;BUSCA CALIBRA��O DO OSCILADOR
MOVWF OSCCAL ;TRANSFERE PARA O REG.OSCILADOR
MOVLW .0
MOVWF INTCON ;DESLIGA TODAS INTERRUPCOES
MOVLW b'00000001' ;DEFINE ENTRADAS (1) E SAIDAS
(0) NA PIO
MOVWF TRISA ;
MOVLW .0
MOVWF TRISC
MOVLW B'10000000' ;DESAHABILITA PULL-UP DA PIO
MOVWF OPTION_REG ;IDEM
MOVLW B'01010000' ; SELE��O DE FREQUENCIA DE CONVERS�O (
OSC/16=01010000)
MOVWF ADCON1 ;
MOVLW B'00000001' ;SELECIONA RA0 COMO
ANALOGICA. - 00000001
MOVWF ANSEL
MOVLW .0
MOVWF VRCON
BANK0
MOVLW .7
MOVWF CMCON
MOVLW B'10000001' ;LIGA CONVERSOR AN/DIG B6=1 VREF E
0 VDD PARA COMPARAR 10000001
MOVWF ADCON0 ; * ESCOLHE CANAL 0/REF AO
VCC/MODO DE SAIDA PARA DIREITA
CLRF PORTA ;LIMPA PORTA
CLRF CONT1
CLRF CONT2
CLRF DEL1
CLRF DEL2
CLRF DEL3
CLRF PONTK
MOVLW VDELAP
MOVWF CDELAP
MAIN NOP
BSF LIGAC ;INICIA CONVERS�O
BTFSC LIGAC ;TESTA SE CHEGOU AO FIM DA CONVERS�O
GOTO $ - 1 ;SE N�O LOOP AT� TERMINO DA
CONVERS�O
MOVFW ADRESH
MOVWF CONT2 ;CARREGA CONTADOR AUXILIAR COM RESULTADO
ALTO
BANK1
MOVFW ADRESL
BANK0
MOVWF CONT1 ;CARREGA CONTADOR AUXILIAR 1 COM
RESULTADO BAIXO
MOVLW VDELAP ;VALOR DE VEZES QUE SERA AMOSTRADO
O MESMO NUMERO ANTES DE CONVERS�O
MOVWF CDELAP
CALL CONVDEC ;CONVERTE PARA DECIMAL OS
RESULTADOS H E L
CALL ACERTO ;ACERTA VALOR SOMANDO E REDUZINDO
;----------------------------------------------------------------------------
--------------
CD7S MOVFW DIG0 ;CONVERTE PRIMEIRO DIGITO PARA 7 SEGMENTOS
CALL SEG7
MOVWF DIG0
MOVFW DIG1 ;CONVERTE SEGUNDO DIGITO PARA 7
SEGUIMENTOS
CALL SEG7
MOVWF DIG1
MOVFW DIG2 ;CONVERTE TERCEIRO DIGITO PARA 7
SEGUIMENTOS
CALL SEG7
MOVWF DIG2
MOVFW DIG3 ;CONVERTE QUARTO DIGITO PARA 7
SEGUIMENTOS
CALL SEG7
MOVWF DIG3
;----------------------------------------------------------------------------------
--------
MOSTRA MOVFW PONTK
ANDLW B'00000011'
ADDWF PCL,F
GOTO M0
GOTO M1
GOTO M2
INCF PONTK,F
GOTO MOSTRA
;__________________________________________________________________________________
SEG7 ADDWF PCL,F ;TABELA DE CONVERS�O "CALCULO GOTO" RETORNA 7
SEGUIMENTOS
RETLW B'11111100' ;RETORNA NUMERO 0 (ABCDEFGP) F C
RETLW B'01100000' ;RETORNA 1 60
RETLW B'11011010' ;RETORNA 2 DA
RETLW B'11110010' ;RETORNA 3 F2
RETLW B'01100110' ;RETORNA 4 66
RETLW B'10110110' ;RETORNA 5 B6
RETLW B'10111110' ;RETORNA 6 BE
RETLW B'11100000' ;RETORNA 7 E0
RETLW B'11111110' ;RETORNA 8
RETLW B'11110110' ;RETORNA 9
;----------------------------------------------------------------------------------
--
M0 MOVFW DIG0
MOVWF WAUX ;CARREGA CONTADOR AUXILIAR
CALL COPYD
BSF PORTC,2 ;SETA RC2 K0
INCF PONTK,F
CALL DELAY2
GOTO MOSTRA
M1 MOVFW DIG1
MOVWF WAUX
CALL COPYD
BSF PORTC,3 ;SETA RC3 K1
INCF PONTK,F
CAll DELAY2
GOTO MOSTRA
M2 MOVFW DIG2 ;TESTA SE DIG2 � ZERO
XORLW 0XFC
BTFSC STATUS,Z
GOTO NAOMZ ;SE FOR, APAGA ZERO A ESQUERDA
MOVFW DIG2
MOVWF WAUX
CALL COPYD
BSF PORTC,4 ;SETA RC2 K2
INCF PONTK,F
CALL DELAY2
GOTO NCONV
NAOMZ BCF PORTC,4 ;APAGA RC2 K2 , SE FOR ZERO
(DIG2)
INCF PONTK,F
GOTO NCONV
;-------------------------------------------------------------------------
COPYD CLRF PORTA
CLRF PORTC
BTFSC WAUX,1
BSF PORTA,2 ;SETA RA2 G
BTFSC WAUX,2
BSF PORTA,1 ;SETA RA1 F
BTFSC WAUX,3
BSF PORTC,5 ;SETA RC5 E
BTFSC WAUX,4
BSF PORTA,4 ;SETA RA4 D
BTFSC WAUX,5
BSF PORTA,5 ;SETA RA5 C
BTFSC WAUX,6
BSF PORTC,1 ;SETA RC1 B
BTFSC WAUX,7
BSF PORTC,0 ;SETA RC0 A
RETURN
;-------------------------------------------------------------------------
NCONV DECFSZ CDELAP,F ; CONTA QUANTAS VEZES VAI AMOSTRAR O
MESMO RESULTADO
GOTO MOSTRA
GOTO MAIN
;--------------------------------------------------------------------------
DELAYTX MOVLW VDEL4
MOVWF DEL4
MOVLW VDEL5
MOVWF DEL5
LOOP2 DECFSZ DEL4,F
GOTO LOOP2
DECFSZ DEL5,F
GOTO LOOP2
RETURN
;-------------------------- ---------------- ;ROTINA DE ATRASO ENTRE
AMOSTRAGENS

DELAY2 MOVLW VDEL1


MOVWF DEL1
MOVLW VDEL2
MOVWF DEL2
MOVLW VDEL3
MOVWF DEL3
LOOP1 DECFSZ DEL1,F
GOTO LOOP1
DECFSZ DEL2,F
GOTO LOOP1
DECFSZ DEL3,F
GOTO LOOP1
RETURN
;----------------------------------------------------------------------------------
----
; ROTINA DE CONVERS�O BIN�RIA PARA BCD
CONVDEC CLRF DIG0 ;LIMPA OU ZERA ACUMULADORES BCD
CLRF DIG1
CLRF DIG2
CLRF DIG3
BTFSC CONT2,1 ;TESTA 10 BIT DO RESULTADO DA
CONVERS�O
CALL B10 ;ROTINA DE SOMAT�RIA P/ 10B
BTFSC CONT2,0 ;TESTA 9 BIT
CALL B9
BTFSC CONT1,7 ;TESTA 8 BIT DO RESULTADO DA
CONVERS�O
CALL B8
BTFSC CONT1,6 ;TESTA 7 BIT
CALL B7
BTFSC CONT1,5 ;TESTA 6 BIT DO RESULTADO DA
CONVERS�O
CALL B6
BTFSC CONT1,4 ;TESTA 5 BIT
CALL B5
BTFSC CONT1,3 ;TESTA 4 BIT DO RESULTADO DA
CONVERS�O
CALL B4
BTFSC CONT1,2 ;TESTA 3 BIT
CALL B3
BTFSC CONT1,1 ;TESTA 2 BIT DO RESULTADO DA
CONVERS�O
CALL B2
BTFSC CONT1,0 ;TESTA 1 BIT
CALL B1
CALL ACERTO
RETURN
;----------------------------------------------------------------------------------
---
B10 MOVLW .5 ;SUB-ROTINA DE SOMA RELATIVA AO
EXPOENTE BIN�RIO 2 ELEVADO A BX
ADDWF DIG2,F
MOVLW .1
ADDWF DIG1,F
MOVLW .2
ADDWF DIG0,F
RETURN
B9 MOVLW .2
ADDWF DIG2,F
MOVLW .5
ADDWF DIG1,F
MOVLW .6
ADDWF DIG0,F
RETURN
B8 MOVLW .1
ADDWF DIG2,F
MOVLW .2
ADDWF DIG1,F
MOVLW .8
ADDWF DIG0,F
RETURN
B7 MOVLW .6
ADDWF DIG1,F
MOVLW .4
ADDWF DIG0,F
RETURN
B6 MOVLW .3
ADDWF DIG1,F
MOVLW .2
ADDWF DIG0,F
RETURN
B5 MOVLW .1
ADDWF DIG1,F
MOVLW .6
ADDWF DIG0,F
RETURN
B4 MOVLW .8
ADDWF DIG0,F
RETURN
B3 MOVLW .4
ADDWF DIG0,F
RETURN
B2 MOVLW .2
ADDWF DIG0,F
RETURN
B1 MOVLW .1
ADDWF DIG0,F
RETURN
;--------------------------------------------------------------------------------
;ROTINA DE REDU�AO PARA MAXIMO 9 EM CADA DIGITO APOS SOMATORIA POR PESO.
ACERTO MOVLW .10
SUBWF DIG0,W
BTFSC STATUS,C ;SE CARRY � ZERO NUMERO NEGATIVO
CALL REDUZ0 ;/PULA E MANTEM VALOR ORIGINAL DO
MOVLW .10 ;/ DIG0
SUBWF DIG1,W
BTFSC STATUS,C
CALL REDUZ1
MOVLW .10
SUBWF DIG2,W
BTFSC STATUS,C
CALL REDUZ2
RETURN
;------------------------------------------------------------------------------
REDUZ0 INCF DIG1,F
MOVWF DIG0
MOVLW .10
SUBWF DIG0,W
BTFSS STATUS,C
RETURN
INCF DIG1,F
MOVWF DIG0
GOTO $-6
REDUZ1 INCF DIG2,F
MOVWF DIG1
MOVLW .10
SUBWF DIG1,W
BTFSS STATUS,C
RETURN
INCF DIG2,F
MOVWF DIG1
GOTO $-6
REDUZ2 INCF DIG3,F
MOVWF DIG2
MOVLW .10
SUBWF DIG2,W
BTFSS STATUS,C
RETURN
INCF DIG3,F
MOVWF DIG2
GOTO $-6
;------------------------------------------------------------------

END

Anda mungkin juga menyukai