BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
MOVLW b'01110000' ;A/D R/C osc
MOVWF ADCON1 ;
BSF TRISA,0 ;Set RA0 to input
clrf TRISC
clrf TRISB ; set port c output
BCF STATUS,RP0 ;Bank 2
BSF STATUS,RP1 ;
BSF ANSEL,0 ;Set RA0 to analog
clrf ANSELH ; set port b/c to digital I/O
BCF STATUS,RP1 ;Bank 0
MOVLW b'10000001' ;Right just, Vdd Vref, AN0 source input
MOVWF ADCON0 ;
More
BSF ADCON0,GO ;Start conversion
BTFSC ADCON0,GO ;Is conversion done?
GOTO $-1 ;No, test again
MOVF ADRESH,W ;Read upper 2 bits
MOVWF RESULTHI ;
BSF STATUS,RP0 ;Bank 1
MOVF ADRESL,W ;Read lower 8 bits
BCF STATUS,RP0 ;Bank 0
MOVWF RESULTLO
clrf PORTB
movfw RESULTLO
movwf PORTC
goto More
end
; PICkit 2 Lesson 4 - "A2D"
;
; This shows how to read the A2D converter and display the
; High order parts on the 4 bit LED display.
; The pot on the Low Pin Count Demo board varies the voltage
; coming in on in A0.
;
; The A2D is referenced to the same Vdd as the device, which
; is provided by the USB cable and nominally is 5V. The A2D
; returns the ratio of the voltage on Pin RA0 to 5V. The A2D
; has a resolution of 10 bits, with 1023 representing 5V and
; 0 representing 0V.
;
; *******************************************************************
; * See Low Pin Count Demo Board User's Guide for Lesson Information*
; *******************************************************************
; * NOTE: The PIC16F690 requires the AC162061 header for debugging *
; *******************************************************************
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x20
Delay1 ; Assign an address to label Delay1
Delay2
Display ; define a variable to hold the diplay
endc
org 0
Start:
; select Register Page 1
movlw 0xFF
banksel TRISA
movwf TRISA ; Make PortA all input
clrf TRISC ; Make PortC all output
movlw 0x10 ; A2D Clock Fosc/8
movwf ADCON1
banksel 0
;bcf STATUS,RP0 ; back to Register Page 0
bcf STATUS,RP0 ; address Register Page 2
bsf STATUS,RP1
movlw 0xFF ; we want all Port A pins Analoga
movwf ANSEL
bcf STATUS,RP0 ; address Register Page 0
bcf STATUS,RP1
movlw 0x01
movwf ADCON0 ; configure A2D for Channel 0 (RA0), Left justified, and turn on the A2D module
MainLoop:
nop ; wait 5uS for A2D amp to settle and capacitor to charge.
nop ; wait 1uS
nop ; wait 1uS
nop ; wait 1uS
nop ; wait 1uS
bsf ADCON0,GO ; start conversion
btfsc ADCON0,GO ; this bit will change to zero when the conversion is complete
goto $-1
swapf ADRESH,w ; Copy the display to the LEDs
movwf PORTC
goto MainLoop
end
by Jake Hertz
by Aaron Carman
by Jake Hertz
by Aaron Carman