msp430g2553用户手册封装尺寸怎么画

扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
MSP430G2553产生的方波的计算公式是什么,我是新手,最好有个例子··程序写一下吧·谢谢··
飞天0302磻Z
扫二维码下载作业帮
1.75亿学生的选择
那要看你是什么模式了,如选择ACLK = 32.768kHz .TAR模式为upto CCR0 . 则其frequency = 32768/20 = 1.6384kHz
20为CCR0值可以打开CCR0中断,在中断服务函数中,设置某个引脚输出的翻转,也可以选择选择CCR0的输出模式,OUTMOD_x,来控制方波.
为您推荐:
其他类似问题
扫描下载二维码我学MSP430G2553的心得之一
学习MSP430G2553,已有7天有余。个人觉着:低功耗是其最大亮点。为此可谓是处心积虑。因而中断/低功耗模式在430的应用中便显得千娇百媚,楚楚动人!这里,先跟大伙看下这个中断的情况。
#include&msp430g2553.h&
#include&"in430.h"
int&main(void)
&&&&WDTCTL&=&WDTPW&+&WDTHOLD;&//禁止看门狗计数
&&&&P1DIR=BIT0+BIT1;//P1.0\1设置为输出,P1.4/5是输入
&&&&P1OUT=BIT0+BIT1+BIT4+BIT5;//P1.0\1为高,P.4/5上拉
&&&&P1REN=BIT4+BIT5;//P1.4上拉使能
&&&&P1IE=BIT4+BIT5;//P1.4开中断
&&&&P1IES=BIT4+BIT5;//中断沿选择
&&&&__enable_interrupt();//开总中断
&&&&while(1);//没事做
#pragma&vector=PORT1_VECTOR
__interrupt&void&PORT1()//P1口中断服务程序
&&&&unsigned&int&i=0;
&&&&unsigned&char&PushKey=0;
&&&&PushKey=P1IFG&(BIT4+BIT5);//读取是哪个键按下
&&&&for(i=0;i&65535;i++);//延时后再作判断,避免是抖动
&&&&if(!(P1IN&PushKey))//没有按下,则为抖动,标志清零
&&&&&&&&P1IFG=0;
&&&&if((P1IN&PushKey))//判断是否有键按下
&&&&&&&&for(i=0;i&65535;i++);
&&&&&&&&if((P1IN&PushKey))
&&&&&&&&&&&&if((PushKey&BIT4))
&&&&&&&&&&&&&&&&P1OUT^=BIT0;&
&&&&&&&&&&&&if((PushKey&BIT5))
&&&&&&&&&&&&&&&&P1OUT^=BIT1;
&&&&&&&&}&&&&
&&&&P1IFG&=~(BIT4+BIT5);
这个程序,最出彩的地方在于“while(1);”这个等待的语句。
中断没发生前,程序在停这儿等待,就相当于CPU一直停在儿没事做歇着,也许是在等待戈多。一旦中断条件发生,在这里是按键,它便好像逮着什么似的,便进入中断,去执行中断程序中的代码。
这里,我们可见。中断没来之前,CPU它无所事事,却没有关闭,仍在耗电。中断来了之后,它赶忙地处理中断程序。前前后后,他总在折腾。肯定累得够戗。
那CPU在哪段时间内本可好好休息,不必浪费精力呢???大伙都知道,肯定是等待戈多那个时间里。所以便会让它在等待戈多的时间里去休眠。中断来了确实需它出面处理时,它再醒来处理中断事件,更为妥当!!!
于是乎,便有了下面的程序。
#include&msp430g2553.h&
#define uchar unsigned char
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar i,num,
void TimeAInit(void)
TACTL=TASSEL0+MC0+TACLR;//SMCL时钟,up,清零
TACCTL0|=CCIE;
void SetTime(unsigned int time)
int main(void)
WDTCTL=WDTPW+WDTHOLD;
TimeAInit();
SetTime(100);
__enable_interrupt();
if(flag==0)
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
P1OUT^=table[num++];
&&&&&&&&&&&&&&&
P1OUT=table[num];
&&&&&&&&&&&
&&&&&&&&&&&
if(num==8)
&&&&&&&&&&&&&&&
if(flag==1)
&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
P1OUT^=table[num--];
&&&&&&&&&&&&&&&
P1OUT=table[num];
&&&&&&&&&&&
&&&&&&&&&&&
if(num==0)
&&&&&&&&&&&&&&&
#pragma vector=TIMER0_A0_VECTOR//只是唤醒
__interrupt void Timer(void)
LPM3_EXIT;
这里最大与上面最大的不同就是,用LPM3;替代了上面的While(1);这样一来,在中断没来之前,CPU不再作无谓的等待而耗电,而是处在休眠状态里。中断发生后,CPU便会自动唤醒,进入中断去处理中断程序。实现了低功耗的目的。
这里的低耗模式的实现是这样的,中断程序中是唤醒CPU,而后进入主程序,执行相应的功能模块。相应的功能模块,全在主程序中。
这便是所谓的中断中只用唤醒用。我们可以采用另一种方式,主程序中断只用休眠用。且看下面程序。
#include&msp430g2553.h&
#define uchar unsigned char
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar i,num,
int main(void)
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
TACTL=TASSEL1+MC1+TACLR;//定时器时钟源为SMCLK,up,不分频,清零
CCTL0|=CCIE;//使能比较器中断
CCR0=50000;//计数器终值
P1DIR=0//P1输出口
__enable_interrupt();//使能全局中断,C编译器中的内部函数
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer(void)
if(flag==0)
if(i==10)//定时0.5s
&&&&&&&&&&&
&&&&&&&&&&&
P1OUT^=table[num++];
&&&&&&&&&&&
P1OUT=table[num];
if(num==8)
&&&&&&&&&&&
if(flag==1)
if(i==10)//定时0.5s
&&&&&&&&&&&
&&&&&&&&&&&
P1OUT^=table[num--];
&&&&&&&&&&&
P1OUT=table[num];
if(num==0)
&&&&&&&&&&&
这里,主程序中只用休眠,一旦中断条件发生,则进入中断,而进入中断后,CPU便自动唤醒。因为要处理中断服务程序。不过,中断完了之后,会恢复到中断前的状态,在这里便又回到了休眠状态。
休眠的写法中,有一个点要注意。若主函数中只作休眠,则中断函数中不必写唤醒的语句;若中断中只作唤醒,则主函数中休眠+待执行语句,要用循环。
相信通过这里的讲解,大伙已明白低功耗和中断的关系了吧。明白了中断为什么在430中犹为重要了吧。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 msp430g2553封装 的文章

 

随机推荐