打印
[MCU]

进不去中断

[复制链接]
814|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlyuan|  楼主 | 2019-5-9 23:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhaoxqi| | 2019-5-9 23:05 | 只看该作者
有没有捕获到脉冲?

使用特权

评论回复
板凳
jlyuan|  楼主 | 2019-5-9 23:08 | 只看该作者

其实是个低级的错误,不过我忘了,这是我的最终程序,很准的,你们可以参考一下
测试脉冲的周期时间——made by lqs


#include "msp430f4152.h"
#define LCD_ZREO                 0XFA//0xf5
#define LCD_ONE                  0x60
#define LCD_TWO                  0xD6
#define LCD_THREE                0xf4
#define LCD_FOUR                 0x6c
#define LCD_FIVE                 0xbc
#define LCD_SIX                  0xbe
#define LCD_SEVEN                0xe0
#define LCD_EIGHT                0xfe
#define LCD_NINE                 0xfc
unsigned char aa[10]={LCD_ZREO ,LCD_ONE ,LCD_TWO ,LCD_THREE , LCD_FOUR ,LCD_FIVE ,LCD_SIX ,LCD_SEVEN,  LCD_EIGHT ,LCD_NINE };
unsigned int j=0,sub=0,data=0;
unsigned char i=0;
float f=0;
void clkinit()
{
  FLL_CTL0 &= ~XT1OF;
  FLL_CTL0 &= ~XTS_FLL;
  FLL_CTL1 &= ~(FLL_DIV0);
  FLL_CTL1 &= ~(FLL_DIV1);
}
void Portinit()
{
  P1DIR &= 0X00;
  P1SEL |= 0X01;
}
void Timer_Ainit()
{
  TA0CTL |= TASSEL0 + MC_2;
  TA0R = 0X00;
  TACCTL0 |= SCS + CM1 + CAP + CCIE; // CCIS0 +
}
void LCDinit()
{
  unsigned char t;
  LCDACTL |= LCD4MUX + LCDON + LCDFREQ_128;
  
  LCDAPCTL0 = 0X1F;
  LCDAPCTL1 = 0X00;
  LCDAVCTL0 |= LCDCPEN;
  LCDAVCTL1 |= 0X18;
  P5SEL = 0XF0;
  for(t=0;t<10;t++)
    LCDMEM[t] = 0;
}
void chazhi()    //pulse recurrent time) 脉冲周期时间
{
    j++;
    if(j==1)
    {
      TACCR0 = 0X00;
    }

    if(j==2)
    {
     j=0;
     sub = TACCR0;   
  }
}
void LCDdiaplay()
{
  sub= f/32768*1000;//0.0001
  LCDMEM[9] = 0x02;
  LCDMEM[8] = 0;
  data = sub%10;
  LCDMEM[7] = aa[data];  //1.000
  data = sub/10%10;      
  LCDMEM[6] = aa[data] + 0x01;
  data = sub/100%10;
  LCDMEM[5] = aa[data];
  data = sub/1000%10;
  LCDMEM[4] = aa[data];
//  data = sub/10000%10;
  LCDMEM[3] = 0;
//  data = sub/100000%10;
  LCDMEM[2] = 0;
  LCDMEM[1] = 0;
  LCDMEM[0] = 0;
}
/*void testLCD()
{

  LCDMEM[0]=0xff;
  LCDMEM[1]=0xff;
  LCDMEM[2]=0xff;
  LCDMEM[3]=0xff;
  LCDMEM[4]=0xff;
  LCDMEM[5]=0xff;
  LCDMEM[6]=0xff;
  LCDMEM[7]=0xff;
  LCDMEM[8]=0xff;
  LCDMEM[9]=0xff;
}*/
void main( void )
{
  WDTCTL = WDTPW + WDTHOLD;       // Stop watchdog timer to prevent time out reset
  clkinit();
  Portinit();
  Timer_Ainit();
  LCDinit();
  _EINT();
  while(1)
  {
      LCDdiaplay();
  }
}

#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0()
{
  //做脉冲的时间差值
   j++;
    if(j == 1)
    {
      TAR = 0X00;  //定时器数TAR0送到TACCR0;
    }
    if(j == 2)
    {
     j = 0;
     f = TACCR0;
    }
  TACCTL0 &= ~CCIFG;
}

使用特权

评论回复
地板
zhenykun| | 2019-5-9 23:10 | 只看该作者
第一个程序确实错误太多了,不过恭喜楼主还是调试出来了

使用特权

评论回复
5
spark周| | 2019-5-9 23:13 | 只看该作者
理想的和实物仿真的的就是不一样

使用特权

评论回复
6
jlyuan|  楼主 | 2019-5-9 23:16 | 只看该作者

哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
7
232321122| | 2019-5-11 20:13 | 只看该作者
TAIE为减计数中断允许  

使用特权

评论回复
8
ghuca| | 2019-5-11 20:13 | 只看该作者
去Ti官网找对应型号或系列的例程

使用特权

评论回复
9
soodesyt| | 2019-5-11 20:13 | 只看该作者
在连续计数模式下,CCIFG什么时候置位  

使用特权

评论回复
10
mnynt121| | 2019-5-11 20:14 | 只看该作者
TASSEL1 这个不对 换成TASSEL2  

使用特权

评论回复
11
plsbackup| | 2019-5-11 20:14 | 只看该作者
中断向量是对的么?  

使用特权

评论回复
12
kmzuaz| | 2019-5-11 20:14 | 只看该作者

中断向量为TIMERA0_VECTOR  

使用特权

评论回复
13
qiufengsd| | 2019-5-11 20:14 | 只看该作者
用的定时器中断,需要开TAIE  

使用特权

评论回复
14
pmp| | 2019-5-11 20:15 | 只看该作者
TBCTL = TBSSEL_2 + MC_2+TBIE;

使用特权

评论回复
15
aspoke| | 2019-5-11 20:15 | 只看该作者
用仿真器单步调试   

使用特权

评论回复
16
kmzuaz| | 2019-5-11 20:15 | 只看该作者
TA0CTL = TASSEL1 + TASSEL0 + TACLR + TAIE; // Ext. INCLK, interrupt

使用特权

评论回复
17
232321122| | 2019-5-11 20:15 | 只看该作者
应该将CCIE置1

使用特权

评论回复
18
plsbackup| | 2019-5-11 20:15 | 只看该作者
这个TIMERA1_VECTOR   

使用特权

评论回复
19
ghuca| | 2019-5-11 20:15 | 只看该作者
因为中断向量的问题?  

使用特权

评论回复
20
mnynt121| | 2019-5-11 20:15 | 只看该作者
TACTL = TASSEL_2 + MC_1;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝