MSP430单片机:用MSP430F1121设计电子产品的心得,与大家探讨 [qiang] [99次] 01-9-10 上午 10:40:23
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<k;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
MSP430F1121.rar_msp430F1121_低功耗设计
版权申诉
174 浏览量
2022-09-14
19:00:45
上传
评论
收藏 1KB RAR 举报
四散
- 粉丝: 54
- 资源: 1万+
最新资源
- 单片机课程设计 -现代交通信号灯设计
- 分布式锁与信号量Web-master-demo
- 基于麻雀优化算法改进BP神经网络的回归分析(代码完整,数据齐全)
- 毕业设计-咖啡网站商城javaweb
- tensorflow-gpu-1.9.0-cp27-cp27m-win-amd64.whl
- tensorflow-gpu-1.10.0-cp27-cp27m-win-amd64.whl
- YOLOV5TORCH04
- 拿下期末javaweb课设
- tensorflow-gpu-1.10.0-cp27-cp27m-win-amd64.whl
- .4.【技能3】根据特殊的几何条件求坐标 (1)【课程出自拼多多店铺:北大网课资料店】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈