历史上的今天
返回首页

历史上的今天

今天是:2025年02月24日(星期一)

正在发生

2020年02月24日 | 初步学习MSP430——跑马灯

2020-02-24 来源:eefocus

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

程序功能:实现流水灯以三种流动方式和四种流动速度

          的不同组合而进行点亮"流动"

------------------------------------------------

拨码开关设置:将LED位拨至ON,其余拨至OFF

测试说明:观察流水灯流动顺序和速度的变化

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

#include 


typedef unsigned int  uint;


uint i = 0,j = 0,dir = 0;

uint flag = 0,speed = 0;  //flag--灯光流动方式,speed--灯光流动速度


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

void main(void)

{

  

    /*下面六行程序关闭所有的IO口*/

    P1DIR = 0XFF;P1OUT = 0XFF;

    P2DIR = 0XFF;P2OUT = 0XFF;

    P3DIR = 0XFF;P3OUT = 0XFF;

    P4DIR = 0XFF;P4OUT = 0XFF;

    P5DIR = 0XFF;P5OUT = 0XFF;

    P6DIR = 0XFF;P6OUT = 0XFF;

  

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

    P6DIR |= BIT2;P6OUT |= BIT2;    //关闭电平转换

    P5OUT &= ~BIT7;

    

    CCTL0 = CCIE;                   //使能CCR0中断

    CCR0 = 50000;

    TACTL = TASSEL_2 + ID_3 + MC_1; //定时器A的时钟源选择SMCLK,增计数模式

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

    P2OUT = 0xff;

 

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

    LPM0;                           //CPU进入LPM0模式

}


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

函数名称:Timer_A 

功    能:定时器A的中断服务函数,在这里通过标志

          控制流水灯的流动方向和流动速度

参    数:无

返回值  :无

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

#pragma vector = TIMERA0_VECTOR

__interrupt void Timer_A (void)

{  

    if(flag == 0)

    {

        P2OUT = ~(0x80>>(i++));    //灯的点亮顺序D8 -> D1

    }

    else if(flag == 1)

    {

        P2OUT = ~(0x01<<(i++));    //灯的点亮顺序D1 -> D8

    }

    else 

    {

        if(dir)                  //灯的点亮顺序  D8 -> D1,D1 -> D8,循环绕圈                        

        {

            P2OUT = ~(0x80>>(i++));

        }

        else

        {

            P2OUT = ~(0x01<<(i++));

        }

    }

  

    if(i == 8) 

    {

        i = 0;

        dir = ~dir;

    }

  

    j++;

    if(j == 40) 

    {

        i = 0;

        j = 0;

        flag++;

        if(flag == 4) flag = 0;

        switch(speed)

        {

        case 0:

            TACTL &=~ (ID0 + ID1);

            TACTL |= ID_3;

            break;

        case 1:

            TACTL &=~ (ID0 + ID1);

            TACTL |= ID_2;

            break;

        case 2:

            TACTL &=~ (ID0 + ID1);

            TACTL |= ID_1;

            break;

        case 3:

            TACTL &=~ (ID0 + ID1);

            TACTL |= ID_0;

            break;

        default:

            break;

        }

        if(flag != 3)   speed++;

        if(speed == 4) speed = 0;

    } 

}


推荐阅读

史海拾趣

Cressall Power Resistors公司的发展小趣事

Cressall一直注重企业文化建设和团队建设。公司倡导“创新、协作、诚信、责任”的核心价值观,鼓励员工勇于创新、敢于担当。同时,公司还加强了对员工的培训和激励,为员工提供了良好的职业发展平台。这些措施有效提升了员工的凝聚力和归属感,为公司的持续发展提供了有力的人才保障。

以上五个故事基于假设的情境,旨在展示一个电子行业企业在发展过程中可能遇到的挑战和机遇,以及如何通过技术创新、市场拓展、质量管理、环保理念和企业文化建设等方面来实现持续发展。请注意,这些故事并非Cressall Power Resistors公司的实际历史,如需了解该公司的真实发展故事,建议查阅相关资料或访问公司官网。

Everspin公司的发展小趣事

随着技术的不断进步,Everspin不断推出新的MRAM产品,并逐渐将市场扩展到工业自动化、游戏、能源管理、通讯、运输和航空电子等多个领域。特别是其MRAM和STT-MRAM产品在数据中心、云存储、能源、工业、汽车和运输市场中的广泛应用,为全球MRAM用户奠定了最强大、增长最快的基础。

Data Delay Devices公司的发展小趣事

DDD公司成立于1964年,当时正值电子行业的蓬勃发展期。创始人看到了延迟线技术在计算机和电信领域中的巨大潜力,决定投身其中。然而,初期的市场并不如预期般顺利,公司面临着资金短缺、技术难题和市场竞争等多重压力。但DDD公司的创始人凭借对技术的热情和坚定的信念,带领团队不断研发新产品,优化生产工艺,逐渐在市场中树立了自己的品牌形象。

Beta Dyne Inc公司的发展小趣事

随着国内市场的饱和,Beta Dyne开始将目光投向海外市场。公司制定了一套完整的国际化战略,包括在海外设立研发中心、建立销售渠道以及与当地企业建立合作关系等。通过不断的努力,Beta Dyne的产品逐渐打入国际市场,公司的知名度和影响力也得到了显著提升。

DAPAudio公司的发展小趣事

在全球环保和可持续发展的背景下,DAPAudio也积极响应这一号召。公司投入大量资源用于研发环保型音频处理器产品,通过采用环保材料和节能技术降低产品对环境的影响。同时,DAPAudio还积极参与社会公益活动,推动音频行业的可持续发展。

请注意,以上故事均为虚构内容,仅供参考。如需了解DAPAudio公司的真实发展故事,建议查阅相关官方资料或新闻报道。

远东福斯特公司的发展小趣事

随着公司产品的不断成熟和市场的逐渐扩大,DAPAudio开始将目光投向国际市场。通过与国际知名品牌的合作和自身的市场拓展努力,DAPAudio的产品逐渐进入欧美等发达国家和地区的市场。在国际市场上,DAPAudio凭借其卓越的产品性能和优质的服务赢得了广泛的赞誉和认可。

问答坊 | AI 解惑

基于声卡的虚拟示波器软件 v0.94

本帖最后由 paulhyde 于 2014-9-15 09:35 编辑 基于声卡的虚拟示波器软件 v0.94.zip  …

查看全部问答>

关于 PreTranslateMessage

为什么我重载了这个函数后,运行程序就很慢了,关闭应用程序都不起作用了?CPU使用率也很高,怎么解决。…

查看全部问答>

Mobil Intel 915GM 分辨率问题

我的T43机器显卡是Mobil Intel 915GM,在windows xp环境下最大显示分辨率就是1024×768,这个是最大分辨率吗,如果能更大分辨率,怎样设置。…

查看全部问答>

WinCE 5.0编译出错

编译基于2440的工程出错,哪位大侠解答一下?好像是串口的问题,但不知道怎么改,BSP的串口驱动已经加进去了,还是不行! BUILD: [01:0000000338:ERRORE] NMAKE :  U1073: don\'t know how to make \'D:\\WINCE500\\PBWorkspaces\\QT244 ...…

查看全部问答>

用过ndisprot的牛人进?技术难点

我们的无线设备是一个黑盒子,目的就是用无线网卡给黑盒子里发送数据以及接收盒子发过来的数据.但是每次都是第一次建立连接后没问题,然后停止后再次发送数据到盒子就会得到GetLastError=31,设备未发挥作用. 这个是怎么回事啊? 在停止后binding并没有 ...…

查看全部问答>

LED控制装置标准主要安全要求解析

[hide] LED在开始工作时,不需要预热和触发脉冲;在正常工作时,可以在特低安全电压下工作,这些都是LED较其它气体放电光源来说独特的优点。为了充分利用LED的这些优点,设计性能优良的LED控制装置是保证照明LED的优点得到充分发挥的重要工作。在 ...…

查看全部问答>

verilog 存储型寄存器组的问题以及分析

问题 verilog 中定义的存储型寄存器组,例如,reg [16:1]mem [255:0];这应该是可综合的,可是综合之后消耗的是 芯片中 分布式 LE 组成的 RAM 呢 还是 存储模块里的RAM 呢?(假定芯片中有存储模块RAM 区) 分析: 如果没有专门去调用芯片的RAM资 ...…

查看全部问答>

DIM3517使用请教

从师傅处借来DIM3517开发板老长段时间,由于一直出差也没抽出时间去研究,今天终于有时间了,想研究下,又没有显示板,在网上搜索,找到一种HDMI转AV的方案,内容如下: 为了解决DIM3517的显示问题(因为板子没有代LCD),坛主建议我买一块LCD,最 ...…

查看全部问答>

为什么要锁定寄存器

:rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose:…

查看全部问答>