|
程序功能是RAO口检测模拟电压输入,经过AD转化后在RC口直接输出二进制结果!
;===============================================
LIST P=16F877A, R=DEC ;
#INCLUDE <P16F877A.INC>
;===========================================
ORG 0X0
NOP ;ICD调试必须一条NOP
START
BCF STATUS,RP0 ;体选
CLRF PORTC
MOVLW B'01000001' ;D7 D6=01 AD转换时钟频率= FOSC/8
MOVWF ADCON0 ;D5 D4 D3=000 AD转换模拟通道选择RA0/AN0
;D2=0 AD已完成或未进行AD D0=0关闭ADC
BSF STATUS,RP0 ;体选
MOVLW B'10000111' ;D7=1取消上拉,D6=0 INT下降沿触发,
MOVWF OPTION_REG ;D5=0 TOCK1使用内部时钟 D4=0 TOCK1 上升沿增量
;D3=0用于TMR0 D2 D1 D0=1 TMR0 1:256分频
CLRF TRISC
MOVLW B'00001110' ;D3 D2 D1 D0 1110选择RA0为模拟口。
MOVWF ADCON1 ;D7=0左对齐 ADRESL的低六位读作0
BCF STATUS,RP0 ;体选
AD_MAIN
BTFSS INTCON,T0IF ;等待TMR0 定时溢出中断
GOTO AD_MAIN ;否,返回再等待
BCF INTCON,T0IF ; 是,清TMR0 定时溢出标志
BSF ADCON0,GO ;开启A/D
WAIT
BTFSS PIR1,ADIF ;等待A/D完成
GOTO WAIT ;否,返回再等待
MOVF ADRESH,W ;A/D值从ADRESH送到W
MOVWF portc ;A/D值从PORTC口输出显示
GOTO AD_MAIN
END
|
|