我用STC89C52单片机给ADC0809编写一个的时钟信号脉冲程序,请问一下定时时间是多少?CLK周期是多少?

TH1=(65536-200)/256;
TL1=(65536-200)%256;
CLK=~CLK;

你用的是定时器1,模式1(16位定时/计数),如果单片机用的是12MHz或11.0592MHz的晶振,则机器周期为1us,那么每隔200us,CLK翻转1次,CLK周期为400us追问

这样算下来,周期只有2.5KHZ,好像转换速度不够快,直接把程序里面的200改成2,CKL周期应该为500KHZ,因为通常使用频率为500KHz的时钟信号,这样是否可以?非常感谢

追答

那也应该把200改成1,而不是2。改成1,每隔1usCLK翻转1次,翻转2次为1个周期,CLK周期为2us,频率为500kHz。若改为2,频率只有250kHz了。ADC0809正常工作频率应为500kHz,2.5kHz明显不行啊。还有,如果你要给ADC0809编写一个的时钟信号脉冲程序,不应该用16位的模式1,而应该用带自动装填功能的8位模式2,即TMOD=0x21;TH1=255;TL1=255;IE=0x88;再编一个翻转CLK的中断函数,这样才能产生500kHZ的时钟信号

追问

我现在设置成2.5KHZ,硬件都是可以正常工作,这个不知道为什么,应该是转换速度不是很快,直接把200变成1,是否可以,我是用STC 89C52单片机的,非常感谢?

追答

可以。都是51系列的单片机。我刚做过这项目

追问

首先非常感谢这位兄台,我知道ADC0809推荐的CLK信号频率是500KHZ,不可以高过640KHZ,那么请问一下,我程序输出的CLK信号频率为2.5KHZ,对于硬件或者软件有什么影响?我现在的硬件电路可以正常工作,修改为500KZ有什么影响? 麻烦解释一下,因为是刚刚做项目需要使用ADC0809芯片,所以很多不理解的地方,请见谅!!!!

追答

首先,你的态度非常好,不过,仅仅体现在语言上,行动上却没有表示;
第二,是可以超过640kHZ的,只不过会影响ADC的稳定性;
第三,理论上,频率越低当然对硬件越不会产生不良影响,但如果低成这样,我们还要单片机干嘛呢?当然,现在是看不出差别,因为功能单一,要求也低嘛

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-26
和你的晶振频率有关的啊,如果是12M的话,定时器诶加倍,那就是200us翻转一次,周期400us,不然就不一定了。0809的转换的时钟频率典型值好像是600K吧,560k-600k之间。具体不记得了。追问

0809的典型值是500khz,那应该如何修改? 我也不知道这个CLK频率(2.5KHZ)是否可以满足ADC0809的转换要求,求解释

追答

根据的晶振频率,算出机器周期,修改TH1和TL的值。你用的是STC的单片机,要考虑到是否加速了。

追问

是否加速是什么意思?我的意思是,这个程序的CLK信号为2.5KHZ,我的硬件都是可以正常工作的,直接修改TH1和TH2的值为1,这样CLK信号的频率为500KHZ,是否可以?或者说对硬件有什么影响?thanks

追答

加速就是你定时器是在1T模式还是12T模式,STC可以在1T模式啊。你说的那方法是可以的

第2个回答  2013-02-26
“每隔(65536-200)us,CLK翻转1次” 不是吧!应该是每隔200us翻转一次,楼上的不要搞反了。就如楼上的算法:CLK周期=2*200=400us
第3个回答  2019-05-09
同样的问题,想问楼主是否有解决方案?在线急等。。感谢。。
第4个回答  2013-02-26
你的芯片的晶振呢?6M还是11.95M?追问

12MHZ