访问电脑版页面

导航:老古开发网手机版单片机MSP430单片机

用MSP430F1121设计电子产品的心得,与大家探讨

导读:
关键字:
MSP430系列功耗很低,用来设计电子产品时可以不设电源开关,以下是我设计的电子产品的

思路:

1.用两节电池供电,接上电池后F1121复位,设置好端口立即进入低功耗状态。

2.将on/off按钮接在 P2.0,利用端口的中断使电路进入工作状态。

3.当按着on/off超过几秒后电路进入低功耗状态。

4.利用WDT,当一段时间没有任何操作后电路进入低功耗状态。



程序如下:

#include  "msp430x11x1.h"



#define uint unsigned int

#define uchar unsigned char



unsigned short *sptr;           // Stack pointer

extern void getsptr (void);     // Get Stack Pointer



uchar    interrupt_flag;

uint times;



interrupt[PORT2_VECTOR] void P2_ISR(void);

interrupt[WDT_VECTOR] void watchdog_timer(void);



void delay(uchar k)

{

uchar i;



for(i=0;i
}



void beep(void)

{

P1OUT |= BIT3; // beep on

delay(120);

P1OUT &= ~BIT3; // beep off

}



void reset_port(void)

{

P1OUT &= ~BIT0;

P1OUT &= ~BIT1;

P1OUT &= ~BIT2;

P1OUT &= ~BIT3;



P2OUT &= ~BIT1;

P2OUT &= ~BIT2;

}    



void sleep(void)

{

    P2IES |= BIT0;        //P2.0 interrupt hi->low edge

      P2IFG &= ~BIT0;        //P2.0 IFG cleared

    P2IE |= BIT0;        //P2.0 interrupt enabled



    getsptr();                    // Get the current stack pointer - 2

    sptr-=1;

        

    IE1 &= ~WDTIE;     // disable WDT interrupt



    reset_port();

        

    LPM4;

    

}



void main(void)

{

uchar     i;



WDTCTL = WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1; // Set Watchdog Timer interval to 0.5ms



P1DIR |= BIT0;

P1DIR |= BIT1;

P1DIR |= BIT2;

P1DIR |= BIT3;



P2DIR &= ~BIT0;    //设为on/off按钮输入

P2DIR |= BIT1;

P2DIR |= BIT2;



reset_port();

    

P2IES |= BIT0;        //P2.0 interrupt hi->low edge

P2IFG &= ~BIT0;        //P2.0 IFG cleared

P2IE |= BIT0;        //P2.0 interrupt enabled



delay(250);



_EINT();                      // Enable Interrupts



sleep();  //进入低功耗



beep();   //提示



times=0;

IE1 |= WDTIE;     // Enable WDT interrupt



interrupt_flag=0;



if((P2IN&BIT0) != BIT0 )    //当on/off按钮按着超过5秒后进入低功耗

  {    

    times=0;

    while((P2IN&BIT0) != BIT0 )

        {

          if( times>6000 )        //5s

            {

            beep();

            sleep();

            break;

            }

        }

  }



while(1)

  {



  IE1 |= WDTIE;     // Enable WDT interrupt

    

  interrupt_flag=0;

    

.......

  if( times > 12000 )        

    {

    beep();

        sleep();

      }



 }

}

interrupt[PORT2_VECTOR] void P2_ISR(void)

{

//     Exit LPM4, disable P2.0 interrupt      

P2IE &= ~BIT0;        //P2.0 interrupt disabled

P2IFG &= ~BIT0;        //P2.0 IFG cleared



interrupt_flag=1;



*sptr &= ~(SCG1+SCG0+OSCOFF+CPUOFF);   // Clear LPM4 from the stacked status

register



beep();

}  



interrupt[WDT_VECTOR] void watchdog_timer(void)

{

times++;



}



程序getsptr.s43摘自安装目录下FET_examples的fet_9目录



    NAME getsptr

    PUBLIC getsptr

    EXTERN sptr ;Stack pointer variable declared in C file

    RSEG CODE

getsptr:

    mov SP,&sptr ;Copy the current stack pointer.

    ret

    END



来源:   作者:  2001/9/10 0:00:00
栏目: [ MSP430单片机]

相关阅读

基于MSP430和USB的数据采集系统

通用MSP430—I2C程序

msp430软件安装破解过程

基于MSP430与ATT7022B的四遥测量模块

基于MSP430F149电机保护算法的实现

在通用微控制器MSP430™中集成多种功能

德州仪器线性稳压器将MSP430待机功耗减半

浅谈MSP430单片机的8大输出方式

MSP430单片机对步进电机的驱动控制设计

AD9850驱动程序--MSP430版本

MSP430F13X系列的单片机ADC要外加电阻、电容? 

基于MSP430微控制器的电容触摸实现方案和LED PWM驱动

MSP430F147无线温度接收

MSP430对上MSP432,谁才是最强王者

MSP430电容触摸转轮

基于MSP430系列单片机的常用程序编写总结

MSP430单片机Flash存储器的特性及应用

MSP430 单芯片实现低成本、低功耗电感邻近度感测

浅谈TSS-5单板控制器的功能应用及MSP430的特性

计数器能否在低功耗模式下工作?