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
; 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==============================================
;
***********************************************************************************
************
; 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
END