求助!单片机msp430G2553,关于LED的一个小程序。
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我不会用但是我看到小编的程序就觉得有问题。
- void Blink_LED()
- {
- _delay_cycles(1000000); //延时
- P1OUT^=BIT6; //状态翻转
- P2OUT^=BIT0; //状态翻转
-
- }
根本就不用两个延时,一个延时就够了
你的现象应该是一个灯先亮,另一个后亮,一个灯先灭,后一个再灭,对吧。也就是两个灯的状态没有做到相反。要实现你要的功能很简单,在你的基础上小改动一点就行了
#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楼回答的不能实现你的功能,他只能做到两个灯同时两灭,还不如你的代码
楼上的正解,可以试下。
非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!
非常感谢!现在已经解决了,最近没登号,回复的就晚了。谢谢啦!
非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!
原来现象就是不交互,非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!
非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!
非常感谢,现在已经解决了,最近没登号,回复晚了。谢谢啦!
只要他设置开始的状态时一个灯亮一个灯灭,就能实现两个灯交替亮。