老古开发网首页
导航:老古开发网首页文章索引文章分类PIC MSP430 →[用MSP430F1121设计电子产品的心得,与大家探讨]
| -文章搜索 - 最新文章 - |

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

发布时间:2001年9月10日 点击次数:6057
来源:   作者:
 
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




欢迎进入老古论坛进行讨论
[PIC MSP430 ] 相关文章:
3V与5V混合系统中逻辑器接口问题
简介:
3V与5V混合系统中逻辑器接口问题1 引言近年来,随着便携式数字电子产品棗笔记本计算 机、数字式移动电话、寻呼机、手持式测试仪表等的迅速发展,要求使用体积小、功耗低、 电池耗电小的器件,数字系统的工作电压已经从5V降至3V甚至更低(例如2.5V和1.8V标准的 引进)。但是目前仍有许多5V电源的逻辑器件和数字器件可用,因此在许多设计中3V(含 3.3V)逻辑系统和5V逻辑系统共存,而且不同的电源电压在同一电路板中混用。随着更低电 压标准的引进,不同电源电压逻辑器件间的接口问题会在很长一段时间内存在。本文讨论的 是使用TTL和CMOS的3V和5V系统中逻辑器件间接口的基本......

MSP430都是贴片的,如何焊接 ?
MSP430 十六位单片机中有5伏电压的型号吗?
关于MSP430FLASH(13X/14X)芯片的在线仿真,调试,下载程序的接线
MSP430F13X系列的单片机ADC要外加电阻、电容? 
430电源电压一般为3v左右,外部设备电压要求为5V驱动,如何解决,请指教。 
如何用软件实现奇偶位的快速计算?
请问PIC系列的单片机能否用C编程 
PIC系列的单片机有中断系统吗?
PIC的价格如何?
 
下一个:[综合电子]逻辑分析仪不再是硬件设计工程师的无奈选择
简介:
长期以来,逻辑分析仪一直是数字硬件的调试工具。但它从未象其它工具,比如示波器那样得到广泛的使用。 Agilent公司期望找到问题的原因,并看看在鼓励客户把逻辑分析仪看作“首先选择的工具”上能够做些什么。 易用性   什么原因造成客户难以使用逻辑分析仪?存在着几个因素。调查结果发现“易于使用”至少可分解成两个层面:⑴第一次学习使用该仪器的容易程度,称为可学习性;⑵在您学完后,该仪器操作的容易程度,也就是可使用性。在与客户的交谈中发现市场上没有一种逻辑分析仪是非常易学或易用的。逻辑分析仪的操作,没有一样是非常熟悉的,虽然它也是仪器,但完全不象示波器,虽然它......
 

上一个:[单片机]请问在keil c51中如何调试,激活 显示rtx tiny状态

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:31毫秒