AVR单片机里异步串行通信,这句是什么意思:UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0)

请高手详细讲解。。。三个或都讲一下~~~还有为什么步直接赋初值UCSRC=0x86啊,多简单这里面的UCSZ0UPM0URSEL数值是多少是他们的初值还是什么?... 请高手详细讲解。。。
三个或都讲一下~~~
还有为什么步直接赋初值UCSRC=0x86啊,多简单
这里面的UCSZ0 UPM0 URSEL 数值是多少
是他们的初值还是什么?
展开
 我来答
小号很好使
2014-11-23 · TA获得超过457个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:113万
展开全部
这个几个单词都是有define宏定义的,确实代表了几个数字,在头文件里有,ctrl+f自行搜索一下即可找到。你要是懒得找,我告诉你也行,他其实就是按照某位实际存在的位来定义的,例如UPM0位于bit4,那么头文件里肯定有#define UPM0 4,以此类推。
你问为什么不直接赋值,而通过这种貌似“复杂”的方式?
我来给你说下,举个例子,比如你打算把UCSZ1 、UCSZ0设为1、1(也即UCSZ=3,你懂得)其他全部设0(即0000 0110),那么就应该有UCSRC=0x06.
反过来,当你看到0x06这个数值的时候,你能一下子反应过来,知道UCSZ=3吗,我觉得很难做到。
但是那种“麻烦”的方式却能让读者一目了然就知道UCSRC的设定情况,比如
UCSRS=(3<<UCSZ0)。
实质就是UCSRS=(3<<1)=0000 0110。(因为UCSZ0位于bit1,因此UCSZ0就=1)
这种方式对于URSEL、UPM等等的设定非常重要,当你想要更改UCSRC寄存器设定的时候,你会发现,这种方式非常直观,而不必每次都去“计算或者口算或者心算”他们对应的16进制数
自己体会一下
查晓筠0i5
2014-11-23 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4958万
展开全部
需要帮你写程序吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式