msp430模块程序(2)

2019-08-03 12:19

式//TA 定时器溢出中断允许

CCTL0=CM0+CM1+SCS+CAP+CCIE; //上下升沿,异步,捕获,捕获中断允许cci0 CCTL1=CM0+SCS+CAP+CCIE; //上升沿,异步,捕获,捕获中断允许cci1 P1DIR=0x00; P1SEL=0xff; P3DIR=0xFF; P3OUT=0x00; _EINT(); for(;;) {

for(i=0;i<10000;i++) _NOP();

P3OUT^=0x02; //产生捕获信号源 } }

#pragma vector=TIMERA1_VECTOR // 定时器中断捕获__interrupt void TIMER_A(void) {

switch(TAIV) {

case 2:P3OUT^=0x04;

j=CCR1-j;//两次上升沿间隔 break;

case 4: break;

case 10: P3OUT^=0x02; break; } }

#pragma vector=TIMERA0_VECTOR __interrupt void TIMER_cc(void) {

P3OUT^=0x08;

k=CCR0-k;//上下升沿间隔 }

例2:

//CCI0、CCI1 设置为比较器模式, //CCR0 捕获产生中断

//CCI0 中断使得P3.3 闪,CCI1 中断使得P3.2 闪 #include void main(void) {

WDTCTL=WDTPW+WDTHOLD;

TACTL =TASSEL1+ID0+ID1+MC1+TACLR;//+TAIE;//MCLK,8 器溢出中断允许

CCTL0=CCIE; //cap=0 比较器模式 CCTL1=CCIE; //cap=0 比较器模式 CCR0=10000; CCR1=30000; P3DIR=0xFF; P3OUT=0x00; _EINT();

分频,CLEAR TAR,连续模式//TA 定时 for(;;) {

// for(i=0;i<10000;i++) _NOP();

// P3OUT^=0x02; //产生捕获信号源 } }

#pragma vector=TIMERA1_VECTOR //定时器比较器中断CCR1=TAR __interrupt void TIMER_A(void) {

switch(TAIV) {

case 2:P3OUT^=0x04;

CCR1+=60000;// 改变比较条件 break;

case 4: break;

case 10: P3OUT^=0x02; break; } }

#pragma vector=TIMERA0_VECTOR __interrupt void TIMER_cc(void) {

P3OUT^=0x08;

CCR0 +=20000;//上下升沿间隔 }

//利用Timer_A 输出周期为512 /32768 = 15.625ms、占空比分别为75%和25%的 PWM 矩形波: #include void main(void) {

WDTCTL = WDTPW +WDTHOLD;

TACTL = TASSEL0 + TACLR; // ACLK, 清除TAR CCTL0=0x00;//默认值,比较器模式 CCTL1=0x00;//默认值,比较器模式 CCR0 = 512-1; // PWM 周期 CCTL1 = OUTMOD_7;

CCR1 = 384; //占空比384/512=0.75

CCTL2 = OUTMOD_7;

CCR2 = 128; //占空比128/512=0.25 P1DIR |= 0x04; // P1.2 输出 P1SEL |= 0x04; // P1.2 TA1 out P2DIR |= 0x01; // P2.0 输出 P2SEL |= 0x01; // P2.0 TA2 out

TACTL |= MC0; // Timer_A 增计数模式 for (;;) {

_BIS_SR(LPM3_bits); // 进入LPM3 _NOP(); } }

7.3.5 应用举例

例1 利用定时器A 输出周期为2ms 的方波,并由端口P3 送出算法:采用定时器A 连 续计数模式。使用在P3 端口每隔1ms 将输出求反。背景条件:DCO 产生的频率为 800KHz。使用800KHz 的SMCLK 作为定时器的时钟源,则定时1ms 的计数值为: 1×0.001/(1/(800×1000)) =800。 例2 Timer_A 实现PWM 举例

例:设ACLK = TACLK = LFXT1 = 32768, MCLK = SMCLK = DCOCLK

= 32×ACLK =1.048576Mhz,利用Timer_A 输出周期为512 /32768 = 15.625ms、占空 比分别为75%和25%的PWM 矩形波: #include void main(void) {

WDTCTL = WDTPW +WDTHOLD; FLL_CTL0 |= XCAP14PF;

TACTL = TASSEL0 + TACLR; // ACLK, 清除TAR CCR0 = 512-1; // PWM 周期 CCTL1 = OUTMOD_7;

CCR1 = 384; //占空比384/512=0.75 CCTL2 = OUTMOD_7;

CCR2 = 128; //占空比128/512=0.25 P1DIR |= 0x04; // P1.2 输出 P1SEL |= 0x04; // P1.2 TA1 P2DIR |= 0x01; // P2.0 输出 P2SEL |= 0x01; // P2.0 TA2

TACTL |= MC0; // Timer_A 增计数模式 for (;;) {

_BIS_SR(LPM3_bits); // 进入LPM3 _NOP(); } }


msp430模块程序(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基因工程原理 - 王莹 - 基因工程题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: