[AVR单片机] 求助AVR单片机TWI的问题

[复制链接]
4746|13
 楼主| zhanglintc 发表于 2011-4-17 20:31 | 显示全部楼层 |阅读模式
正在看TWI总线的问题,其中看了很多源代码,有这么一句话:
TWCR|=(1<<TWEN)|(1<<TWIE);


这句话怎么理解啊?


有点无法入手~~


希望各位指点一下啊,谢谢
 楼主| zhanglintc 发表于 2011-4-17 20:32 | 显示全部楼层
难道,难道是把这两位清零的意思??
CIOneTwo 发表于 2011-4-18 15:41 | 显示全部楼层
是不是写错了啊,那两位置位不是多此一举么,应该直接就是TWCR=(1<<TWEN)|(1<<TWIE);吧。
joyme 发表于 2011-4-19 15:47 | 显示全部楼层
就是置位TWEN/TWIE,前者TW模块使能,后者使能中断,用|=是不影响除这两位的其他位,这么简单的位操作都看不懂,可要好好温习一下c语言了
 楼主| zhanglintc 发表于 2011-4-19 21:26 | 显示全部楼层
就是置位TWEN/TWIE,前者TW模块使能,后者使能中断,用|=是不影响除这两位的其他位,这么简单的位操作都看不懂,可要好好温习一下c语言了
joyme 发表于 2011-4-19 15:47


没接触过这样的写法啊~ 比较菜。

1<<TWEN是把TWEN左移吧? 左移了不就是清零了吗?怎么能置位的啊?
joyme 发表于 2011-4-20 09:02 | 显示全部楼层
看头文件里TWEN的定义吧,
val |= (1<<n)即将val的低n位置为1
val &= ~(1<<n)即将val的第n位清零 (val为char则n<8,一次类推)
这两个语句都不会影响除n位val的其他位
wc骑鱼士 发表于 2011-5-15 10:52 | 显示全部楼层
6楼的应该没错,可5楼的大哥c语言中没有这个吧,TWCR|=(1<<TWEN)|(1<<TWIE);这应该是avr单片机中特有的吧?我现在在自学avr,也是菜鸟,求解。:)
wc骑鱼士 发表于 2011-5-15 10:57 | 显示全部楼层
在问你们一下,把avr单片机的硬件都看完了,还应该看什么啊?求解?
chenczy 发表于 2011-5-16 15:39 | 显示全部楼层
还要自己做一个项目,只有在实际应用中才能更好地得到提高。不自己动手搞,看再多的书也是零
wc骑鱼士 发表于 2011-5-18 19:23 | 显示全部楼层
恩 谢了啊
wc骑鱼士 发表于 2011-5-18 19:26 | 显示全部楼层
请问avr常用函数包在哪可以下载啊?
hotpower 发表于 2011-5-19 00:12 | 显示全部楼层
uabuntsu 发表于 2011-7-13 12:10 | 显示全部楼层
io.h头文件中定义了寄存器标号代表的具体数字。
jamin.x 发表于 2011-9-27 18:38 | 显示全部楼层
大家一起努力学习吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

0

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