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

2019-07-15 20:07发布

#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交互闪烁!)

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
Jack315
1楼-- · 2019-07-15 21:20
 精彩回答 2  元偷偷看……
z00
2楼-- · 2019-07-16 01:19
楼主现在的程序现象是什么  _delay_cycles(1000000); 时间有点太长了
卡农的旋律ろ
3楼-- · 2019-07-16 02:11
/********************************************************************************************************************/
/***************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的程序了   要知道我也是新手  可能有不足的地方

评分

参与人数 1积分 +10 收起 理由 zhou2sheng + 10 感谢您的参与,您的支持是我们最大的动力.

查看全部评分

依然落叶飘零
4楼-- · 2019-07-16 02:18
虽然430我不会用但是我看到楼主的程序就觉得有问题。
  1. void Blink_LED()
  2. {
  3.         _delay_cycles(1000000);       //延时      
  4.         P1OUT^=BIT6;                    //状态翻转
  5.         P2OUT^=BIT0;                   //状态翻转
  6.         
  7. }
复制代码
根本就不用两个延时,一个延时就够了
1522495332
5楼-- · 2019-07-16 05:54
你的现象应该是一个灯先亮,另一个后亮,一个灯先灭,后一个再灭,对吧。也就是两个灯的状态没有做到相反。要实现你要的功能很简单,在你的基础上小改动一点就行了
#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楼回答的不能实现你的功能,他只能做到两个灯同时两灭,还不如你的代码

评分

参与人数 1积分 +10 收起 理由 zhou2sheng + 10 感谢您的参与,您的支持是我们最大的动力.

查看全部评分

youzizhile
6楼-- · 2019-07-16 08:04
 精彩回答 2  元偷偷看……

一周热门 更多>