MSP430定时器问题

kangyonghui 2010-07-01 01:30:11
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT

P3DIR |= 0x02; // P3.1
P3OUT = 0; //P3.1=0
CCTL0 = CCIE;
CCR0 = 4096-1; //1S //CCR0=2047
TACTL = TASSEL_1 + MC_1+ ID_3; // TACTL = TASSEL_1 + MC_3+ ID_3 ,这两行有啥区别呢,我感觉都一样啊,都是1秒啊。
_BIS_SR(LPM0_bits + GIE);
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
p3out^=BIT0;

}
问题在注释旁边写了的,谢谢了
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
newstime 2010-08-18
  • 打赏
  • 举报
回复
学习大家的了
gzyhw9558 2010-07-23
  • 打赏
  • 举报
回复
MC 是用来选择定时器的工件模式的
00:暂停模式
01:增计数模式
10:连续计数模式
11:增/减计数模式

呵呵 希望对你有用!
C__Allen 2010-07-03
  • 打赏
  • 举报
回复
LPM0是CPU、MCLK停止,SMCLK、ACLK活动的模式 是为了使功耗变低
lbing7 2010-07-02
  • 打赏
  • 举报
回复
_BIS_SR(LPM0_bits + GIE); 与_EINT();得区别

这个是IAR环境给430提供的宏,后者上面哥们说了,是开总中断

_BIS_SR();这个宏是给SR的某些位置位

LPM0_bits:是某种工作模式,我忘了,具体你看一下IAR的帮助

GIE:总中断位,和_EINT();一个效果

_BIS_SR(LPM0_bits + GIE); 就是让单片机进入LPM0的工作模式(好像是停止运行)且开总中断
C__Allen 2010-07-01
  • 打赏
  • 举报
回复
#define MC_1 (1*0x10u) /* Timer A mode control: 1 - Up to CCR0 */
#define MC_2 (2*0x10u) /* Timer A mode control: 2 - Continous up */
#define MC_3 (3*0x10u) /* Timer A mode control: 3 - Up/Down */

_BIS_SR 是对状态寄存器的某一位置位


_EINT()开中断

楼主不看技术手册的?
kangyonghui 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 kangyonghui 的回复:]
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT

P3DIR |= 0x02; // P3.1
P3OUT = 0; //P3.1=0
CCTL0 = CCIE;
CCR0 = 4096-1; //1S //CCR0=2047
TAC……
[/Quote]
顺便想问问:_BIS_SR(LPM0_bits + GIE); 与_EINT();得区别
lbing7 2010-07-01
  • 打赏
  • 举报
回复
忘了,补一句:你感觉的不算。。。

有测试过吗?
lbing7 2010-07-01
  • 打赏
  • 举报
回复
定时器的工作模式不同

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧