标题: 单片机延时函数为什么要用两个变量i ;j来循环? [打印本页]

作者: 华仔51    时间: 2017-9-18 20:11
标题: 单片机延时函数为什么要用两个变量i ;j来循环?
51单片机延时函数
delay(uchar t)
{
   uchar i,j;
   for(i=0;i<t;i++)
   for(j=0;j<t;j++);
}
为什么要用两个变量i ;j来循环?

作者: blackstar    时间: 2017-9-19 00:00
这里只是你写的延时函数,这样写就这样用。
作者: blackstar    时间: 2017-9-19 00:03
这里只是你写的延时函数而已,这样写就这样用。
你也可以这样写延时函数:
typedef unsigned int u8;
void delay(u8 i)
{
      while(i--);
}
作者: 鲁翔成    时间: 2017-9-19 08:06
一个外循环一个内循环,为了增加延时呀
作者: HC6800-ES-V2.0    时间: 2017-9-19 08:11
第一:循环变量是unsigned char型的,一次循环不够时间
第二:可以调节变量的值,形成不同的延时时间
第三:还可以再加循环的,谁说只能是两个变量?
作者: 漫步经心    时间: 2017-9-19 08:49
你试试用一个能不能控制到你想要的延时时间
作者: 13476011951    时间: 2017-9-19 09:36
一个变量延时太短  再加一个延时更长
作者: shw7610    时间: 2017-9-19 10:09
不一定非要用i,  j  也可以用x、y来循环
作者: xiaoxiaozhu123    时间: 2017-9-19 10:20
可以写成不同的延时时间吧
作者: kaidxp66    时间: 2017-9-19 10:22
与你的主频和延时时长有关。不是一定要i,j的。延时时间短完全可以只要一个i或j(单个变量)。还可以用定时器来定时。
作者: crcok    时间: 2017-9-19 14:04
增加延时用
作者: 笨鸟想飞    时间: 2017-9-19 14:51
只是例程习惯,一般不去深究
作者: chengwh    时间: 2017-9-19 16:05
时间短的话,一个变量循环也可以。
作者: weidacn    时间: 2017-9-19 20:56
经验延时,循环嵌套是为了次数更多
作者: 童000000    时间: 2017-9-19 22:14
你这样写代表延时t*t微秒,是你输入的平方。
作者: 童000000    时间: 2017-9-19 22:17
你的函数延时t*t微秒,如果只有一个函数是延时t微秒。
作者: lianghuanan    时间: 2018-12-2 11:41
增加延时时间,i*j这样时间就更长了,效果都是一样的
作者: 794732706    时间: 2018-12-2 14:16
可以只用一个啊,时间段一些
作者: 2089235932    时间: 2018-12-2 15:50
i,j,两者互乘,增加延时
作者: 探路    时间: 2018-12-2 16:55
这个延时涉及到执行for循环占用机器周期的问题,你也可以不这样写,另外你也可以用stc-isp设定好晶振频率自动生成延时函数
作者: alex_wendell    时间: 2018-12-2 17:11
首先,你必须搞清楚延时函数的原理,它实际上只是仅仅执行一些,没有实质性影响的所谓“无意义指令”。两重for的作用:简单的说,就像高中数学中的“乘法原理”一样,这样可以很轻易的迅速增加上述“无意义指令”的数目。这么解释,不知道你看明白了没。 
作者: sibling520    时间: 2018-12-2 17:22
延时时长=循环的指令时间*循环次数
作者: citizennju    时间: 2018-12-2 19:00
两重循环可以使延迟的实践大为增加,但也要消耗大量的CPU时间,建议用定时器。
作者: citizennju    时间: 2018-12-2 19:01
循环可以使延迟的实践大为增加,但也要消耗大量的CPU时间,建议用定时器。
作者: leon112    时间: 2018-12-2 19:13
习惯问题
作者: 这一生只为你    时间: 2018-12-2 19:21
这两个参数名字随便起,a,b,c,d,l,m,n,x,y都可以,这只是个名字而已
作者: 22311    时间: 2018-12-2 20:07
增加延时
作者: niccol    时间: 2018-12-2 23:29
效要和一个别一样的
作者: PBL    时间: 2018-12-3 08:28
就两个名字而以,什么都行,只要不是关键字。
作者: hello_liu    时间: 2018-12-3 14:04
双重循环增加时间的效果
作者: zhuanzhuba    时间: 2018-12-3 19:59
i和j在C语言中常用作循环变量;单片机程序用C语言编写,故也用这i和j循环;
作者: zhuanzhuba    时间: 2018-12-3 20:01
i和j是C语言常用的循环变量;单片机程序用C语言编写,故也用这两个变量循环;两个循环为了增加时间
作者: jybieting    时间: 2020-6-28 07:24
alex_wendell 发表于 2018-12-2 17:11
首先,你必须搞清楚延时函数的原理,它实际上只是仅仅执行一些,没有实质性影响的所谓“无意义指令”。两重 ...

谢谢解释,理解了!
作者: wwh2382    时间: 2020-6-28 15:58
每个程序员都有自己的编程习惯。写这个延时函数的程序员恰好不愿意写大数。另外大数容易写错,拆成两个数可以避免出错,是个不错的编程习惯




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1