2185|13

3241

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

51延时的问题 [复制链接]

 

波形如上,程序如下:

CD_RS=1;

for(i=20;i>0;i--); //延时10US

      

 CD_RS=0;

for(i=20;i>0;i--); //延时10US

为什么延时时间不一样呢?谢谢!

此帖出自51单片机论坛

最新回复

while(1) { CD_RS=1; for(i=20;i>0;i--); //延时10US        CD_RS=0; for(i=20;i>0;i--); //延时10US CD_RS=1; for(i=20;i>0;i--); //延时10US        CD_RS=0; for(i=20;i>0;i--); //延时10US CD_RS=1; for(i=20;i>0;i--); //延时10US        CD_RS=0; for(i=20;i>0;i--); //延时10US //复制n个看看 }   详情 回复 发表于 2020-5-27 09:53
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

650

帖子

8

TA的资源

纯净的硅(初级)

沙发
 

软件延时是不精确的,中断会打断,要精确延时需要用定时器

此帖出自51单片机论坛
 
 
 

回复

6040

帖子

196

TA的资源

版主

板凳
 

因为除了这几句代码外,还有其他代码占用了你的CPU,你就贴这两句,别人也看不出什么。

此帖出自51单片机论坛
 
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

4
 

while(1)

{

CD_RS=1;

for(i=20;i>0;i--); //延时10US

      

 CD_RS=0;

for(i=20;i>0;i--); //延时10US

}

就这些,没开中断

此帖出自51单片机论坛

点评

你按程序流程来想想。首先判断while1,这个命令的时候波形存在吧,cd_rs0就走了一段,然后变成1,延时10秒,然后调回0,延时10秒,然后又判断while,这个时间,cd_rs还在0,所以,实际效果是保持0的时间要比保持1的  详情 回复 发表于 2020-5-27 05:06
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

6040

帖子

196

TA的资源

版主

5
 

会不会是你的延时被优化掉了,你看波形有延时的效果吗?

此帖出自51单片机论坛

点评

有  详情 回复 发表于 2020-5-26 19:51
 
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

6
 
lcofjp 发表于 2020-5-26 19:41 会不会是你的延时被优化掉了,你看波形有延时的效果吗?

此帖出自51单片机论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

1万

帖子

2853

TA的资源

管理员

7
 
chenbingjy 发表于 2020-5-26 16:51
while(1)

{

CD_RS=1;

for(i=20;i>0;i--); //延时10US

      

  ...

你按程序流程来想想。首先判断while1,这个命令的时候波形存在吧,cd_rs0就走了一段,然后变成1,延时10秒,然后调回0,延时10秒,然后又判断while,这个时间,cd_rs还在0,所以,实际效果是保持0的时间要比保持1的时间长
此帖出自51单片机论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

你这分析看似是有道理的,但是结合他的实际波形,你会看到低电平时间明显比高电平时间多很多,所以,肯定不是while 1的影响导致的时间不对。  详情 回复 发表于 2020-5-27 09:06
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

8
 
软件定时误差大,要精确的话那就别用。读书的时候我们老师让软件定时,我们也是要根据实际效果对定时做修正的。比如走多少遍后加一条减1的修正。
此帖出自51单片机论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

9
 

把i=20改成i=200看下效果

此帖出自51单片机论坛
 
 
 

回复

506

帖子

0

TA的资源

一粒金砂(高级)

10
 
okhxyyo 发表于 2020-5-27 05:06 你按程序流程来想想。首先判断while1,这个命令的时候波形存在吧,cd_rs0就走了一段,然后变成1,延时10 ...

你这分析看似是有道理的,但是结合他的实际波形,你会看到低电平时间明显比高电平时间多很多,所以,肯定不是while 1的影响导致的时间不对。

此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

11
 

我感觉和7楼的观点一样,你把汇编码贴出来分析一下,可能就是因为时间太短,while(1)的跳转执行时间不能忽略所致.

此帖出自51单片机论坛
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

12
 

大致看上去是处于0的状态的长度约为处于1的状态的长度的2倍。

此帖出自51单片机论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

回复

4008

帖子

0

TA的资源

版主

13
 

while(1)

{

CD_RS=1;

for(i=20;i>0;i--); //延时10US      

 CD_RS=0;

for(i=20;i>0;i--); //延时10US

CD_RS=1;

for(i=20;i>0;i--); //延时10US      

 CD_RS=0;

for(i=20;i>0;i--); //延时10US

CD_RS=1;

for(i=20;i>0;i--); //延时10US      

 CD_RS=0;

for(i=20;i>0;i--); //延时10US

//复制n个看看

}

此帖出自51单片机论坛
 
 
 

回复

3241

帖子

0

TA的资源

纯净的硅(高级)

14
 

谢谢大家,不捣鼓了,换种方式吧

此帖出自51单片机论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表