微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助!单片机msp430G2553,关于LED的一个小程序。

求助!单片机msp430G2553,关于LED的一个小程序。

时间:10-02 整理:3721RD 点击:
#include"msp430g2553.h"
void main(void) {
        void Blink_LED();
        WDTCTL=WDTPW+WDTHOLD;       //关闭看门狗
        P1DIR=BIT6;
        P2DIR=BIT0;
        while(1)
        {
                Blink_LED();
        }
}
void Blink_LED()
{
        _delay_cycles(1000000);       //控制第二个LED        P1OUT^=BIT6;
        _delay_cycles(1000000);       //控制第一个LED
        P2OUT^=BIT0;
       
}
请问哪出错了?该怎样写?谢谢啦!(目的是:让两个LED交互闪烁!)

main()函数里定义一个布尔变量blnStatus:0——LED1亮,LED2灭;1——LED1灭,LED2亮。
while(1)
{
  blnStatus != blnStatus;
  if (blnStatus)
  {
    // 点亮LED1,熄灭LED2。
  }
  else
  {
    // 熄灭LED1,点亮LED2。
  }
  _delay_cycles(1000000);
};

小编现在的程序现象是什么  _delay_cycles(1000000); 时间有点太长了

/********************************************************************************************************************/
/***************MSP430g2553实现一个红绿灯交替闪5秒后变红绿灯同时闪5秒又重复红绿交替闪********************************/
/********************************************************************************************************************/
#include<msp430g2553.h>
void main(void) {
        WDTCTL = WDTPW + WDTHOLD;
        int i;
        P1DIR |=BIT0+BIT6;
        while(1)
        {
                for(i=1;i<=25;i++)
                {
                        P1OUT=BIT0;
                        _delay_cycles(100000);
                        P1OUT=BIT6;
                        _delay_cycles(100000);
                }
                for(i=1;i<=25;i++)
                {
                        P1OUT=BIT0+BIT6;
                        _delay_cycles(100000);
                        P1OUT=0X00;
                        _delay_cycles(100000);
                }
        }
       
}
参考下吧  好久没写MSP430G2553的程序了   要知道我也是新手  可能有不足的地方

虽然430我不会用但是我看到小编的程序就觉得有问题。

  1. void Blink_LED()
  2. {
  3.         _delay_cycles(1000000);       //延时      
  4.         P1OUT^=BIT6;                    //状态翻转
  5.         P2OUT^=BIT0;                   //状态翻转
  6.         
  7. }

复制代码


根本就不用两个延时,一个延时就够了

你的现象应该是一个灯先亮,另一个后亮,一个灯先灭,后一个再灭,对吧。也就是两个灯的状态没有做到相反。要实现你要的功能很简单,在你的基础上小改动一点就行了
#include"msp430g2553.h"
void main(void) {
        void Blink_LED();
        WDTCTL=WDTPW+WDTHOLD;       //关闭看门狗
        P1DIR=BIT6;
        P2DIR=BIT0;
        P1OUT |= BIT6;
        P2OUT &= ~BIT6;
        while(1)
        {
                Blink_LED();
        }
}
void Blink_LED()
{
        _delay_cycles(1000000);       //控制第二个LED
        P1OUT^=BIT6;
        P2OUT^=BIT0;
}
顺便说一下,5楼回答的不能实现你的功能,他只能做到两个灯同时两灭,还不如你的代码

楼上的正解,可以试下。

非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!

非常感谢!现在已经解决了,最近没登号,回复的就晚了。谢谢啦!

非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!

原来现象就是不交互,非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!

非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!

非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!

只要他设置开始的状态时一个灯亮一个灯灭,就能实现两个灯交替亮。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top