P1DIR=0X01; while(1) { P1OUT^=0X01; int i=10000; for(i=0;i<10000;i--); } }

这是msp430单片机的程序,我知道是起到闪烁的效果,但是while之后的程序不知道为什么要这样写,帮我解释一下,越详细越好,感谢!还有while(1)跟下面花括号里面的... 这是msp430单片机的程序,我知道是起到闪烁的效果,但是while之后的程序不知道为什么要这样写,帮我解释一下,越详细越好,感谢!
还有while(1)跟下面花括号里面的内容有什么关系?
这样容易看点
#include "io430.h"

int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;

P1DIR=0X01;
while(1)
{
P1OUT^=0X01;

int i=10000;
for(i=0;i<10000;i--);
}
}
展开
 我来答
打酱油之我见
推荐于2016-07-15
知道答主
回答量:1
采纳率:0%
帮助的人:2.3万
展开全部
P1DIR是表征IO端口1各位的输入输出方向,该位为0是输入,为1是输出。P1DIR=0x01表示将P1.0位设置为输出。while(1)判断总成立,循环执行{}中的语句。P1OUT^=0x01表示对IO端口1的输出与0x01按位异或后再输出,由于仅将P1.0置为了输出端口,只考虑P1OUT最低位的变化:0与1异或变为1,1与1异或变为0,这样就实现了每循环一次,P1.0的输出发生一次改变。“for(i = 0; i <10000; i++);”是延时语句,使得P1.0输出变化肉眼可见。
另:是不是多打了一个'}'。。。
更多追问追答
追问
P1OUT^=0X01;中的0x01改成0x00为什么灯不会亮了,不是会异或吗
追答
当然不会亮啊。0与0的异或还是0,1与0的异或还是1。因此P1OUT^0x00还是P1OUT,输出不会发生改变,灯当然不会亮了。
shine1991
科技发烧友

2014-04-06 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
P1OUT^=0X01;
实现的是P1OUT即将P1OUT的最低位与1异或,即将P1OUT的最低位翻转,即原先是1,则为0,原先是0,则为1,实现的是闪烁
之后的是延时一段时间以保持刚才的状态一段时间
更多追问追答
追问
还有while(1)跟下面花括号里面的内容有什么关系?

为什么不是i++而是i--
追答
这个不是重点,都是用于延时的,总会溢出的,无非是延时时间的长短而已
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
想你成瘾ly
2014-04-06
知道答主
回答量:1
采纳率:0%
帮助的人:1377
展开全部
#include "msp430x14x.h"
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P2DIR |=BIT0;
_EINT();
TACCTL0=CCIE;
CCR0=500;
TACTL=TASSEL_2 + MC_1;
LPM0;
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TIMER_A(void)
{
P2OUT ^=BIT0;
CCR0+= 500;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式