对msp430编程时为什么我使用P1OUT ^= 0x01;和P1OUT = 0x01;会产生不同的效果求大虾指导啊

程序如下//******************************************************************************/... 程序如下
//******************************************************************************
// MSP430G2xx1 Demo - Software Toggle P1.0
//
// Description; Toggle P1.0 by xor'ing P1.0 inside of a software loop.
// ACLK = n/a, MCLK = SMCLK = default DCO
//
// MSP430G2xx1
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.0|-->LED
//
// D. Dang
// Texas Instruments, Inc
// October 2010
// Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************

#include <msp430g2231.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= 0x01; // Set P1.0 to output direction

for (;;)
{
volatile unsigned int i;

P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR

i = 50000; // Delay
do (i--);
while (i != 0);
}
}
使用P1OUT ^= 0x01;时二极管闪烁
但使用P1OUT = 0x01;二极管不闪烁
展开
 我来答
凌珑井
2012-05-10 · TA获得超过856个赞
知道小有建树答主
回答量:585
采纳率:0%
帮助的人:465万
展开全部
^是异或计算符号 所以 每次运算都是反转的。而不不加这个运算符就是一直保持1的状态。
例:
状态1 P1OUT = 0x01 ---------P1OUT = 0x01 ^ 0x01 = 0x00
状态2 P1OUT = 0x00 ---------P1OUT = 0x00 ^ 0x01 = 0x01
状态3 P1OUT = 0x01 ---------P1OUT = 0x01 ^ 0x01 = 0x00
ahqitao
2012-08-14
知道答主
回答量:27
采纳率:0%
帮助的人:6万
展开全部
那个例子是0口翻转,循环后实现闪烁。你改了就一直亮了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式