Randy 发表于 2012-7-18 09:21:08

【大赛原创经验贴】LED流水灯实验

这是我学会的唯一一个程序,方法有些笨,不过还可以当入门的参考,一开始什么都不会,看着教程慢慢学,再尝试自己编,这个只能这样了,给大家看看吧。

流水灯



#include<msp430x14x.h>
#define uint unsignedint
#define uchar unsigned char
//各个LED亮灭的宏定义
#define   LED1_OFF   P6DIR|= BIT7,P6OUT|=BIT7//方向输出 高电平灭
#define   LED2_OFF   P6DIR|= BIT6,P6OUT|=BIT6
#define   LED3_OFF   P6DIR|= BIT5,P6OUT|=BIT5
#define   LED4_OFF   P6DIR|= BIT4,P6OUT|=BIT4
#define   LED5_OFF   P6DIR|= BIT3,P6OUT|=BIT3
#define   LED6_OFF   P6DIR|= BIT2,P6OUT|=BIT2
#define   LED7_OFF   P6DIR|= BIT1,P6OUT|=BIT1
#define   LED8_OFF   P6DIR|= BIT0,P6OUT|=BIT0
#define   LED1_ON      P6DIR|= BIT7,P6OUT&=~BIT7       //方向输出 低电平亮
#define   LED2_ON      P6DIR|= BIT6,P6OUT&=~BIT6
#define   LED3_ON      P6DIR|= BIT5,P6OUT&=~BIT5
#define   LED4_ON      P6DIR|= BIT4,P6OUT&=~BIT4
#define   LED5_ON      P6DIR|= BIT3,P6OUT&=~BIT3
#define   LED6_ON      P6DIR|= BIT2,P6OUT&=~BIT2
#define   LED7_ON      P6DIR|= BIT1,P6OUT&=~BIT1
#define   LED8_ON      P6DIR|= BIT0,P6OUT&=~BIT0
//时钟设置
void int_clk()
{
    uchar i;
    BCSCTL1&=~XT2OFF;                  //打开XT振荡器
    BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M
    do
{
      IFG1 &= ~OFIFG;                                  //清除振荡错误标志
      for(i = 0; i < 100; i++)
   _NOP();   //延时等待
      }
    while ((IFG1 & OFIFG) != 0);                           //如果标志为1继续循环等待
    IFG1&=~OFIFG;
}
//延时子函数
void delay()
{
uint i,j;
for(i=0;i<=1000;i++)
    {
    for(j=0;j<=1000;j++)
         ;
    }
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;                         //关闭看门狗      
int_clk();                         //初始化时钟
                  //循环亮灭
while(1)
{
delay();
LED1_ON;                  
delay();
LED2_ON;
delay();
LED3_ON;
delay();
LED4_ON;
delay();
LED5_ON;
delay();
LED6_ON;
delay();
LED7_ON;
delay();
LED8_ON;
delay();
LED1_OFF;
delay();
LED2_OFF;
delay();
LED3_OFF;
delay();
LED4_OFF;
delay();
LED5_OFF;
delay();
LED6_OFF;
delay();
LED7_OFF;
delay();
LED8_OFF;
delay();
}

}

页: [1]
查看完整版本: 【大赛原创经验贴】LED流水灯实验