单片机c语言中的delay_ms(250) 是什么意思
意思就是延迟250ms,250就是100ms延时子函数写成1ms的。
voiddelay(chari)
{
charj=0;
for(i=0;i<255;i++)
for(;i<255;j++)
}
voidmain()
{
delay(100);
}
扩展资料
单片机C语言变量作用域
#include<reg52.h>//包含头文件
sbitled=P0^0;
unsignedcharcount=0;//定时累计变量,我们需要1000ms定时,50*20=1000
//count是全局变量,通俗地说就是程序每次重新执行时值保持住最近一次的值
voidmain()
{
TMOD=0x01;//设置定时器0工作方式1,16位计数
TH0=(65536-45872)/256;//晶振11.0592MHz,定时50ms时TH0初值
TL0=(65536-45872)%256;//晶振11.0592MHz,定时50ms时TL0初值
EA=1;//开启总中断
ET0=1;//开启定时器0中断
TR0=1;//启动定时器0
while(1)
{
if(20==count)//1000ms定时时间到
{
count=0;//清零,使得可以再次定时1000ms
led=~led;//P0.0电平取反,也就实现LED灯的熄灭或者点亮
}
//这部分代码放到主函数里,中断服务程序中只有定时器初值的重新赋值和count变量的累加
}
}
voidT0_INT()interrupt1//大家对照着上述格式看看
{
TH0=(65536-45872)/256;//晶振11.0592MHz,定时50ms时TH0初值
TL0=(65536-45872)%256;//晶振11.0592MHz,定时50ms时TL0初值
//重装初值,这个很好理解,我们需要每次定时的时间相同
count++;//每进入一次中断,也就是说50ms时间到了,count变量进行累计
//中断服务程序简洁,高效
}
void delay_ms(uchar delay)
{
uchar i,j;
for(i=0;i<delay;i++)
for(j=0;j<125;j++);
}
子程序是这样的。delay_ms(250)是不是应该延时250*125ms呀?
不是这么长的。
你用kiel运行一下就知道时间了。
一步也就us级的,不可能是ms
12M下,是0.4ms ,250就是100ms
延时子函数最好写成1ms的