MSP430单片机C编程

MSP430单片机C编程中,往往遇到以下的语句:WDTCTL=WDTPW+WDTHLD;书上编程举例说这是关闭看门狗,可没说为什么要这样表达,我不明白,这样的语句如何实现... MSP430单片机C编程中,往往遇到以下的语句:WDTCTL=WDTPW+WDTHLD;
书上编程举例说这是关闭看门狗,可没说为什么要这样表达,我不明白,这样的语句如何实现关闭功能?为何要将两个控制位相加就能实现关闭呢?相减行不行?或者用别的方式?望各位赐教(用C语言知识讲解),最好能说明一下用这样的C语句的原因,谢谢
展开
 我来答
百度网友949925f4e
2009-08-10 · TA获得超过420个赞
知道小有建树答主
回答量:368
采纳率:100%
帮助的人:316万
展开全部
WDTCTL=WDTPW+WDTHLD;每一个字符组都代表一个二进制数,也就是相关功能位的值,举个例子:WDTHOLD假如代表0x0080h,那么也就是对应WDTCTL的第八位。WDTCTL=WDTHOLD,意思就是使能WDTCTL寄存器的第八位,也可以用数字表达式来表示:WDTCTL=0x0080H,没有区别。+在这里不是你理解的运算,在这里相当于"或".
建议多看看头文件和数据手册。
feiyang0289
2009-08-17 · TA获得超过320个赞
知道小有建树答主
回答量:442
采纳率:100%
帮助的人:200万
展开全部
相减当然不行了,+代表或的意思。
WDTPW,是关闭开门狗的密码,无它则关闭不了看门狗。
你把整个换成二进制,对比寄存器就容易明白了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
20078004058
2009-08-11 · TA获得超过673个赞
知道小有建树答主
回答量:270
采纳率:0%
帮助的人:284万
展开全部
这个问题在我开始学习430的时候也是很不解,不过现在看来是很容易但很必要,首先你要明白每个关键字的含义,WDTCTL代表的是看门狗寄存器,WDTPW和WDTHLD是控制位,就是说WDTCTL就是一个八位的数据,你要通过控制位的或运算来控制它的值,这是430特有的东西,不是C语言带的,只看C语言你是不会理解的,建议看一下《msp430系列16位超低功耗单片机原理与应用》;这本书很好的,我当年入门时就是用这本书入的门,你看了也会达到我这种水平的!
祝你好运!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Tom1987
推荐于2016-07-08 · TA获得超过1311个赞
知道小有建树答主
回答量:325
采纳率:0%
帮助的人:318万
展开全部
430的编译环境里都提供一系列与片子型号对应的头文件,比如msp430x14x.h就是对14系列的资源定义,说得明白点,就是许多#define宏定义,然后你会发现每个430程序都会包含对应的头文件。比如你说的WDTCTL=WDTPW+WDTHOLD,WDTCTL已经被定义为对应寄存器(看门狗控制寄存器)的地址,WDTPW和WDTHOLD是该寄存器对应位为1的数值,也已经宏定义,如WDTHOLD为第7位,就已经被定义为0x80(0b10000000),然后通过把数值赋给对应地址(可视为变量),这样就可以将对应位置1,如果要同时置多位,就用“加”或者“或”。之所以有这么多的宏定义,就是为了用户记忆方便,记忆有意义的符号比数字好记多了。
补充:为了只对某一位操作,不影响其他位的值,一般用与操作或者或操作,如果是将某位清零,如打开高频晶振,就是是BCSCTL1&=~XT2OFF;即把某未取反再与,对应位就变0,而其余位与上1不改变,原理如上。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zaoshen14
2009-08-21 · TA获得超过240个赞
知道答主
回答量:245
采纳率:0%
帮助的人:148万
展开全部
哈哈哈哈哈哈哈 刚开始我也困惑

找到操作手册,找到WDTPW,WDTHLD。 你就知道为什么要相加了。
WDTCTL是控制字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式