中断

2019-03-24 13:59发布

代码如下:#include "msp430f149.h"
int main( void ){  // Stop watchdog timer to prevent time out reset  WDTCTL = WDTPW + WDTHOLD;  P3DIR |=0x06;  CCTL0=CCIE;                 //CCR0中断允许  CCR0=20000;  TACTL=TASSEL_2+TACLR+MC_2+TAIE;       //时钟源SMCLK,计数器清零,连续计数,溢出中断允许    _BIS_SR(LPM0_bits+GIE);}//Timer_A0中断服务程序#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A(void){  P3OUT^=0x02;  CCR0+=20000;}//Timer_A3中断服务程序#pragma vector=TIMERA1_VECTOR__interrupt void Timer_1(void)        //读取TAIV,复位中断标志{  switch(TAIV)  {  case 2: break;  case 4: break;  case 10: P3OUT ^=0x04;                    break;  }}这段程序写完,我有了个疑问,希望大家帮忙解决。就是TAR达到0FFFFh时,main函数是重头再执行还是什么,我这里想的是若是不重新执行的话CCR0的值就是不会回到20000,也就应该没了方波的效果吧。
[ 本帖最后由 麻滴滴 于 2012-7-9 11:37 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
麻滴滴
1楼-- · 2019-03-24 19:34
是不是这个程序输出来根本就不是方波,只能是在同一个计数周期内是方波,求解答!
驭风者杨
2楼-- · 2019-03-24 20:14
< :TI_MSP430_内容页_SA7 --> 同问啊
elulis
3楼-- · 2019-03-24 20:34
 精彩回答 2  元偷偷看……
elulis
4楼-- · 2019-03-24 21:57
上一个Timer模块电路原理图的部分,我们使用的是比较模式(Cap=0),只有当TAR == CCR0是才会置TACCTL0的CCIFG标志位。
tmp.png
麻滴滴
5楼-- · 2019-03-25 01:59
哦哦,懂了,,,整个这个里面是循环一样的,到达65535后又从0开始
原先CCR0=55536,执行CCR0+=20000后CCR0=10000。这例子很好!
谢谢了!
海盗郭兆广
6楼-- · 2019-03-25 02:08
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章