2
F:\latest 877a\ADC\8bit ADC\adc_8bit.asm ; THIS PROG IS A SIMPLE TEST OF INTERNAL 10 BIT ADC IN 8 BIT USE. ; PROGRAMMAR-- SYED TASWAR MAHBUB. ; 20 MHZ EXTERNAL XTAL OSCILLATOR ;-------------------------------------------------------------------------- PROCESSOR PIC16F877A INCLUDE "P16F877A.INC" __CONFIG H'3F71' TITLE: "SIMPLE 8BIT ADC TEST WITH PIC 16F877A." ;--------------------------------------------------------------------- ;POSITION OF THE FOLLOWING GPRS IN MEMORY MAP ARE MENTIONED IN INCLUDE ;FILE CITED ABOBE AND HENCE NOT REQUIRED TO MENTION HERE. BUT GIVEN ;HERE TO SHOW THE POSITIONS IN DIFFERENT DATA BANKS FOR NEW PROGRAMMARS. ;---------------------------------------------------------------------- STATUS EQU 0X03 PORTA EQU 0X05 PORTB EQU 0X06 TRISA EQU 0X85 ;IN BANK1, SO BANK CHANGING REQUIRED TRISB EQU 0X86 ;IN BANK1, SO BANK CHANGING REQUIRED ADRESH EQU 0X1E ADCON0 EQU 0X1F ADCON1 EQU 0X9F ;IN BANK1, SO BANK CHANGING REQUIRED ;----------------------------------------------------------------------- CBLOCK 0X20 COUNT , D1 , D2 , D3 ENDC ORG 0X00 GOTO MAIN ;------------------------- DELAY SUB-ROUTINE --------------------------- DEL_20M ;20 MICRO SEC DELAY CLRF COUNT MOVLW 0X23 MOVWF COUNT REPEAT DECFSZ COUNT GOTO REPEAT RETLW 0X00 DEL_250 MOVLW 0X8A MOVWF D1 MOVLW 0XBA MOVWF D2 MOVLW 0X03 MOVWF D3 DELAY_0 DECFSZ D1 , F GOTO $ + 2 DECFSZ D2 , F GOTO $ + 2 DECFSZ D3 , F GOTO DELAY_0 GOTO $ + 1 GOTO $ + 1 NOP RETURN 1

Adc 8bit 877A

Embed Size (px)

DESCRIPTION

8 BIT ADC

Citation preview

Page 1: Adc 8bit 877A

F:\latest 877a\ADC\8bit ADC\adc_8bit.asm

; THIS PROG IS A SIMPLE TEST OF INTERNAL 10 BIT ADC IN 8 BIT USE.

; PROGRAMMAR-- SYED TASWAR MAHBUB.

; 20 MHZ EXTERNAL XTAL OSCILLATOR

;--------------------------------------------------------------------------

PROCESSOR PIC16F877A

INCLUDE "P16F877A.INC"

__CONFIG H'3F71'

TITLE:"SIMPLE 8BIT ADC TEST WITH PIC 16F877A."

;---------------------------------------------------------------------

;POSITION OF THE FOLLOWING GPRS IN MEMORY MAP ARE MENTIONED IN INCLUDE

;FILE CITED ABOBE AND HENCE NOT REQUIRED TO MENTION HERE. BUT GIVEN

;HERE TO SHOW THE POSITIONS IN DIFFERENT DATA BANKS FOR NEW PROGRAMMARS.

;----------------------------------------------------------------------

STATUS EQU 0X03

PORTA EQU 0X05

PORTB EQU 0X06

TRISA EQU 0X85 ;IN BANK1, SO BANK CHANGING REQUIRED

TRISB EQU 0X86 ;IN BANK1, SO BANK CHANGING REQUIRED

ADRESH EQU 0X1E

ADCON0 EQU 0X1F

ADCON1 EQU 0X9F ;IN BANK1, SO BANK CHANGING REQUIRED

;-----------------------------------------------------------------------

CBLOCK 0X20

COUNT,D1,D2,D3

ENDC

ORG 0X00

GOTO MAIN

;------------------------- DELAY SUB-ROUTINE ---------------------------

DEL_20M ;20 MICRO SEC DELAY

CLRF COUNT

MOVLW 0X23

MOVWF COUNT

REPEAT

DECFSZ COUNT

GOTO REPEAT

RETLW 0X00

DEL_250

MOVLW 0X8A

MOVWF D1

MOVLW 0XBA

MOVWF D2

MOVLW 0X03

MOVWF D3

DELAY_0

DECFSZ D1, F

GOTO $+2

DECFSZ D2, F

GOTO $+2

DECFSZ D3, F

GOTO DELAY_0

GOTO $+1

GOTO $+1

NOP

RETURN

1

Page 2: Adc 8bit 877A

F:\latest 877a\ADC\8bit ADC\adc_8bit.asm

;------------------------- MAIN PROGRAMME STARTS HERE ------------------

MAIN

BANKSEL TRISB ;MOVING TO BANK1

CLRF TRISB ;CLEARING TRISB VALUE

BSF TRISA,0 ;PORTA BIT 0 SET AS OUTPUT

MOVLW B'00001110'

MOVWF ADCON1 ;LT JUSTIFIED,ANO=ANALOG INPUT PIN

BANKSEL PORTA ;FALLING BACK TO BANK0

CLRF PORTA ;PORTA VALUE CLEARED

CLRF PORTB ;PORTB VALUE CLEARED

MOVLW B'10000001'

MOVWF ADCON0 ;FOSC/32,CHANNEL0,A/D IS ON

KHELA CALL DEL_20M ;DELAY SUBROUTINE CALLED

BSF ADCON0,2 ;GO

BACK BTFSC ADCON0,2 ;DONE

GOTO BACK

MOVF ADRESH,W ;SENDING ADRESH VALUE IN PORTB

MOVWF PORTB

CALL DEL_250

GOTO KHELA

END

;---------------------------------------------------------------------------

2