553用定时器输出pwm并捕捉脉冲

2019-07-15 21:35发布

求助啊,这个定时器怎么用?用两个还是?TA0 TA1?还是说用一个定时器的两个通道就可以?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
GO_SPURS_GO
1楼-- · 2019-07-16 01:36
void main(){
        WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
        TA0CTL|=TASSEL_1+ID_3+TACLR+MC_1+TAIE;//设置时钟为SMCLK,计数器清零,增计数
        TA1CTL|=TASSEL_1+ID_3+TACLR+MC_1+TAIE;
        TA0CCTL0|=OUTMOD_7;//PWM输出模式为模式8
        TA1CCTL0|=CAP+CCIS_0+SCS+CCIE+CM_1+SCCI;//捕捉模块定义
        ADC10CTL0|=ADC10SHT_2+ADC10ON+MSC;//ADC10采样和保持时间设置为16个周期,开启AD模块,
        ADC10CTL1|=ADC10SSEL_3+ADC10DIV_0+SHS_0;//AD时钟源选择SMCLK,不分频
        ADC10CTL1|=INCH_3+CONSEQ_2;//选择通达A3,单通道重复采样
        ADC10CTL0|=SREF_1+REFON+REF2_5V;//选择内部参考源2.5V,打开基准源
        P1DIR|=BIT0+BIT1+BIT5;//设置p1.0 p1.1 p1.5为输出
        P2DIR&=~BIT0;//p2.0测速
        P1DIR&=~BIT3;//AD采样P1.3
        P1SEL|=BIT1+BIT3+BIT5;//使能第二功能
        P2SEL|=BIT0;
        ADC10AE0|=BIT3;//选择p1.3为采样通道
    TA0CCR0=13107;//设置周期约为0.1s
    LCD_init_first();
        LCD_init();
while(1){
            for(i=0;i<20;i++)
            {
            ADC10CTL0 |=ENC+ADC10SC; //开始转换
            while((ADC10CTL0 &ADC10IFG)==0); //等待ADC10IFG标志变高(转换完成)
            ADC10_Result+=ADC10MEM; //读取采样结果
        ADC10_Result= ADC10_Result/20;}//求20次采样平均值
            k=(long int)((ADC10_Result/1023)*13107);
            TA0CCR1=k;//设置占空比
        P1OUT&=~BIT1;
                P1OUT|=BIT0+BIT5;
        delay_nms(100);
                LCD_write_string(0,1,LCDBuf1);
                LCD_write_char(0,0,f);}

    }
#pragma  vector=TIMER1_A0_VECTOR
__interrupt void TA(void){
    switch(TAIV){
    case 2:
        if(TA1CCTL0&CCIFG)
       {n++;
        if(n==1){
                num=TA1CCR0;
                TA1CCR0&=~CCIFG+COV;}
    if(n==2){
                num1=TA1CCR0;
                num2=(num1-num)*3;
                f=(long int)13107/num2;
                n=0;
                TA1CCR0=0;
                TACCTL1&=~CCIFG+COV;}
        break;
    case 4:break;
    case 10:break;

        }
        }
}
GO_SPURS_GO
2楼-- · 2019-07-16 03:09
求助这个程序哪儿不对嘛。。。。

一周热门 更多>