我有个朋友说STC12C5A 系列在AD方面很RZ
大家怎么看?我哪个朋友说延时太多了,以往的老产品都没这么多延时, 能用就好 能用就好 谁用谁知道。 价位这么低的带AD的MCU不多啊! 将就吧... 就这么死脑筋么,延时太多不会用定时器?开了AD去干别的,到时见再来读取或进行后续操作? 不是可以中断吗 谢谢5楼朋友,我没试过,只是问问你们有没有人用过,有什么看法, 回复【7楼】huhui800谢谢5楼朋友,我没试过,只是问问你们有没有人用过,有什么看法,
-----------------------------------------------------------------------
没有完美的东西,遇上问题灵活多变啦。 没有RZ的器件, 只有RZ的人 回复【9楼】bigchn
没有RZ的器件, 只有RZ的人
----------------------------------------------------------------------- STC主要问题是难调试程序 是么,手里项目正打算用它来做ad采集,还好不是核心,做个电池电量的粗略检测 STC主要问题是难调试程序
————————————————————————————————————
为啥? 回复【13楼】qqqq_1111
-----------------------------------------------------------------------
没有仿真原型,一些代码只能一句一句撞。。都看不清实际运行的结果。 这款我用过,下面是这个代码可以参考一下:
/***********定义特殊功能寄存器*****************/
sfr P1ASF =0x9D; //P1口模拟控制寄存器
sfr ADC_CONTR =0xBC; // ADC控制寄存器
sfr ADC_RES =0xBD; // AD转换结果寄存器
sfr ADC_REL =0xBE;
#define ADC_FLAG 0x10 //AD转换完成后,该位置1
#define ADC_POWER 0x80 //打开AD转换电源,
#define ADC_START 0x08 //模数转换控制位 置1开始转换
/******定义a/d转化结果给V0******/
int Vo;
/********A/D转换初始化**********/
void initADC()
{
P1ASF=0X01;//选择P1.0作为A/D输入通道
//ADC_RES= 0;//转换结果寄存器清零
ADC_CONTR=0x80;//开电源和设置A/D转换速度
delay(2);
}
uchar getADCresult()
{
ADC_CONTR=0x88;//选择A/D输入通道,开始A/D转换
_nop_(); //设置ADC_CONTR寄存器后需加4个CPU时钟周期的延时,才能保证值被写入ADC_CONTR寄存器
_nop_();
_nop_();
_nop_();
while(!ADC_CONTR&ADC_FLAG); //等待A/D转换是否完毕
ADC_CONTR&=~ADC_FLAG; //当A/D转换完成后,ADC_FLAG=1,要由软件清0
// Vo=ADC_RES*5*10/256; // (为显示整数,这里将电压值扩大了十倍)
Vo=ADC_RES; //八位的
return Vo;
} 回复【楼主位】huhui800
-----------------------------------------------------------------------
什么叫延时太多了?
最快的方式spd1,0都是1,是90周期一次,慢吗?我不觉得慢。
如果说要nop,人家说了,ad是用内置晶振的,如要读写ad那个con,要nop一下,4个nop就够。
nop是1T的,4个才4周期,我也不觉得很多。 回复【16楼】geniuskim
回复【楼主位】huhui800
-----------------------------------------------------------------------
什么叫延时太多了?
最快的方式spd1,0都是1,是90周期一次,慢吗?我不觉得慢。
如果说要nop,人家说了,ad是用内置晶振的,如要读写ad那个con,要nop一下,4个nop就够。
nop是1t的,4个才4周期,我也不觉得很多。
-----------------------------------------------------------------------
同意16楼得说法,ad转换周期是可以设置的 是否有人试过A/D输入引脚为空时A/D转换结果是多少呢 我试过,是在变化的,不稳定,基本上是从比较大的值慢慢变小,也有不变的,试过很多块。是任意值,不确定的 STC的AD参考电压就是单片机的电源电压,在用AD时最好用线性电压。 有的用就很好了,便宜货将就将就吧。 我用过标称每秒25w次还可以吧 单片机内部的AD就将就了吧。虽然速度不快位数也不多,但是方便用啊~总比没有好吧
而且操作也还算简单,与单片机内部有很好的衔接。软件实现起来还是比外部硬件AD方便 我现在也在用这个功能,很迷茫。。。。
页:
[1]