16F73进行A/D转换,设置了ACDON1,ACDON0等,有一局while(ADG0);就是等待A/D转换完毕置位ADG0,但是好像总是没有完成,也就是总是执行不到while(ADG0);的下一句。不知道是什么原因?谢谢!
对应管脚的TRIS要设置成输入(1),而且还要设置多路开关。 另外, 可能别的配置还有问题。
按理说,就是没先通道,它也是能完成转换的
片内ADC一般都有一个启动条件,你看看你启动转换了吗?
呵呵
设置如下:
1、ADCON1=0x00; //VREF=VDD,RA0-RA3全为模拟输入;
2、ADCON0=10 000 001;//时钟选择FOSC/32(我使用的是20M晶振),选择通道0:RA0/AN0,AD使能
3、ADG0=1;//启动A/D
4、根据ADG0是否为0判断转换是否完成。
有一个地方不明白:
在2中设置ADCON0的BIT2位是A/D转换状态位,在配置ADCON0时该配置为1还是0?
因为在第3步启动A/D转换时要设置ADG0=1,实际上就是设置ADCON0的BIT2位。那么第2步是不是就不用设置ADCON0的BIT2位=1了?
GOOGLE了一下
要不LZ你贴下下代码
另外,你是不是在仿真的状态下进行?要不你把仿真断掉,全速运行看看,在转换完成后
点些LED或是置某个管脚状态,看看是不是真的没有启动
记得有些片子的仿真状态下是奇慢的
16F73进行A/D转换,设置了ACDON1,ACDON0等,有一局while(ADG0);就是等待A/D转换完毕置位ADG0,但是好像总是没有完成,也就是总是执行不到while(ADG0);的下一句。不知道是什么原因?谢谢!
设置如下:
1、ADCON1=0x00; //VREF=VDD,RA0-RA3全为模拟输入;
2、ADCON0=10 000 001;//时钟选择FOSC/32(我使用的是20M晶振),选择通道0:RA0/AN0,AD使能
3、ADG0=1;//启动A/D
4、根据ADG0是否为0判断转换是否完成。
到底转化完毕是置位还是清零ADGO啊???
这种结构的AD应该是置1,开始转换
ADC转换完后,自动硬件清0
不过不知道,能不能产生中断,MCU去响应中断去了
如何判断产生中断了?
我看有的程序是判断ADG0是否为0,有的是判断ADIF,不知道有何区别?在哪儿设置?