Con este circuito podemos saber la posición de un potenciometro que esta conectado al modulo conversor análogo a digital de un microcontrolador PIC16F886.
El potenciometro puede ser reemplazado con cualquier tipo de sensor para así poder monitorear el estado o nivel de cualquier variable.
otros ejemplos de uso del conversor análogo a digital:
conversor-analogo-a-digital-con-pic-12f675
conversor-analogo-a-digital-con-pic-16f886
secuenciador-variable-usando-el-tmr0-y-converor-analogo-a-digital
Circuito
Video:
Codigo fuente:
LIST P=16F886
INCLUDE P16F886.INC
ERRORLEVEL -302
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR40V & _WRT_OFF
CBLOCK 0X20
VAL1, PDel0, DISP
ENDC
ORG 00H
GOTO CONFIGURA
TABLA ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111101'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111' ;9
MOSTRAR MOVF DISP,W
CALL TABLA
MOVWF PORTB
RETURN
PDelayAD movlw .123 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop0AD clrwdt ; 1 clear watchdog
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop0AD ; 2 no, loop
PDelL1AD goto PDelL2AD ; 2 cycles delay
PDelL2AD clrwdt ; 1 cycle delay
return ; 2+2 Done
CONFIGURA CLRF PORTB
BANKSEL OSCCON
MOVLW B'01101100'
MOVWF OSCCON
BANKSEL ADCON1
MOVLW B'00000000'
MOVWF ADCON1
BANKSEL ANSEL
MOVLW B'00000001'
MOVWF ANSEL
CLRF ANSELH
BANKSEL TRISB
MOVLW .1
MOVWF TRISA
CLRF TRISB
CLRF TRISC
BANKSEL ADCON0
MOVLW B'11000001'
MOVWF ADCON0
BANKSEL PORTB
CLRF PORTA
CLRF PORTB
CLRF PORTC
CICLO NOP
AD_LOOP BSF ADCON0,GO
CALL PDelayAD
END_AD BTFSC ADCON0,GO
GOTO END_AD
MOVF ADRESH,W
MOVWF VAL1
CERO CLRW
XORWF VAL1,W
BTFSS STATUS,Z
GOTO UNO
MOVLW .1
MOVWF PORTB
GOTO CICLO
UNO MOVLW .32
SUBWF VAL1,W
BTFSC STATUS,C
GOTO DOS
MOVLW .2
MOVWF PORTB
GOTO CICLO
DOS MOVLW .64
SUBWF VAL1,W
BTFSC STATUS,C
GOTO TRES
MOVLW .4
MOVWF PORTB
GOTO CICLO
TRES MOVLW .96
SUBWF VAL1,W
BTFSC STATUS,C
GOTO CUATRO
MOVLW .8
MOVWF PORTB
GOTO CICLO
CUATRO MOVLW .128
SUBWF VAL1,W
BTFSC STATUS,C
GOTO CINCO
MOVLW .16
MOVWF PORTB
GOTO CICLO
CINCO MOVLW .160
SUBWF VAL1,W
BTFSC STATUS,C
GOTO SEIS
MOVLW .32
MOVWF PORTB
GOTO CICLO
SEIS MOVLW .192
SUBWF VAL1,W
BTFSC STATUS,C
GOTO SIETE
MOVLW .64
MOVWF PORTB
GOTO CICLO
SIETE MOVLW .224
SUBWF VAL1,W
BTFSC STATUS,C
GOTO CICLO
MOVLW .128
MOVWF PORTB
GOTO CICLO
END
Copyright 2012 edwtron
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o una version superior.
Leer la licencia GNU gpl para mas detalles.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o una version superior.
Leer la licencia GNU gpl para mas detalles.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
No hay comentarios:
Publicar un comentario