5307|10

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【砸分】昨天刚买的实验板,AVR第一个例子中延时程序的几个问题 [复制链接]

厂里老大让俺捣鼓AVR,昨天刚买了个MEGA16的实验板。
俺以为以前搞软件的,程序啥的还算凑合。结果修改第一个例程时就卡住了。

  1. /*延时函数*/
  2. void delay_ms(unsigned char i) {
  3.         unsigned char a, b, c;
  4.         for (a = 1; a < i; a++) {
  5.                 for (b = 1; b; b++) ;
  6.         }
  7. }
复制代码

软件延时。
俺想让延时长一些,试了一下几种方法:
1、delay_ms(200); => delay_ms(800);
结果速度变的很快
2、delay_ms(200); => delay_ms(200);delay_ms(200);
还是比以前快很多

请问下这是什么原因造成的?与单片机程序运行周期有关吗?

最新回复

这种软件延时,不准.用定时器吧.  详情 回复 发表于 2009-3-6 12:47
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
昨天不知道怎么回事都这样。
今天试了下,第二种方法正常。
第一种方法小灯闪得还是很快。
又上网查了下,在32位系统中一个char类型一般为8个bit,unsigned char则是0~255。
再试试,还是上午头脑清醒哈。

如果自己解决了就改成送分,交几个朋友,以后有问题也方便。
三天内结贴。
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
晕, 很显然是字长的问题!800赋给8位的字符型变量是多少?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼主 “ for (b = 1; b; b++) ;”调的通么?
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
第一个还可以说是unsigned char的长度限制。

不过第二个就有点莫名了:
2、delay_ms(200); => delay_ms(200);delay_ms(200); 还是比以前快很多

怎么也不会比以前快呀?

可以在里面再加个c, for( c=1; c 这个很不精确的。

另外,avr的去www.ouravr.com交流吧,国内最大的开源avr论坛,比这里的环境好。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
的确,800可以说是unsigned char的长度的问题。 但是第2个我 还是比以前快就想不通了。
我没用过avr,在用PIC时,在mplab有个stopwatch,可以得到程序执行时间,我都用这个来看延时。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
延时肯定是跟时钟周期有关的,这些都可以在芯片手册上查到。
www.icpdf.com 这个网站就可以找到。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
数据类型问题

unsigned char的长度限制
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
unsigned char 8位 255-》11111111

800--》1100100000---赋值给 unsigned char 取8位-》00100000=32
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
如果字长改不了,就多加几个FOR循环吧。
也可以像你第二种方法一样,多调用几次delay_ms函数。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
这种软件延时,不准.用定时器吧.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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