1828|2

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp 430中断进去不啊 [复制链接]

#include  
#include "LCD12864.h"

uchar flag[2]={0};
int t=0,t1=0,t2=0;
ulong i;
uint distance=0;
uchar over_flag=0;//溢出标志
uint jl[4]={0};

/***************************关闭所有IO口*************************/
void Close_IO()
{
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    P3DIR = 0XFF;P3OUT = 0XFF;
    P4DIR = 0XFF;P4OUT = 0XFF;
    P5DIR = 0XFF;P5OUT = 0XFF;
    P6DIR = 0XFF;P6OUT = 0XFF;
}

/***************************时钟初始化*************************/
void Clk_Init()
{
  
    BCSCTL1&=~XT2OFF;//打开XT振荡器
    BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M  
    do
    {
      IFG1 &= ~OFIFG;//清除振荡错误标志
      for(i = 0; i < 0xff; i++)  _NOP();//延时等待
    }
    while ((IFG1 & OFIFG) != 0);//如果标志为1继续循环等待
    IFG1&=~OFIFG;
}

/****************************************************/
void Tmolde()
{
P5OUT|=BIT2;//trig9c           
delay_us(15);
P5OUT&=~BIT2;
delay_ms(100);
}
void xianshi(uint l)
{       jl[3] = l/1000;
        l = l%1000;
        jl[2] = l/100;
        l = l%100;
        jl[1] = l/10;
        jl[0] = l%10;      
        
        Write_Cmd(0x80);//第一行第一字节地址
        Display("智能盲人辅助系统");
        Write_Cmd(0x88);//第三行第二字节地址
        Display("距离:");
        Write_Cmd(0x8A);//第三行第二字节地址
    //delay_ms(2000);//等待2秒
    //Write_Cmd(0X01);//清屏
        Write_Data(jl[3]+0x30);
        Write_Data(jl[2]+0x30);
        Write_Data(jl[1]+0x30);
        Write_Data(jl[0]+0x30);
        Display("mm");

  
}

/************************主函数****************************/
void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗
    Close_IO();
    Clk_Init();                 //时钟初始化,外部8M晶振  3
    Ini_Lcd_IO();
    delay_ms(50);
    Ini_Lcd();

    P5DIR&=~BIT1;
    P5SEL|=BIT1;                 // 将6.0定义为外围模块功能
    TACTL=TASSEL_2+TACLR+ID_3+MC_1; //SMCLK,清除TAR,八分频,连续计数模式
    TACCTL1=CCIS_1;//捕获源为P5.0 P5.1
    TACCTL1|=SCS+CAP+CCIE;//捕获模式,同步捕获,工作在捕获模式,中断打开
    TACCTL1=CM_3;
    TACCR0=6000;
    _EINT();//开启总中断
    while(1){
      
    Tmolde();
     if(flag[0]==1&&flag[1]==1){
     flag[0]=0;
     flag[1]=0;
     if(t2>t1)
       t=t2-t1;
     else
    {
      t=6000-t1+t2;
      over_flag=0;
      TACTL=TACLR;
    }
     }
     distance=t*(340/2000);
     /*Write_Cmd(0x91);
     Write_Data(distance+0x30);*/
    xianshi(distance);
   

}
}
   


/*************中断服务函数**********/
#pragma vector = TIMERA1_VECTOR
__interrupt void TIMERA1()
{
          if(TACCTL1&CM_1){
            t1=TACCR1;
          flag[0]=1;
          P3OUT&=~BIT6;}
          if(TACCTL1&CM_2){
           t2=TACCR1;
           flag[1]=1;
       P3OUT&=~BIT7;
           t1++;}
          TACCTL1&=~CCIFG;//清楚标志位
        

   
}
  

最新回复

按照楼上说的产看一下你所用的中断对应的中断向量名  详情 回复 发表于 2015-4-4 08:53
 
点赞 关注

回复
举报

379

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
有些头文件里timer的溢出中断和比较捕获中断函数的入口名称是分开的,注意检查一下
 
 

回复

6366

帖子

4914

TA的资源

版主

板凳
 
按照楼上说的产看一下你所用的中断对应的中断向量名
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表