51单片机延时一秒函数,晶振12MHZ

 我来答
九州记知识馆
2014-03-05 · 和大家一起分享有趣的事
九州记知识馆
采纳数:250 获赞数:433

向TA提问 私信TA
展开全部
我这有个函数自己实验出来的,在KEIL里看差不多就是延时1毫秒
void delay1ms(unsigned int t)
{
unsigned x,y;
for(x=t;x>0;x--)
for(y=124;y>0;y--);
}

把t 改为你要延时的数就可以了,1毫秒就把t改为1 500毫秒就把t改为500
九环套月
2014-03-05 · TA获得超过613个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:108万
展开全部
用定时中断吧,50ms中断一次,中断里面用个变量计数,计20次就是1s。
或者用延时函数:
void Delayms(unsinged int ms)
{
unsinged int i;

while((ms--) !==0)
for(i=0;i<600;i++);

}
延时1s就是Delayms(1000);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fusong851212
2014-03-05 · TA获得超过154个赞
知道答主
回答量:114
采纳率:0%
帮助的人:48.6万
展开全部
void delayms(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

写delayms(1000)就可延时一秒了

当然 如果要精确一点 就用定时器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友623644853
2014-03-05 · TA获得超过134个赞
知道答主
回答量:185
采纳率:45%
帮助的人:34.1万
展开全部
#include<reg51.h>
#unsigned char t;
main()
{
EA=1;
ET0=1;
TR0=1;
TH0=0xd8; //10ms
TL0=0xf0;
while(1)
{
if(t==100){t=0;} //1s
};
}
void ti0() interrupt 1
{
TH0=0xd8;
TL0=0xf0;
t++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5922771321
推荐于2018-02-24 · TA获得超过1438个赞
知道小有建树答主
回答量:1410
采纳率:100%
帮助的人:356万
展开全部
我可以不用定时器作出很准确的,就是用KEIL软件进行测试
在Keil软件设置晶振的地方设置成12MHZ
keil软件自带一个时间测试的功能,能测出程序运行了多长时间
你可以用这个功能测试你的延时函数,改变其中的变量使其变成1S。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式