收藏 分享(赏)

msp430的四种计时器程序.doc

上传人:hwpkd79526 文档编号:8202479 上传时间:2019-06-13 格式:DOC 页数:4 大小:34.50KB
下载 相关 举报
msp430的四种计时器程序.doc_第1页
第1页 / 共4页
msp430的四种计时器程序.doc_第2页
第2页 / 共4页
msp430的四种计时器程序.doc_第3页
第3页 / 共4页
msp430的四种计时器程序.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、基于 msp430g2553 定时器详解 1已有 2682 次阅读 2012-8-10 21:11 |/*#include “msp430g2553.h“unsigned char num;void main()/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD; BCSCTL3 |= LFXT1S_2; / Set LFXT1 为 vol 时钟即 12kHZCCTL0|= CCIE; /设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断 CCR0 =12000; /设置捕获/ 比较寄存

2、器,初始值为 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 /P1.6 为 I/O 口P1DIR |=BIT6; /P1.6 为输出 _EINT(); /使能中断,这是一个 C 编译器支持的内部过程

3、。 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()/

4、 Stop watchdog timer to prevent time out resetWDTCTL = 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|=

5、 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,使计数模式为增计数 P1SE

6、L /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 2

7、1:12 |/*重庆三峡学院电子与信息工程学院 创新实验室 唐老鸭*/#include “msp430g2553.h“unsigned char num=0;void main (void) / Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD; BCSCTL3 |= LFXT1S_2; / Set LFXT1 为 vol 时钟即 12kHZCCR0 =6000;/ CCTL0|= CCIE; /设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断 CCR1 =3000; /设置捕获 /比较

8、寄存器,初始值为 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(); /使能

9、中断,这是一个 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 计数到最

10、大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 preven

11、t time out resetWDTCTL = WDTPW + WDTHOLD; BCSCTL3 |= LFXT1S_2; / Set LFXT1 为 vol 时钟即 12kHZCCTL0|= 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 /P1.6 为 I/O 口P1DIR |=BIT6; /P1.6 为输出 _EINT(); /使能中断,这是一个 C 编译器支持的内部过程。 if(TA0CTL|0xfe=0xff) P1OUT = BIT6; /将 P1.6 引脚取反,就是使发光二极管闪烁 while(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报