MSP430G2553控制LED灯闪烁

2019-03-24 10:04发布

#include <msp430g2553.h>

main( void )
{
  double i;
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR |=BIT6+BIT0;        //将p1.6和p1.0设置为输出端
  P1OUT |=BIT6+BIT0;        //将p1,6和p1,0设置为高电位
  while(1)
  {
    P1OUT |=BIT6+BIT0;       //红灯,绿灯同时亮
    for(i=1;i<10;i++)
    {
      P1OUT &=BIT6+BIT0;
    }                         //红灯,绿灯同时灭
  }
}

大概是for循环语句出错,谁能告诉我哪里错了?

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
huaiqiao
1楼-- · 2019-03-26 03:38
曲尽,莫分離 发表于 2015-7-8 22:53
可以同时闪烁,而且亮灭很快

对啊 ,这个延时需要你自己来调整啊。定时器的话,可能会更加精确咯。还有利用cpu的几个模式lpm0等等。
曲尽,莫分離
2楼-- · 2019-03-26 04:22
 精彩回答 2  元偷偷看……
msp430_now
3楼-- · 2019-03-26 09:29
延时可以考虑 __delay_cycles(a), a值等于你的晶振频率时为一秒,灯亮,灯灭之间的循环可写为
while(1)
{
    P1OUT ^=(BIT6+BIT0);
   __delay_cycles(32768);    // 32768 Hz, 1s delay
}
huaiqiao
4楼-- · 2019-03-26 10:10
曲尽,莫分離 发表于 2015-7-8 23:23
但是我觉得你写的并没有延时

那么请问,“   i = 5000;do(i--); while(i !=0);”,这里在干吗?
曲尽,莫分離
5楼-- · 2019-03-26 12:53
 精彩回答 2  元偷偷看……
huaiqiao
6楼-- · 2019-03-26 14:45
曲尽,莫分離 发表于 2015-7-9 14:08
噢噢噢噢,是的

这个延时使用在对延时要求不高的场合中,延时的时间,我是不太清楚。但是如果要达到精确的演示,请使用定时器A/B。

一周热门 更多>

相关问题

    相关文章