没有达到延时1ms的效果

[复制链接]
628|19
 楼主| wangzsa 发表于 2020-7-26 18:00 | 显示全部楼层 |阅读模式

网上的一段延时函数,好像有点问题,函数功能完成毫秒延时,如下:
/*延时函数*/
void delay_ms(unsigned char i) {
    unsigned char a, b;
    for (a = 1; a < i; a++) {
      for (b = 1; b; b++) {
          ;
          }
      }
}
如果i的值是1,第一个循环a<i,为假,跳出循环,函数返回,没有达到延时1ms的效果
zhuww 发表于 2020-7-26 18:08 | 显示全部楼层

应该改成for(a=0;a<i;a++)
晶振1MHZ
lium 发表于 2020-7-26 18:11 | 显示全部楼层
方法1
改成 a=0
方法2
a <= i
 楼主| wangzsa 发表于 2020-7-26 18:13 | 显示全部楼层
guoyt 发表于 2020-7-26 18:16 | 显示全部楼层
for循环,第一不做判断吧?
lium 发表于 2020-7-26 18:25 | 显示全部楼层
只有do while 循环才不作首个判断直接杀入循环体的。
yufe 发表于 2020-7-26 18:29 | 显示全部楼层
你的第二个for是个无限循环吧   同时一个个 a = 0
llia 发表于 2020-7-26 18:34 | 显示全部楼层
貌视又不用改吧,可以循环一次!
lium 发表于 2020-7-26 18:38 | 显示全部楼层
51的P2.7口接8050驱动蜂鸣器,P2.7接5.1K电阻到电源上拉,P2.7接1K电阻到8050的基极,现在发现P2.7拉低后蜂鸣器还响
langgq 发表于 2020-7-26 18:41 | 显示全部楼层
P2.7口上有0.7V电压
lium 发表于 2020-7-26 18:50 | 显示全部楼层
楼主什么问题?
guoyt 发表于 2020-7-26 18:53 | 显示全部楼层
以前用同样电路没有问题,换新批号的89C52问题还是一样
yufe 发表于 2020-7-26 18:57 | 显示全部楼层
去掉那个1K电阻,或者把1K电阻换成4.7K,试试
llia 发表于 2020-7-26 19:03 | 显示全部楼层
先检查硬件,再用示波器看波形
 楼主| wangzsa 发表于 2020-7-26 19:09 | 显示全部楼层
将5.1K和1K电阻分别拿掉再量P2.7电压就能发现问题
zhuww 发表于 2020-7-26 20:18 | 显示全部楼层
问题已经搞定,原来整理的时候把二片坏的放在一起了,用的时候把坏的当好的用了,谢谢关注
zhuww 发表于 2020-7-26 20:21 | 显示全部楼层
问题已经搞定,原来整理的时候把二片坏的放在一起了,用的时候把坏的当好的用了,谢谢关注
zhanglli 发表于 2020-7-26 20:27 | 显示全部楼层
我晕呐
 楼主| wangzsa 发表于 2020-7-26 21:46 | 显示全部楼层
不好意思,结贴了
HuangHongLun 发表于 2020-8-9 22:18 | 显示全部楼层
建议用标准的c语言写,每个参数清晰明了,这样的代码可读性很差,会让人云里雾里的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部