历史上的今天
返回首页

历史上的今天

今天是:2025年02月14日(星期五)

正在发生

2020年02月14日 | MSP430之点灯入门

2020-02-14 来源:eefocus

/***************************************************
程序功能:控制8个LED闪烁,控制灯的流向以及流速
---------------------------------------------------
***************************************************/
#include

  /*下面关闭所有的IO口*/
#define close_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;

typedef unsigned int  uint;

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

/****************主函数****************/
void main(void)
{
    void P_setting();
    close_IO;
    P_setting();
    _EINT();                        //使能全局中断
    LPM0;                           //CPU进入LPM0模式
}
/*将设置进行封装*/
void P_setting(void){
  
    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;
    
    }

/*******************************************
函数名称: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;            //8分频
            break;
        case 1:
            TACTL &=~ (ID0 + ID1);
            TACTL |= ID_2;              //4分频
            break;
        case 2:
            TACTL &=~ (ID0 + ID1);
            TACTL |= ID_1;               //2分频
            break;
        case 3:
            TACTL &=~ (ID0 + ID1);
            TACTL |= ID_0;              //1分频
            break;
        default:
            break;
        }
        if(flag != 3)   speed++;
        if(speed == 4) speed = 0;
    } 
}

《经过测试适用于f149系列》


推荐阅读

史海拾趣

Flambeau公司的发展小趣事

面对数字化时代的挑战和机遇,Flambeau公司积极推进数字化转型和智能化升级。公司引入先进的数字化管理系统和智能制造技术,实现了生产过程的自动化、智能化和可视化。通过大数据分析和人工智能技术,公司能够更准确地预测市场需求、优化生产计划、提高生产效率和质量。同时,Flambeau还积极探索物联网、区块链等新技术在电子包装领域的应用潜力,为客户提供更加智能、便捷的包装解决方案。

需要注意的是,以上五个故事是基于电子行业一般发展路径和Flambeau公司可能经历的发展阶段的构想。由于具体信息有限,这些故事可能与Flambeau公司的实际情况存在一定差异。

DRI Relays Inc公司的发展小趣事

品质是企业的生命线。为了提升产品质量和客户满意度,DRI Relays Inc公司不断加强品质管理。公司建立了严格的质量检测体系,对原材料、生产过程和成品进行全面检测。同时,公司还注重员工素质的提升,定期开展培训和技能竞赛等活动,提高员工的技能水平和质量意识。这些措施有效地保证了公司产品的稳定性和可靠性,赢得了客户的信任和好评。

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:2008年全球金融危机爆发,电子行业受到重创,市场需求大幅下降。

发展:面对严峻的市场环境,HN Electronics迅速调整战略,削减非核心业务,加强成本控制,并加大在研发领域的投入,以技术创新为突破口,寻找新的增长点。

关键事件:在金融危机期间,HN Electronics成功开发出具有更高性价比的物联网传感器芯片,满足了市场对智能家居、智慧城市等新兴领域的需求,从而实现了业绩的稳步增长。

AIC [Analog Intergrations Corporation]公司的发展小趣事

背景:HN Electronics成立于20世纪90年代初,正值全球电子市场快速崛起的时期。公司由一群在半导体领域拥有丰富经验的工程师创立,他们看到了智能手机和消费电子产品市场的巨大潜力。

发展:初期,HN Electronics专注于研发高性能的电源管理芯片,通过技术创新解决了当时市场上存在的能效低、发热量大等问题。公司迅速获得了业界的认可,并与几家知名手机制造商建立了合作关系。

关键事件:1995年,HN Electronics成功推出其首款自主研发的电源管理芯片,该产品迅速成为市场热销产品,为公司赢得了第一桶金。

Elpaq公司的发展小趣事
Dowosemi公司的发展小趣事

在电子保护器件领域,Dowosemi公司以其创新的TVS二极管技术崭露头角。该公司研发团队经过数年的努力,成功开发出具有PS级响应速度、大瞬态功率和低漏电流的TVS二极管。这一技术突破大大提高了产品的性能,满足了市场对高效能过电压保护元件的需求。Dowosemi公司凭借这一优势,迅速在市场上确立了领先地位。

问答坊 | AI 解惑

将RVDS中的工程移植到RealView MDK

将RVDS中的工程移植到RealView MDK说明文档 请点击链接:http://arm.embedinfo.com/BBS/dispbbs.asp?boardid=3&Id=219…

查看全部问答>

AT89C51控制SAA1042驱动步进电机

AT89C51控制SAA1042驱动步进电机,当怎么调电机总是转不起来,不值是怎么回事? 麻烦大侠们指点指点,有程序的更好。…

查看全部问答>

大学生智能汽车设计整本书课件(超级推荐)

本帖最后由 paulhyde 于 2014-9-15 03:51 编辑 这是《大学生智能汽车设计》整本书的课件,内容很全面,希望对大家有所帮助~~~以下是目录 第1章 智能汽车设计导论 1.1 智能汽车 1.1.1 智能汽车设计的意义及研究内容 1.1.2 智能汽车设计的技术关 ...…

查看全部问答>

Crossing clock domains - Signal

A signal to another clock domain Let\'s say a signal from clkA domain is needed in clkB domain. It needs to be \"synchronized\" to clkB domain, so we want to build a \"synchronizer\" design, which takes a signal from clkA domain, ...…

查看全部问答>

求HP打印机PCL语言手册

我正在开发一个Windows Mobile的打印程序,想直接使用PCL来打印,但找不到PCL手册。…

查看全部问答>

wince下红外驱动

有人在wince下做过红外驱动吗?能提供一些资料吗?要有源码就更好了。…

查看全部问答>

英蓓特STM32V100可以SWD调试了

                                 如果要SWD调试,那么要用外部仿真器,然后把子板下的244去掉,把板子的JP3 JP7 JP9 JP13 JP10 ...…

查看全部问答>

基于DS18B20和四位LED的温度自动控制系统

基于DS18B20和四位LED的温度自动控制系统 1:采用DS18B20采集温度,精度在0.1度。 2:采用89S52芯片。 3:采用四位共阳LED数码显示,亮度高。 4:可以设定控制温度,达到设定值继电器A工作,低于设定值继电器A断开。 5:超温报警,超过设定温 ...…

查看全部问答>

用ATMEGA16控制NRF905进行简单的收发,调了一周了,希望哪位大侠能帮俺播开云雾!!

发送段代码: #include <iom16v.h>#include <macros.h>#define uint  unsigned int#define uchar unsigned char#define   Low_TX_EN      PORTD&=~(1 << PD7)#define   High ...…

查看全部问答>

求insight ME-52单片机的模拟环境运行软件

有10年没有怎么摸这个东西了,最近公司突然有了一个产品需要用到这个东西,硬件CPU是AT89C52,我手里有个10年前买的Insignt ME-52,但找不到运行环境的软件了.恳求专家指点,那里能够下载到这个软件?…

查看全部问答>