for(i=0;i<25530;i++;) ;这条语句里i++;多了一个; |
延时的for循环就是对设定的计数进行计数,直到计数完毕。 |
we199999 发表于 2023-8-23 00:28 这个可能是delay函数出问题了吧 |
还是买个开发板 我看看教程 |
// 使用for循环来实现延迟 for(i=0; i<25530; i++) // 循环次数为25530次 { // 空循环,不执行任何操作 } |
定义1个无符号的整型变量i, |
51单片机利用for语句嵌套实现简单的延时1s功能 名词解释: (1)时钟周期。定义为时钟频率的倒数,本例使用12MHz的时钟频率,它的时钟周期大约就是1/12μs。 (2)机器周期。单片机的基本操作周期,STC89C51系列的单片机来说,一个机器周期由12个时钟周期组成,也就是1μs。 (3)指令周期。指的是单片机执行一条指令需要的时间,一个指令周期需要1~4个机器周期。一个for循环需要8个指令周期。 假设单片机采用了12MHz的时钟频率,利用for语句嵌套实现简单的延时1s功能。 unsigned int i; Unsigned char j; //定义两个循环变量i、j for (i = 1000; i > 0; i--) //外层循环1000次 for (j = 124; j > 0; j--) ; //内层循环124次 内层循环代码含义: 在12MHz的时钟频率下,for循环124次所消耗的时间ntime是: ntime= 124次 × 8个指令周期 × 1μs = 992μs 也就是内循环延时大概为1ms。 那么,全部执行完成花费的总时间T大约是: T = 1000 × ( ntime + 8 × 1 ) = 1000 ms=1s,基本上达到延时1s的功能。这个延时程序中外层循环的变量是多少,整个for嵌套语句就延时大约多少毫秒,在以后的应用当中,会经常用到这个程序进行不需要精确时间的延时。 比如,要实现4s的延时,就把i=1000修改为i=4000就可以了。 |
延时的for循环就是对设定的计数进行计数,直到计数完毕。 |
sttt300 发表于 2023-8-24 09:23 刚学,我看了是进行宏定义了 |
we199999 发表于 2023-8-23 11:42 这种也有延时效果的 |
we199999 发表于 2023-8-23 00:28 第12行有问题,会影响后面的代码 |
we199999 发表于 2023-8-23 18:16 这不可能,可能中间有这个delay函数,你再看看是不是看漏了 或者编译一下,有没有报错 我感觉你不是来问问题的,是来找老师的吧?这也太基础了吧,连入门都不算 |
cnfloatleaf 发表于 2023-8-22 23:24 你就宠着她吧,符号都错了 ++ 和 + +能一样吗 |
51hei截图_20230824090326.png (17.92 KB, 下载次数: 52)
基本定义/主要内容:该代码段是一个名为"delay"的函数,它没有返回值(void)。函数中包含一个循环,使用一个无符号整数变量i进行计数,循环的次数为25530次。 |
mengzhixinheng 发表于 2023-8-23 07:21 可以的,就是延时我换了个方法就出问题,之前是能实现效果 |
201936010427 发表于 2023-8-23 10:21 我看有的教程只有声明,没有定义是怎么做到实现效果呢 |
we199999 发表于 2023-8-23 00:28 延时函数有问题,延时函数就是为了让单片机在那里空运行,你现在只定义了一个延时函数,却没有定义延时函数中的循环内容,void delay (void) {uint i; for(i=0;i<25530;i++;); } |
we199999 发表于 2023-8-23 00:28 你的delay函数里面都是空的没内容。 void delay (uint ms) { unsigned char i, j,m; m=ms; while(m--) { _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); } } |
猜测是delay()函数有问题,把delay函数贴出来看看吧 |
看错了,不好意思 |
n被不断被初始化了,你这样也不是流水灯的效果 |
cnfloatleaf 发表于 2023-8-22 23:24 多谢大佬 |
void delay (void) //定义一个子程序, void 没有返回值 {uint i; // 定义一个变量,无符号整形数 for(i=0;i<25530;i++;);//一个循环语句,i从0一直加到25530,结束循环 } |
Hephaestus 发表于 2023-8-22 21:31 今天刚学哈哈 |
这已经是最最最基础的c语言问题,连这个都看不懂实在是没有讲解的必要了。 |