PIC16F1783ad转换显示为0,请教

2019-03-25 19:17发布

PAGESEL START
BANKSEL TRISA
MOVLW   B'00000001'
MOVWF   TRISA  ;设置PORTA的方向控制  

BANKSEL LATA
MOVLW   B'11000001' ;
MOVWF   LATA

BANKSEL ANSELA
MOVLW   B'00000001';AN0为模拟口,其余为I/O口
MOVWF   ANSELA

BANKSEL ADCON1
MOVLW   B'11000000';ADFM=1,1/8时钟,参考电压为+5V电压
MOVWF   ADCON1

BANKSEL ADCON0
MOVLW   B'00000001';模拟通道为AN0,AD转换使能
MOVWF   ADCON0

BANKSEL ADCON2
MOVLW   B'00000000'
MOVWF   ADCON2
   
BANKSEL OPTION_REG
MOVLW B'01000010';采用定时器0,MCLR脚做复位用,内部1/4时钟,分频1:8
MOVWF   OPTION_REG

BANKSEL INTCON
MOVLW    B'10100000'  ;允许全局中断,禁止外围中断,允许TRMO中断,禁止GP2/INT外部中断
MOVWF   INTCON
BANKSEL PORTA
BSF     LATA,1
BSF     LATA,2
;*******************************************************
;以下为PORTC,PORTB口的设置,全为数字口,设置完后8段数码管闪亮一遍,检测是否焊接可靠
BANKSEL  TRISB
MOVLW    B'00100000'
MOVWF    TRISB
BANKSEL  LATB
CLRF     LATB   
MOVWF    LATB
BANKSEL  ANSELB
CLRF     ANSELB
BANKSEL  TRISC
CLRF     TRISC
BANKSEL  LATC
CLRF     LATC   
MOVWF    LATC

BANKSEL  STATUS
CLRF     DISBUF
CLRF     DISBUF+1
CLRF     DISBUF+2
CLRF     DISBUF+3
CLRF     DISBUF+4
;******************************************
BANKSEL STATUS
BANKSEL TMR0
MOVLW   0AEH
ADDWF   TMR0,F  ;TMR0赋值
MOVLW   D'2'
MOVWF   COUNT;32次数据采样计数存放器
MOVLW   D'100'
MOVWF   OVER_COUNT
;*********************************************
;定时器检测程序,时间到开始AD转换
MAIN
CALL    DISPLAY
GOTO    MAIN  
LOOP
BTFSS   INTCON,T0IF      ;等待和循环检测TMR0溢出中断标志位
GOTO    $-1                        ;如果没有发生TMR0溢出中断则返回循环检测
BCF     INTCON,T0IF     ;保证足够的采样时间,清除中断标志位
BANKSEL ADCON0
BSF     ADCON0,GO     ;开始转换   
;***********************************************
;AD转换程序,转换结束后并保存数值到READH,READL
ADWAIT:
BTFSC   ADCON0,GO
GOTO    ADWAIT       ;等待转换完成
BANKSEL ADRESH       ;自动设置存储地址bank
MOVF    ADRESH,W     ;读电压值高2位,
CLRF    STATUS
MOVWF   READH         ;读到的高2位数据放到READH寄存器
BANKSEL ADRESL       ;自动设置存储地址bank
MOVF    ADRESL,w      ;读电压低8位
CLRF    STATUS
MOVWF   READL   ;后面给ad转换假设数据,显示正常,从ad转换读书显示为0,紧急请教我的ad设置有问题吗?还是哪里出问题了?感谢热心人 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。