标题: 新手请教单片机延时问题 [打印本页]

作者: 特雷西麦迪    时间: 2017-8-30 11:21
标题: 新手请教单片机延时问题
void delay (void)
{
unsinged char i j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)

        ;
}

为什么是小于250呢?

作者: king_zxt    时间: 2017-8-30 12:30
因为计250个数就是从零到250,实际是0~249就是250个数,如0~9是10个数
作者: dudoumayou    时间: 2017-8-30 12:49
因为unsighed char定义的东西为8位二进制,2^8就是256,只要不超过255都可以,至于你设置的250,是为了计算延时时间方便
作者: 特雷西麦迪    时间: 2017-8-30 13:59
恩,谢谢
作者: 853282537    时间: 2017-8-30 14:12
纯粹延时作用而已

作者: 特雷西麦迪    时间: 2017-8-30 15:12
dudoumayou 发表于 2017-8-30 12:49
因为unsighed char定义的东西为8位二进制,2^8就是256,只要不超过255都可以,至于你设置的250,是为了计算 ...

亲我是初学者,麻烦给解释下,如果是这样
for(i=0;i<170;i++)
for(j=0;j<250;j++)计算时间是按170的来,那250是什么作用?
作者: ahshmj    时间: 2017-8-30 15:40
楼主还没弄清楚什么是“for循环”。
作者: zl2168    时间: 2017-8-30 16:24
应先学些基础理论,才能事半功倍。
作者: 机电学生1    时间: 2017-8-30 18:53
这个与单片机的晶振有关
作者: 机电学生1    时间: 2017-8-30 18:57
这个与晶振有关,晶振直接影响着机器周期,进而影响着指令周期。这里
你的循环执行了250x250次就消耗了250x250个指令周期
作者: Q624353765    时间: 2017-8-30 22:10
unsighed char定义最大数值256,大于256就会变成0,就会直接跳出语句,所有要定义i不能超过256
作者: 2685682407    时间: 2017-8-30 22:22
不小于也行啊
作者: 文杰-CS    时间: 2017-8-31 09:30
根据你定义的数据类型所能表达的范围,只是让单片机做加或减操作达到演示效果,具体你计算每条指令的时钟周期就可以较为精确的知道延时的时间长度。
作者: 敖建鹏    时间: 2017-9-1 10:29
这种延时程序只是占用cpu的资源,让其执行空指令已达到耗时的目的。for循环是反复执行的意思,次数越多延时越长。170、250只是认为设置的循环次数,这是根据自己需要延时的长短来定的。(这种延时函数简单常用,但精度不高)
作者: 细风    时间: 2017-9-1 11:12
问题不清晰
作者: cvgjhuor    时间: 2017-9-1 16:48
消抖一般用延时函数,按下的时候要消抖动(加延时),松手的时候也要消抖
作者: tmxk0574    时间: 2017-9-1 17:06
我也刚刚在学,我理解为双循环,循环的次数是170×250次,不知对不对?




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