收藏 分销(赏)

msp430的四种计时器程序.doc

上传人:pc****0 文档编号:9010255 上传时间:2025-03-11 格式:DOC 页数:4 大小:34.50KB
下载 相关 举报
msp430的四种计时器程序.doc_第1页
第1页 / 共4页
msp430的四种计时器程序.doc_第2页
第2页 / 共4页
点击查看更多>>
资源描述
基于msp430g2553定时器详解1 已有 2682 次阅读2012-8-10 21:11 | /*#include "msp430g2553.h" unsigned char num; void main() {   // Stop watchdog timer to prevent time out reset         WDTCTL = WDTPW + WDTHOLD;         BCSCTL3 |= LFXT1S_2; // Set LFXT1为vol时钟即12kHZ                  CCTL0|= CCIE;  //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断          CCR0 =12000;  //设置捕获/比较寄存器,初始值为12000,对于ACLK时钟频率为12khz的频率,相当于1s          TA0CTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器,          // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK,与dco有关;          // TACLR=0x0004,清除定时器A计数器          //TACTL |= MC0; //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数          P1SEL&=~BIT6; //P1.6为I/O口         P1DIR |=BIT6; //P1.6为输出          _EINT();  //使能中断,这是一个C编译器支持的内部过程。          while(1); //无限次while循环  }  #pragma vector=TIMER0_A0_VECTOR//固定的格式 __interrupt void Timer_A (void) //定时器A的CC0中断处理程序 必须是没有返回值的 {     P1OUT ^= BIT6; //将P3.7引脚取反,就是使发光二极管闪烁  }*/ //使用主系统做为时钟源时,可用用num配合使用,达到一秒定时, //也可以通过BCSCTL2 |= SELM_1 + DIVM_3; 选择MCLK并且8分频 #include "msp430g2553.h" unsigned char num; void main() {   // Stop watchdog timer to prevent time out reset         WDTCTL = WDTPW + WDTHOLD;         //主系统时钟切换为外部高速晶振     if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)  {      while(1);   // If calibration constants erased, trap CPU!!  }  // Configure Basic Clock  BCSCTL1 = CALBC1_1MHZ;     // Set range  DCOCTL = CALDCO_1MHZ;    // Set DCO step + modulation*/                  CCTL0|= CCIE;  //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断          CCR0 =10000;  //设置捕获/比较寄存器,初始值为10000,对于MCLK时钟频率为1Mhz的频率,相当于1s          TA0CTL = TASSEL_2 +TACLR+MC_1; // 设置定时器A控制寄存器,          // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK,与dco有关;          // TACLR=0x0004,清除定时器A计数器          //TACTL |= MC0(MC_1); //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数          P1SEL&=~BIT6; //P1.6为I/O口         P1DIR |=BIT6; //P1.6为输出          _EINT();  //使能中断,这是一个C编译器支持的内部过程。          while(1); //无限次while循环  } #pragma vector=TIMER0_A0_VECTOR//固定的格式 __interrupt void Timer_A (void) //定时器A的CC0中断处理程序 必须是没有返回值的 {    num++;   if(num==100)   {    P1OUT ^= BIT6; //将P3.7引脚取反,就是使发光二极管闪烁     num=0;    } } 基于msp430g2553定时器详解2 已有 374 次阅读2012-8-10 21:12 | ////*****重庆三峡学院电子与信息工程学院 创新实验室 唐老鸭*****//// #include "msp430g2553.h" unsigned char num=0; void main (void)  {    // Stop watchdog timer to prevent time out reset         WDTCTL = WDTPW + WDTHOLD;         BCSCTL3 |= LFXT1S_2; // Set LFXT1为vol时钟即12kHZ        CCR0 =6000;         // CCTL0|= CCIE;  //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断          CCR1 =3000;  //设置捕获/比较寄存器,初始值为12000,对于ACLK时钟频率为12khz的频率,相当于1s         // CCTL2=CCIE;         CCR2 = 1500;          TA0CTL = TASSEL_1 +TACLR+MC_1+TAIE; // 设置定时器A控制寄存器,          // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK,与dco有关;          // TACLR=0x0004,清除定时器A计数器          //TACTL |= MC0(MC_1); //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数          P1DIR |=BIT6+BIT0+BIT3;             _EINT();  //使能中断,这是一个C编译器支持的内部过程。          while(1); //无限次while循环  }    #pragma vector=TIMER0_A1_VECTOR//固定的格式,必须为TIMERA1_VECTOR, __interrupt void Timer_A (void) //定时器A的CC0中断处理程序 必须是没有返回值的 {     switch( TAIV )  {    case  2: P1OUT ^= BIT0;     //优先级最高                                  //CCR1 += 3000; // 必须的,否则将重0计数到最大                                      break;                              case  4: P1OUT ^= BIT6;                                       //CCR2 +=6000;//  必须的,否则将重0计数到最大             break;                             case 10: num++;              P1OUT ^= BIT3;               if(num==5)                     CCTL1=CCIE;               if(num==10)                    CCTL2=CCIE;               if(num==15)               {                 CCTL1=0;                 CCTL2=0;                 num=0;               }             break; }  } //要是使用的持续计数模式,则应该每次进入中断后CCRx +=6000,确保每次重指定的数值开始计数 基于msp430g2553定时器详解3 已有 341 次阅读2012-8-10 21:13 | #include "msp430g2553.h" unsigned char num; void main() {   // Stop watchdog timer to prevent time out reset         WDTCTL = WDTPW + WDTHOLD;         BCSCTL3 |= LFXT1S_2; // Set LFXT1为vol时钟即12kHZ                  CCTL0|= CCIE;  //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断          CCR0 =12000;  //设置捕获/比较寄存器,初始值为12000,对于ACLK时钟频率为12khz的频率,相当于1s          TA0CTL = TASSEL_1 +TACLR+MC_1; // 设置定时器A控制寄存器,          // TASSEL_1选择辅助时钟ACLK,TASSEL_2选择子系统时钟SMCLK,与dco有关;          // TACLR=0x0004,清除定时器A计数器          //TACTL |= MC0; //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数          P1SEL&=~BIT6; //P1.6为I/O口         P1DIR |=BIT6; //P1.6为输出          _EINT();  //使能中断,这是一个C编译器支持的内部过程。          if(TA0CTL|0xfe==0xff)                             P1OUT ^= BIT6; //将P1.6引脚取反,就是使发光二极管闪烁          while(1);  }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服