运行程序后 new和old都有值可是相减后T值总是0为什么

2019-07-23 13:28发布

#include "MSp430G2553.h"
#include"LCD.h"
unsigned int old=0,new=0,T,zhuangsu;
unsigned char overflow;

void main( void )
{


          WDTCTL = WDTPW + WDTHOLD;
         P1DIR|=BIT6;
          P1SEL|=BIT2;//P1.2->捕获输入
          P1OUT&=~BIT6;//关闭LED
          BCSCTL1 = CALBC1_1MHZ;         
          DCOCTL  = CALBC1_1MHZ;
          Port_init();
                                      //delay_ms(100);
                                      LCD_init();
                                      LCD_clear();
          CCTL1=CM_1+SCS+CCIS_0+CAP+CCIE;//上升沿+同步+CCI0A(p1.2)+捕获功能+捕获中断
          TACTL=TASSEL_2+MC_2+TAIE+TACLR;
          _EINT();
          while(1){_BIS_SR(GIE);
          xianshi();
          }
}
void xianshi(void)
{

             T=2*T/1000000;
             zhuangsu=60/T;
        LCD_write_str(0,0,"zhuangsu:");
                                                                LCD_write_char(0,1,num_char_table[zhuangsu/10000]);
                                                                LCD_write_char(1,1,num_char_table[zhuangsu%10000/1000]);
                                        //LCD_write_char(3,1,'.');
                                                                LCD_write_char(2,1,num_char_table[zhuangsu%1000/100]);
                                                        LCD_write_char(3,1,num_char_table[zhuangsu%100/10]);
                                                LCD_write_char(4,1,num_char_table[zhuangsu%10]);
                                                                 //LCD_write_char(4,1,num_char_table[0]);
                                                                  LCD_write_str(5,1,"zhuang/min");
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A (void)
{
  switch(TAIV)
  {
    case 2:
      if(CCTL1&CM_1)
      {
      
        new=TAR;
        T=new-old;
        overflow=0;
      }
      old=new;
      P1OUT^=BIT6;
      break;
    case 10:
      overflow++;
      break;
    default:
      break;
   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
dengdc
1楼-- · 2019-07-23 15:02
又是一大段程序啊
wuhany
2楼-- · 2019-07-23 18:34
new和old都有值可是相减后T值总是0,说明两次捕获的值相等啊
shimx
3楼-- · 2019-07-23 22:55
我把程序改成T=new new有值可是T还是0 why啊
lizye
4楼-- · 2019-07-24 04:43
 精彩回答 2  元偷偷看……
wyjie
5楼-- · 2019-07-24 07:33
如果是在其他的 c6000系列的 DSP下, 如果要使用自带的加减乘法等内联函数, 是怎么使用的呢
liliang9554
6楼-- · 2019-07-24 12:35
上升沿捕获。

一周热门 更多>