烽火社区

标题: 【MSP430F149学习】10流水灯 [打印本页]

作者: 删除记忆的猫    时间: 2015-12-6 12:27 PM
标题: 【MSP430F149学习】10流水灯


【MSP430F149学习】10流水灯



准备工具:电脑;TS8900--MSP430F149开发板;USB线一根


开发环境:IAR EW for MSP430 V5.30


控制板载LED8~1来回流动


流水灯原理图                                                  灌电流外加1K的限流电阻


[attach]33265[/attach]



硬件


[attach]33266[/attach]


程序代码


/***********************************************
       程 序功能:实现板载LED8~1来回流动
************************************************/
#include  

typedef unsigned int  uint;


uint i = 0,dir = 0;


/****************主函数****************/
void main(void)
{
  
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF1OUT = 0XFF;
    P2DIR = 0XFF2OUT = 0XFF;
    P3DIR = 0XFF3OUT = 0XFF;
    P4DIR = 0XFF4OUT = 0XFF;
    P5DIR = 0XFF5OUT = 0XFF;
    P6DIR = 0XFF6OUT = 0XFF;
    
    P2DIR = 0XFF;                      // 设置P2.0~7 I/O口方向为输出模式
    //WDTCTL = WDT_ADLY_1000;            // 设置看门狗工作在定时模式时间1000ms
    WDTCTL = WDT_MDLY_32;              // 设置看门狗工作在定时模式时间大约30ms
    IE1   |= WDTIE;                    // 使能看门狗中断
    
    _EINT();                           // 总中断开  

    while(1);                          //  死循环
  
}


/********** 看门狗定时器中断服务函数***********/

#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{  
   
    if(++dir <= 8)
    {
        P2OUT = ~(0x80>>(i++));    //灯的点亮顺序LED8 -> LED1
    }
    else
    {
        P2OUT = ~(0x01<<(i++));    //灯的点亮顺序LEDD1 ->LEDD8
    }
    if(i == 8 ) 
    {
        i = 0;
    }
    if(dir == 16)
    {
      dir = 0;
    }
} 



下载运行效果


[attach]33267[/attach]




【MSP430F149学习】汇总贴








欢迎光临 烽火社区 (http://bbs.cnecport.com/) Powered by Discuz! X3.2