单片机C语言的低级问题

[复制链接]
2836|7
 楼主| xiaotao_82 发表于 2007-3-11 18:32 | 显示全部楼层 |阅读模式
以下是个延时程序段:
void delay1s(void) 



  unsigned char i,j,k; 

  for(k=100;k>0;k--) 

  for(i=20;i>0;i--) 

  for(j=248;j>0;j--); 


我的疑问是:这里,怎么知道延时时间?这1秒钟是怎么计算出来的?单片机为89S51,晶振为12MHz。
王紫豪 发表于 2007-3-11 19:35 | 显示全部楼层

差不多就行

NE5532 发表于 2007-3-11 20:14 | 显示全部楼层

示波器测,要算的话会死人的。

dai_weis 发表于 2007-3-11 21:08 | 显示全部楼层

精确或者长时间定时应该采用定时器完成,

这样的延时弊端很多,不够准确,浪费MCU的时间,一旦有中断请求则延时会更长,如果开了看门狗,也会咬你的。
gezhi 发表于 2007-3-11 21:20 | 显示全部楼层

在keil下看下就行啦?

turmary 发表于 2007-3-11 23:12 | 显示全部楼层

在Keil中有编译选项

设置成生成列表文件.LST中包含汇编代码.

再根据这个函数产生的汇编指令一条条计算..

还是5楼的朋友说的好,在KEIL中仿真一下儿,即快又省事儿.
rainbowwrh 发表于 2007-3-12 17:07 | 显示全部楼层

定时器

用定时器啊,MCU里面的这个东西就是干这事的....这样准确多了,要不然算起来很复杂,要算这几个for循环的汇编执行条数,每条的执行时间....
huangqi412 发表于 2007-3-12 17:36 | 显示全部楼层

keil里点调试后在汇编窗口里看。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

901

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部