查看: 249|回复: 0
打印 上一主题 下一主题

【MSP430F149学习】10流水灯

[复制链接] qrcode

33

主题

38

帖子

113

积分

注册会员

Rank: 2

积分
113
楼主
跳转到指定楼层
发表于 2015-12-6 12:27 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


【MSP430F149学习】10流水灯



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


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


控制板载LED8~1来回流动


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





硬件




程序代码


/***********************************************
       程 序功能:实现板载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;
    }
} 



下载运行效果






【MSP430F149学习】汇总贴



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表