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设置有问题吗?还是哪里出问题了?感谢热心人
此帖出自
小平头技术问答
一周热门 更多>