利用定时器捕获/比较模块的比较模式产生方波:捕获比较模块1产生20HZ的方波,并由p3.2输出。
void main ()
{
WDTCTL=WDTPW+WDTHOLD;
TACTL=TASSEL_2+ID_3+MC_2+TACLR;//MCLK八分频后100khz,连续计数模式,计数器清零
CCTL1=CCIE; CCR1=10000;
P3DIR=0XFF; P3OUT=0X00;
_EINT();
for(;;);
}
#pragma vector=TIMERA1_VECTOR
__interrupt void TIMER_A();
{
switch(TAIV)
{
case 2:P3OUT^=0x04;
CCR1+=10000;
break;
case 4:break;
case 10:P3OUT^=0x02;
break;
}
}
以上的程序中有一个疑问是:TAR 16位计数器当计满FFFFH时,会置零重新计数,那当CCR1<FFFFh,CCR1+10000>FFFFh时,CCR1=CCR1+10000-FFFF?还是CCR1继续叠加?如果继续叠加,怎样进行比较?求大神解答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
顶顶顶
那么当计数器TAR计数到CCR1(CCR1<FFFFh,CCR1+10000>FFFFh)时,会进入中断,CCR1+=10000,CCR1>FFFFH时,计数器会置零?还是CCR1置零?谢谢您的回答
您好,我已经很清楚的告诉你了。在这句“也就是说CCR1的值会跟0FFFF对比较,如果大于就复位。小于的时候继续您在定时器中断函数中的 CCR1+=10000该符合语句的执行,当然前提是TAIV==2的情况下啦。” 请仔细阅读我的回答好吗? 您一定要我很清楚的告诉你,是计数器置零还是复位吗?
一周热门 更多>