请教一下高手们关于延时程序的算法

[复制链接]
 楼主| 善解人意 发表于 2009-7-27 09:20 | 显示全部楼层 |阅读模式
以下是该程序:
#include <reg52.h>
sbit k1=P2^3;
sbit L1=P1^0;
void delay (unsigned int ms) //延时函数
{
 unsigned char k;
  while(ms--)
  {
    for(k=247;k>0;k--);
  }
}       
void main (void) //主函数
 {
  while (1)
   { 
   if ( k1==0 )
      {
      L1=0;
      delay(8000);
      }
      else
      {
      L1=1;
      }
    }
 }
我只是刚学一个月,望高手们指教.
s46410864 发表于 2009-7-27 09:28 | 显示全部楼层

这个延时不是MS级的

如果用12M晶振,延时大约2秒...
5880527 发表于 2009-7-27 09:30 | 显示全部楼层

一开始就不要学这样延时

这种延时会害死人的
 楼主| 善解人意 发表于 2009-7-27 09:45 | 显示全部楼层

请教一下高手们关于延时程序的算法

是不是这种延时方法占用CPU资源太大,有没有其它延时方法
s46410864 发表于 2009-7-27 09:49 | 显示全部楼层

是地..

这个延时方法占用CPU来延时,另一种方法就是用定时计数器来做,这个延时很环保哦
 楼主| 善解人意 发表于 2009-7-27 10:20 | 显示全部楼层

请教一下高手们关于延时程序的算法

谢谢楼上的,我要好好看一下
scan 发表于 2009-7-27 11:55 | 显示全部楼层

5楼说得漂亮

节能环保,这个词很专业。
程序匠人 发表于 2009-7-27 12:12 | 显示全部楼层

在定时中断中传递标志位

在后台程序中判断标志位。完事后别忘了清除标志位。

就这么简单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

324

帖子

0

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