我的单片机用的11.0592M的晶振,想写一个大概延时1MS的子程序,应该怎样写?(用C语言)

2024-12-30 05:54:04
推荐回答(5个)
回答1:

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

回答2:

11.0592的晶振,很熟悉,51系列单片机经常用,建议多看下书,我说下大致的原理,fosc=11.0592m,一条指令的时间是多少?可能有分频,可以设置,具体的单片机不一样,反正你要得到执行一条指令的时间,比如是1us,那么1usx1000=1ms,例如:
for(i=0;i<998,i++)
{
nop;
}

回答3:

void delay(char x)
{
int i;
while(x--)
for(i=0;i<114;i++);
}

回答4:

void delay(uint)
{
uint x,y;
for(x=1000;x>0x--)
for(y=1000;y>0y--);
}

回答5:

void delay1ms()
{
unsigned int x,y;
for(x=1000;x>0;x--)
for(y=110;y>0;y--);
}