关于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型,差了这么多。
展开
 我来答
godinu
2014-01-24 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:106万
展开全部
char算的比int快,51是8位机,int在51里是16位,要分2次算
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式