;****************************************************** ;* ADC_PL.ASM ;* PORTA RA0接腳類比輸入,經ADC轉換後,PORTC輸出 ;****************************************************** list p=16F877 #include ; VAL_US equ .5 ; 25us delay 給定初值 count equ 0x20 ; 25us delay 變數位址 ; ;****** 程式開始 ********************* org 0x00 ; reset vector nop ; Reserve for MPLAB-ICD initial: banksel TRISC ; Select to bank1 clrf TRISC ; PORTC = Output banksel PORTC ; Select to bank0 clrf PORTC ; Clear PORTC banksel ADCON1 ; Step1 Start clrf ADCON1 banksel ADCON0 ; movlw 0x41 movwf ADCON0 ; Step1 End start: call delay_25us ; Step3 bsf ADCON0,GO ; Step4 f0 btfsc ADCON0,GO ; Step5 goto f0 movf ADRESH,W ; Step6 movwf PORTC goto start ; Step7 ;-------delay subroutine----------- delay_25us: movlw VAL_US movwf count dec_loop nop decfsz count,f goto dec_loop return end