智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1414|回复: 2
打印 上一主题 下一主题

跪!怒发一贴,怎么搞怎么搞!!

[复制链接]

2

主题

19

帖子

0

精华

高级会员

Rank: 4

积分
704
威望
460
贡献
182
兑换币
93
注册时间
2012-11-9
在线时间
31 小时
毕业学校
武汉科技大学
跳转到指定楼层
1#
发表于 2013-8-18 16:59:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yingxhgo 于 2013-8-18 17:02 编辑

MSP外部中断和用定时器来计数部分程序写出来有问题。。。
望前辈们赐教,不知道是我程序里面还缺点儿什么或者哪里不对。。。LZ已经很愁苦了。。。sigh
我觉得设置好定时器和IO部分(已红色标出)就应该能进中断能有输出了,但是没有a╮(╯_╰)╭
/***********************************************************
程序功能:在12864液晶上仅显示distance的数值,同时通过P2^0连接的led判断有没有进中断
-----------------------------------------------------------
----------------------------------------------------
测试说明:观察液晶显示
***********************************************************/
#include  "msp430.h"
#include  "cry12864.h"
#include  "cry12864.C"

uint distance,start,end;
int z[5];

void delay(void)
{
    int tmp;

    for(tmp = 12000;tmp > 0;tmp--);
}
#pragma vector=TIMERA1_VECTOR //==定时器A中断处理==
__interrupt void timer_a(void)
{
  switch(TAIV) //==向量查询==   
{
    case 2: //==捕获中断==
       if(CCTL1&CM0) //==捕获到上升沿==
          {
            CCTL1=(CCTL1&(~CM0))|CM1; //==更变设置为下降沿触发==
            start=TAR; //==记录初始时间==
            P2OUT ^= BIT0;
            delay();
           }               
       else if (CCTL1&CM1) //==捕获到下降沿==
         {
            CCTL1=(CCTL1&(~CM1))|CM0; //==更变设置为上升沿触发==
            end=TAR; //==用start,end,overflow计算脉冲宽度==
            P2OUT ^= BIT0;
            delay();
          }
        break;                 
    default:        break;
     }
   }


/***************************主函数*************************/
void main( void )
{

    /*下面六行程序关闭所有的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;

    WDTCTL = WDTPW + WDTHOLD;    //关闭看门狗

   TACTL=TASSEL_1+ID_3+MC_1+TACLR+TAIE;//ID_3表示八分频 MC_1表示增计数模式
    CCTL1=CM_1+SCS+CAP+CCIE;//上升沿+同步+CCI0A(P1.1信号源)+捕获功能+捕获中断允许
    _EINT();               //开总中断允许
   
    Ini_Lcd();                  //初始化液晶

    P1DIR&=~BIT1;                 // 方向寄存器设置为输入模式
    P1SEL=BIT1;                         //设P1.1为功能模块使用,做捕获源,TA0功能

    P2DIR|=BIT0;                //P2^0设定为输出模式

    distance=end-start;
    z[0]=distance/10000;
    z[1]=distance%10000/1000;
    z[2]=distance%10000%1000/100;
    z[3]=distance%10000%1000%100/10;
    z[4]=distance%10000%1000%100%10;

    Disp_SZ(0x80,z[0],1);
    Disp_SZ(0x81,z[1],1);
    Disp_SZ(0x82,z[2],1);
    Disp_SZ(0x83,z[3],1);
    Disp_SZ(0x84,z[4],1);

}

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
143
威望
81
贡献
38
兑换币
39
注册时间
2014-8-5
在线时间
12 小时
毕业学校
南京信息工程大学
2#
发表于 2015-3-22 22:26:20 | 只看该作者
    P1DIR&=~BIT1;                 // 方向寄存器设置为输入模式
    P1SEL=BIT1;                         //设P1.1为功能模块使用,做捕获源,TA0功能

这两句错了吧。。。。因为你用的应该是p1.1脚,应该改为
    P1DIR&=~BIT2;                 // 方向寄存器设置为输入模式
    P1SEL=BIT2;                         //设P1.1为功能模块使用,做捕获源,TA0功能
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
143
威望
81
贡献
38
兑换币
39
注册时间
2014-8-5
在线时间
12 小时
毕业学校
南京信息工程大学
3#
发表于 2015-3-22 22:29:30 | 只看该作者
看您发这个问题的时间都是去年八月份了  看来问题老早解决了。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 23:05 , Processed in 0.057342 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表