[AVR单片机] 有关ATMEGA16问题(新手请教)

[复制链接]
5232|12
 楼主| lbk708 发表于 2007-4-13 10:21 | 显示全部楼层 |阅读模式
请问ATMEGA16机器周期是多少?用8M晶振执行一条单指令时间是多少?
zsmbj 发表于 2007-4-13 12:40 | 显示全部楼层

机器周期=时钟周期。

8M 执行一条单周期指令为1/8 = 0.125us = 125ns
soso 发表于 2007-4-13 12:42 | 显示全部楼层

ding

MEGA16机器周期是62.5nS; 8M晶振执行一条单指令时间是125nS(对单周期指令),但AVR有一大部分指令要3个周期。


 楼主| lbk708 发表于 2007-4-13 14:07 | 显示全部楼层

谢谢了

哦,谢谢了!小弟在写AVR读DS18B20的程序,原先是用51的,所以时序上有些修改,谢谢各位老兄了!
zsmbj 发表于 2007-4-13 15:24 | 显示全部楼层

To bbstom

已M16为例:有131条指令,单周期有58条,2周期有38条。3周期的有6条,4周期的有3条。还有1/2周期跳转的20条。还有1/2/3周期跳转5条。还有spm指令。

因此绝对不能说是“但AVR有一大部分指令要3个周期。”

最多的是单周期和2周期指令。
 楼主| lbk708 发表于 2007-4-13 16:24 | 显示全部楼层

好啊

好啊
但我现在还是没有调通,可能还是时序没搞好.
_delay_us(18);//10us
这个函数是基于多少晶振的? 我想要一个6M晶振下的1US的延时程序(MEGA16)
 楼主| lbk708 发表于 2007-4-13 16:37 | 显示全部楼层

再次谢谢各位兄弟的热情帮助!

再次谢谢各位兄弟的热情帮助!
zsmbj 发表于 2007-4-13 18:31 | 显示全部楼层

delay要仔细调整的。

如果是winavr的自带的delay函数比较精确。

否则要看对应的汇编语言计算。
 楼主| lbk708 发表于 2007-4-14 14:36 | 显示全部楼层

_delay_us(1);

_delay_us(1);这个是编译器自带的延时程序,1M晶振时理论为1US,但实际上是1点多US,也不是很准.
 楼主| lbk708 发表于 2007-4-16 12:58 | 显示全部楼层

To bbstom

To bbstom,请教一下1/2周期、1/2/3周期是什么意思?
 楼主| lbk708 发表于 2007-4-16 17:48 | 显示全部楼层

程序已调通

读温度的程序终于调通了,再次谢谢各位兄弟的热心帮助,现把程序拿来与朋友们共享,希望甘多的朋友能从中有所受益!
相关链接:https://bbs.21ic.com/upfiles/img/20074/2007416174819319.rar
 楼主| lbk708 发表于 2007-4-18 17:26 | 显示全部楼层

顶一下吧

朋友们觉得有用的话就请顶一下吧,让更多的人能下载!^-^
panjun_316 发表于 2008-6-23 15:57 | 显示全部楼层

支持楼主

谢谢楼主的共享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

43

帖子

0

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