打印
[国产单片机]

STC单片机延时怎么计算

[复制链接]
5372|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
贺信|  楼主 | 2009-8-7 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人菜鸟,不知道STC的机器周期是多少,看到下面的程序就是不知道怎么算出那些延时时间。求那位大哥把具体的怎么求时间告知!!
//5ms延时
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//400ms延时
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
  TempCycB=7269;
  while(TempCycB--);
};
}

相关帖子

沙发
贺信|  楼主 | 2009-8-7 17:46 | 只看该作者
关键是每一句它要多少时间我不知道!

使用特权

评论回复
板凳
chunyang| | 2009-8-10 14:54 | 只看该作者
跟型号和时钟频率相关,而且C语言无法直接得出,需实验测试或在汇编的基础上一条条查。

使用特权

评论回复
地板
huangqi412| | 2009-8-10 15:10 | 只看该作者
时间计算应该和普通51一样,使用FOR(.....)时间可控.知道指令周期后可算好. 不过,精确延时都定时器啦,

使用特权

评论回复
5
czdo| | 2009-8-12 17:59 | 只看该作者
是的用定时器啊,兄弟

使用特权

评论回复
6
xhujian| | 2009-8-13 23:12 | 只看该作者
本帖最后由 xhujian 于 2009-8-13 23:15 编辑

1   知道时钟频率
2  编译后,看汇编,再计算每一条指令需要的时钟周期
c语言的一个
unsigned char data i
i=100;
while(i--);

unsigned char xdata i;
i=100;
while(i--);

延时都不一样,因为一个用MOV ,一个用MOVX,需要的时钟不一样

使用特权

评论回复
7
xwj| | 2009-8-14 01:03 | 只看该作者
STC?
那会算得你很郁闷...

使用特权

评论回复
8
冯广州| | 2009-8-14 08:17 | 只看该作者
人家不是有定时中断吗?非这样整,服了你了。

使用特权

评论回复
9
mohanwei| | 2009-8-14 09:07 | 只看该作者
我用STC12C5A16,中断有4个等级,比较容易实现优先级
还有那个PCA,用起来很爽,可以很容易通过软PWM实现16bit分辨率的DAC

使用特权

评论回复
10
虾军师| | 2009-8-22 09:29 | 只看该作者
可以在wave里跑跑看
把软件仿真的CP设置为51
晶振改成 cpu板上的晶振*它比51快的速度倍速
大概看下延时多久
c的延时本来就郁闷了
用STC来算的那就是郁闷的平方了
我都是大概弄个值
老师说我是没有玩透才这样
认了··· 搞不定

使用特权

评论回复
11
shuizhongyu| | 2009-8-29 20:41 | 只看该作者
用定时器啊 兄弟

使用特权

评论回复
12
McuPlayer| | 2009-9-1 12:50 | 只看该作者
应该让初学者逐步改变使用指令Delay的习惯

使用特权

评论回复
13
yschen8| | 2009-9-4 14:49 | 只看该作者
如果你想知道很精确就使用示波器一测就知道了。否则 你用反汇编来计算误差也会产生的,如果你想使用C来计算Delay误差还会更加大. 这是个人观点

使用特权

评论回复
14
wwl123| | 2013-6-5 16:36 | 只看该作者
是不是我们以后编程时,能不用Delay函数就尽量不用呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

305

帖子

0

粉丝