CLRF STATUS
BTFSS INTCON,T0IF ;等待和循环检测TMR0溢出中断标志位
GOTO $-1 ;如果没有发生TMR0溢出中断则返回循环检测
BCF INTCON,T0IF ;保证足够的采样时间
movlw 0xa0 ;TMRO初值
movwf TMR0
bsf ADCON0,GO ;开始转换
ADWAIT:
btfsc ADCON0,GO
goto ADWAIT ;等待转换完成
banksel ADRESH
movf ADRESH,w ;读电压值高2位
CLRF STATUS
movwf vrevh
BANKSEL ADRESL
movf ADRESL,w ;读电压低8位
CLRF STATUS
movwf vrevl ;装值放入接收寄存器VERVH,VERVL,为节省时间
;采样值可以直接放入SOUH,SOU,但运算不方便
;*******测试用B'1100001111'**********************
; movlw 0x03 ;这里可以手动往VREVH,VrevL两个寄存器输入10位AD值,以便用来测试是否能
;在LED上显示正确的电压值,如:30F=B'1100001111'(10位采样AD值);
;30F的实际值是3.823V,那么在LED上将显示3.82,寄存器21,22,23的值分别为3,8,2
;movwf vrevh ;程序正常采样时这四句话要屏蔽;
; movlw 0x0f
; movwf vrevl
;************************************************
movf vrevh,w
movwf SOUH ;将被乘数放入SOUH,SOU
movf vrevl,w
movwf