延时函数

taicangyun 2011-09-20 09:19:03
#include "STC12C5A.h" //包含头文件
#include "intrins.h"

#define ON 0 //开发板上的LED为低电平驱动
#define OFF 1 //高电平熄灭
#define FOSC 24000000L
#define LED0 P0 //位定义

//us延时
void delay_us(unsigned int t)
{
while(t--)
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}

//延时函数(24M晶振下延时1ms)
void delay_ms(unsigned int time)
{
//unsigned int t;
for(;time>0;time--)
{
/*t = 1500;
while(t--); */
delay_us(1000);
}
}

//主函数
void main(void)
{
while(1)
{
LED0 = 0x00; //打开LED0
delay_ms(500); //延时1S
LED0 = 0xff; //关闭LED0
delay_ms(500); //延时1S
}
}









请问延时一秒是怎样算出来的 delay_ms(500); //延时1S
...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
northcan 2011-09-21
  • 打赏
  • 举报
回复
楼主用的STC的单片机吧。
可以通过Keil软件的emulator测一下,波特率要设置对,比如24M。
最好有硬件仿真器,或者仿真芯片。
时间流逝可以在Keil的监测窗口找到。
然后再根据具体的时间长了还是短了,微调延时函数中的while或者for参数,或者Nop个数。
最终精确到1ms等等。
91program 2011-09-20
  • 打赏
  • 举报
回复
看 IC 手册,或如1L所说实测
当我遇上-你 2011-09-20
  • 打赏
  • 举报
回复
估计的吧,要精确的上示波器看

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧