msp430的四种计时器程序.doc_第1页
msp430的四种计时器程序.doc_第2页
msp430的四种计时器程序.doc_第3页
msp430的四种计时器程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于msp430g2553定时器详解1已有 2682 次阅读2012-8-10 21:11|/*#include msp430g2553.hunsigned 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.hunsigned 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 ClockBCSCTL1 = CALBC1_1MHZ; / Set rangeDCOCTL = 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.hunsigned 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.hunsigned 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控制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论