我的单片机用的11.0592M的晶振,想写一个大概延时1MS的子程序,应该怎样写?(用C语言)
展开全部
void delay(uint n)
{
uint i,j;
for(i=n;i>0;i--)
{
for(j=110;j>0;j--);
}
}
当n=1是延时大约是1ms,就是说n等于都少就延时多少ms,当然n的值不超过uint的最大值。
头文件下请定义宏
#define uchar unsigned char
#define uint unsigned int
{
uint i,j;
for(i=n;i>0;i--)
{
for(j=110;j>0;j--);
}
}
当n=1是延时大约是1ms,就是说n等于都少就延时多少ms,当然n的值不超过uint的最大值。
头文件下请定义宏
#define uchar unsigned char
#define uint unsigned int
展开全部
11.0592的晶振,很熟悉,51系列单片机经常用,建议多看下书,我说下大致的原理,fosc=11.0592m,一条指令的时间是多少?可能有分频,可以设置,具体的单片机不一样,反正你要得到执行一条指令的时间,比如是1us,那么1usx1000=1ms,例如:
for(i=0;i<998,i++)
{
nop;
}
for(i=0;i<998,i++)
{
nop;
}
追问
我知道 一个空操作-nop();是一个时钟周期,但我的想是,单片机执行for(i=0;i<998,i++)判断i<998,i++不也要时间了么
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void delay(char x)
{
int i;
while(x--)
for(i=0;i<114;i++);
}
{
int i;
while(x--)
for(i=0;i<114;i++);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void delay(uint)
{
uint x,y;
for(x=1000;x>0x--)
for(y=1000;y>0y--);
}
{
uint x,y;
for(x=1000;x>0x--)
for(y=1000;y>0y--);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void delay1ms()
{
unsigned int x,y;
for(x=1000;x>0;x--)
for(y=110;y>0;y--);
}
{
unsigned int x,y;
for(x=1000;x>0;x--)
for(y=110;y>0;y--);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询