提高PIC16C711单片机片内A/D分辨率的方法
PIC16C711指令系统完成11位A/D转换的程序段。
BSFSTATUS,RP0;选页面1
MOVLW00000010B;RA0、RA1为模拟通道
MOVWFADCON1;内部参考电压
BCFSTATUS,RP0;选页面0
MOVLW11000001B;选RA0通道和内部时钟
MOVWFADCON0
MOVLW.125;延时125μs,等待输入
CALLWAIT;稳定
BSFADCON0,GO;启动A/D
LOOPBTFSCADCON0,GO;判断A/D完成否
GOTOLOOP
MOVFADRES,W;取转换结果
ANDLW0E0;屏蔽低5位
MOVWFD1;存入D1
BCFSTATUS,C
RRFD1,1;右移5次
RRFD1,1
RRFD1,1
RRFD1,1
RRFD1,1
MOVFD1,W
MOVWFPORTB;档位输出
MOVLW11001001B;选RA1通道
MOVWFADCON0
MOVLW.60;延时60μs
CALLWAIT
BSFADCON0,GO;启动A/D
LOOP1BTFSCADCON0,GO;判断A/D完成否
GOTOLOOP1
MOVFADRES,W;A/D转换结果存D0
MOVWFD0
WAITMOVWFTEMP;延时子程序
NEXTDECFSZTEMP,1
GOTONEXT
RETURN
用这种方法实现的11位A/D转换速度快PIC16C711基本上都是单周期指令,在4MHz振荡频率下指令周期1μs,进行1次A/D转换最短时间20μs;2次A/D转换40μs;2个运放变换时间20μs×2=40μs。总的转换时间为百μs级。
本文介绍的方法电路简单,速度快,调试方便,已用于我们研制的单片机电阻炉温自动控制系统中,取得了预期的效果。对于其他带8位、10位A/D的单片机稍加改动均可使用,具有推广价值。
《提高PIC16C711单片机片内A/D分辨率的方法(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/151760.html
BSFSTATUS,RP0;选页面1
MOVLW00000010B;RA0、RA1为模拟通道
MOVWFADCON1;内部参考电压
BCFSTATUS,RP0;选页面0
MOVLW11000001B;选RA0通道和内部时钟
MOVWFADCON0
MOVLW.125;延时125μs,等待输入
CALLWAIT;稳定
BSFADCON0,GO;启动A/D
LOOPBTFSCADCON0,GO;判断A/D完成否
GOTOLOOP
MOVFADRES,W;取转换结果
ANDLW0E0;屏蔽低5位
MOVWFD1;存入D1
BCFSTATUS,C
RRFD1,1;右移5次
RRFD1,1
RRFD1,1
RRFD1,1
RRFD1,1
MOVFD1,W
MOVWFPORTB;档位输出
MOVLW11001001B;选RA1通道
MOVWFADCON0
MOVLW.60;延时60μs
CALLWAIT
BSFADCON0,GO;启动A/D
LOOP1BTFSCADCON0,GO;判断A/D完成否
GOTOLOOP1
MOVFADRES,W;A/D转换结果存D0
MOVWFD0
WAITMOVWFTEMP;延时子程序
NEXTDECFSZTEMP,1
GOTONEXT
RETURN
用这种方法实现的11位A/D转换速度快PIC16C711基本上都是单周期指令,在4MHz振荡频率下指令周期1μs,进行1次A/D转换最短时间20μs;2次A/D转换40μs;2个运放变换时间20μs×2=40μs。总的转换时间为百μs级。
本文介绍的方法电路简单,速度快,调试方便,已用于我们研制的单片机电阻炉温自动控制系统中,取得了预期的效果。对于其他带8位、10位A/D的单片机稍加改动均可使用,具有推广价值。
《提高PIC16C711单片机片内A/D分辨率的方法(第2页)》