智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1026|回复: 0
打印 上一主题 下一主题

[编程类] 在使用两个中断时遇到问题

[复制链接]

5

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
威望
119
贡献
49
兑换币
58
注册时间
2014-7-6
在线时间
18 小时
毕业学校
武汉大学
跳转到指定楼层
1#
发表于 2014-7-17 19:31:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
始终只有中断向量号为11的中断功能正常,另一个中断没有运行。
本人是菜鸟,求助啊!
代码如下:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include"WordLib.h"
#include "Nokia5110ForXS128.h"
unsigned int         Input_Num,i,state,length2,result;
unsigned int length[6];
//宏定义布尔类型
#define BOOL int
#define TRUE 1
#define FALSE 0
BOOL flag = FALSE;//定义一个布尔变量
//bit k;




//--------------------通道 2 3 输入捕捉初始化-------------------//

void ECT_Init(void)

{

TSCR2=0x06;        //禁止溢出中断,分频系数 64(24/64MHz)
TIOS_IOS2=0;        //通道 2 为输入捕捉
TIOS_IOS3=0;        //通道 2 为输入捕捉
TCTL4=0xD0;        //3通道捕捉上升沿 2通道捕捉上升下降沿

TIE_C3I=1;        //通道 3 输入捕捉中断允许
TIE_C2I=1;        //通道 2 输入捕捉中断允许

TSCR1=0x80;        //使能定时器

}


#pragma   CODE_SEG  NON_BANKED        //定时器通道 2 输入捕捉中断

void interrupt  11 Timer0_Onput(void)

{
  TFLG1_C3F=1;
  i++;
  length[i]=length2;  
  switch(i)
    {
      case 2:result=length[2]-length[1];
             LCD_Write_Num(26,1,result,4);
             break;
      case 4:result=length[4]-length[3];
             LCD_Write_Num(26,2,result,4);
             break;
      case 6:result=length[6]-length[5];
             LCD_Write_Num(26,3,result,4);
             break;
      default:break;
    }

}
#pragma  CODE_SEG DEFAULT

#pragma   CODE_SEG  NON_BANKED        //定时器通道 3 输入捕捉中断

void interrupt  10 Timer1_Onput(void)

{
    TFLG1_C2F=1;//清中断
    LCD_Write_Num(32,5,Input_Num,1);
    Input_Num++;
    if(Input_Num>=4)
      {
       length2++;
       Input_Num=0;

      }


}
#pragma  CODE_SEG DEFAULT


void main(void) {
  /* put your own code here */
PLL_Init();

ECT_Init();


PORT_Init();

LCD_Init(); //初始化液?
       
LCD_Write_String(0,0,"L of tunnel: ");

LCD_Write_String(0,1,"T1:     mm");
//LCD_Write_Num(26,1,length2,3);
LCD_Write_String(0,2,"T2:     mm");
//LCD_Write_Num(26,2,Dis,3);  
LCD_Write_String(0,3,"T3:     mm");
//LCD_Write_Num(26,3,Dis,3);  

LCD_Write_String(0,4,"Tunnel State:");
LCD_Write_Num(32,5,i,1);


        EnableInterrupts;


  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-29 15:49 , Processed in 0.054917 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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