第1个回答 2014-03-05
用定时中断吧,50ms中断一次,中断里面用个变量计数,计20次就是1s。
或者用延时函数:
void Delayms(unsinged int ms)
{
unsinged int i;
while((ms--) !==0)
for(i=0;i<600;i++);
}
延时1s就是Delayms(1000);
第2个回答 2014-03-05
void delayms(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
写delayms(1000)就可延时一秒了
当然 如果要精确一点 就用定时器
第3个回答 2014-03-05
#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++;
}
第4个回答 推荐于2018-02-24
我可以不用定时器作出很准确的,就是用KEIL软件进行测试
在Keil软件设置晶振的地方设置成12MHZ
keil软件自带一个时间测试的功能,能测出程序运行了多长时间
你可以用这个功能测试你的延时函数,改变其中的变量使其变成1S。本回答被提问者和网友采纳