关于51单片机延时程序的一个小问题
我想写一个delay函数,参数是ms级。。结果我发现一个问题。如果我这么写,voiddelay(unsignedinti){unsignedintj;unsignedin...
我想写一个delay函数,参数是ms级。。结果我发现一个问题。如果我这么写,
void delay(unsigned int i)
{
unsigned int j;
unsigned int k;(此处把K定义成无符号整型)
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
这样的话就达到我的目标,比传入1000,结果延迟了1s。
但是如果这么写
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;(此处把K定义成无字符型)
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
此时传入1000,实际上只延迟了0.3S左右。。。我想知道为什么会这样?无符号char型不是能表示0~255的整数吗,那我传入125,没有越界,为什么结果和无符号int型,差了这么多。 展开
void delay(unsigned int i)
{
unsigned int j;
unsigned int k;(此处把K定义成无符号整型)
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
这样的话就达到我的目标,比传入1000,结果延迟了1s。
但是如果这么写
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;(此处把K定义成无字符型)
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
此时传入1000,实际上只延迟了0.3S左右。。。我想知道为什么会这样?无符号char型不是能表示0~255的整数吗,那我传入125,没有越界,为什么结果和无符号int型,差了这么多。 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询