原创 MSP430学习笔记(3)

2011-7-29 19:37 1722 7 9 分类: MCU/ 嵌入式

MSP学习笔记(3

预告中的一段视频,用来骗骗小孩子还是不错的,对于工程师来说,当然很快就能透过现象看到本质,外壳里面不过就是一个键控灯而已。

之所以选这么一个东西来练手,是因为我日益感受到做一个“有现象的东西”对于学习的激励作用。

20110729193745001.jpg

七彩灯原理图

这里用到了一个七彩灯,也就是在一个5mm直径的发光管中封装了红、绿、蓝三色的一个发光二极管。

下面我们分步来完成。

1.分别点亮3个灯

硬件连接:R连接于P2.0G连接于P2.1B连接于P2.2,即P2.0~P2.2分别控制红、绿、蓝灯。

那么基于第一个例子,分别控制RGB亮或灭的代码如下:

P2&=0xfe;     //点亮红灯

P2|=0x01;       //关闭红灯

//////////////

P2&=0xfd;     //点亮绿灯

P2|=0x02;       //关闭绿灯

//////////////

P2&=0xfb;     //点亮蓝灯

P2|=0x04;       //关闭蓝灯

2.灯的渐亮渐灭

关于灯的渐亮和渐灭的原理,我已在博客里谈过多次,这里就不再重复了。先给段代码吧。这个就是基于博文1http://blog.ednchina.com/czlyzhj/2108970/message.aspx)修改的。

#include  <msp430x14x.h>

#include  "BoardConfig.h"

 

/****************主函数****************/

void main(void)

{ 

    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗

    BoardConfig(0xf0);              //关闭数码管和电平转换,打开流水灯

   

    CCTL0 = CCIE;                   //使能CCR0中断

    CCR0 = 15;                    //设定周期****S (等会计算)

    TACTL = TASSEL_1 + ID_0 + MC_1; //定时器A的时钟源选择ACLK,增计数模式

       //注意前2行已修改。CCR0的值,ID_3变成了ID_0

    P2DIR = 0xff;                   //设置P2口方向为输出

    P2OUT = 0x55;

    _EINT();                        //使能全局中断

    LPM3;                           //CPU进入LPM3模式

}

 

/*******************************************

函数名称:Timer_A

    能:定时器A的中断服务函数

    数:无

返回值  :无

********************************************/

uchar PwmTab[]={0,0,1,1,2,3,6,7,9,10,11,12,13,14,15,16,18,19,20,20} ;

#pragma vector = TIMERA0_VECTOR

__interrupt void Timer_A (void)

{  

    static uchar LedOn;

    static uchar CountS,CountL;  //CountS是小周期,最大计到20CountL是大周期

    static uchar iCount;

    static uchar UpDown=0;

 

    if(++CountS>=20)  //小周期结束

    {     CountS=0;

       iCount++;

       if(iCount==5)

       {   iCount=0;

           if(++CountL>=20)         //大周期计数

           {     UpDown=~UpDown;            //大周期结束上升/下降切换

              CountL=0;

           }

           if(UpDown)

             LedOn=PwmTab[CountL];

           else

             LedOn=PwmTab[19-CountL];

       }

    }

    if(CountS>LedOn)

       P2OUT&=0xfe;

    else

       P2OUT|=0x01;

 

}

将这段代码写进芯片,可以见到接在P2.0上的灯渐亮渐灭了。

 

文章评论2条评论)

登录后参与讨论

zd.cai_402214705 2011-8-1 18:30

呵呵

用户311125 2011-7-30 23:51

很巧妙的程序
相关推荐阅读
teach51_109853927 2015-10-25 22:37
带“锁定输出”的数控稳压电源(二)
3.控制程序编写        硬件电路设计完成后,就要编写软件了。软件基本上可以分为键盘驱动,PWM生成,功能实现等部分。 3.1 键盘处理程序        STC单片机的引脚可以...
teach51_109853927 2014-03-02 12:17
带“锁定输出”的数控稳压电源(一)
本文是探索“开源培训”思想的作品。 所谓“开源培训”是指在某个社区,各志愿者提供有一定实用价值和教学价值的作品,同时详细说明制作过程,并提供制作所需的各类资源,帮助入门者快速找到适合自己的项目...
teach51_109853927 2014-02-22 21:15
《单片机项目教程》、《单片机项目教程C语言版》电子课件
《单片机项目教程》电子课件 http://pan.baidu.com/s/1kT2Yb6f 《单片机项目教程C语言版》电子课件 http://pan.baidu.com/s/1gd5O...
teach51_109853927 2014-02-22 21:05
《单片机应用与接口技术》相关资源
单片机应用与接口技术    机械工业出版社出版,江苏省教育厅推荐教材 《单片机应用与接口技术》课件 http://pan.baidu.com/s/1c0kpzUg 《单片机应用与接...
teach51_109853927 2014-02-22 15:25
便携式无线抢答器
本产品专门为开展活动时需要用到抢答器的场合设计,已制作成品,读者可以参考作为练手之用。 如图1所示左边为信号接收装置(主持人用),右边两个为发射装置(比赛选手用)。都只需要使用干电池供电即可。...
teach51_109853927 2014-02-22 15:22
Modbus通讯协议
Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协...
我要评论
2
7
关闭 站长推荐上一条 /2 下一条