打印

一直在中断函数中循环

[复制链接]
2843|54
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiajs|  楼主 | 2018-9-7 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lizye| | 2018-9-7 15:50 | 只看该作者

有程序吗

使用特权

评论回复
板凳
jiajs|  楼主 | 2018-9-7 15:55 | 只看该作者

#include <msp430x14x.h>
#define uchar unsigned char
#define uint unsigned int
uint temp,temp1;
long start, end, time ;

void delay(void)
  {
    uint f=500;
    while(f--);
  }


void delayms(int ms)
{
  while(ms--)
  {
    int i=0;
    for(i=0;i<=1600;i++);
  }
}


void init(void)
  { uint i;
   // P1DIR =0XFF;P1OUT =0XFF;
    P2DIR =0XFF;P2OUT =0XF0;
    P3DIR =0XFF;P3OUT =0XFF;
    P4DIR =0XFF;P4OUT =0XFF;
    P5DIR =0XFF;P5OUT =0XFF;
    P6DIR =0XFF;P6OUT =0XFF;
   
  
   
    P1DIR &=~BIT5;//P1IE = BIT5;
   // P1IES=BIT5; P1IFG =0X00;
    P1DIR &=~BIT2 ;P1SEL =BIT2;
    _EINT();
    BCSCTL1 &=~XT2OFF;
    BCSCTL2 |= SELM1+DIVM_3;               
    TACTL=TASSEL_2+TACLR+MC_1 ; //timera_clk=Mclk=1MHz、连续计数模式、1分频
    CCTL1=CM_3+SCS+CCIS_0+CAP+CCIE;      
  
   
   
   do
    {
      IFG1 &=~OFIFG;
       for(i=0xFF;i>0;i--);
    }
   while ((IFG1 & OFIFG)!=0);

    temp = temp1 = 0 ;
    start = end = time =0 ;
  }

void main(void)
  {
    WDTCTL =WDTPW+WDTHOLD ;
   init();
    uint i=0,j=0;
   
    while(1)
    {
     delayms(5);
         
     CCTL1 |=CCIE;
  
  
    }
  }

/********************Timer_A中断服务程序*************************/
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A (void)
  {
   CCTL1 &=~CCIE;// TACTL |= MC_0;
   
   
    P2OUT ^=0xff;
   
   
  }

使用特权

评论回复
地板
shimx| | 2018-9-7 15:58 | 只看该作者
不明白楼主说的只在中断函数中循环啥意思

使用特权

评论回复
5
jiajs|  楼主 | 2018-9-7 16:01 | 只看该作者
就是程序只要捕获到中断  好像一直在中断程序 循环执行啊。无法退出。  P2口一直在翻转啊。

使用特权

评论回复
6
liliang9554| | 2018-9-7 16:05 | 只看该作者
我不太清楚你的外部中断是什么器件产生的,如果是按键,你可以你把delayms(5);延迟改大点

使用特权

评论回复
7
jiajs|  楼主 | 2018-9-7 16:10 | 只看该作者
多大

使用特权

评论回复
8
jiaxw| | 2018-9-7 16:13 | 只看该作者
改成500ms试试,5ms时间比较短

使用特权

评论回复
9
jiajs|  楼主 | 2018-9-7 16:19 | 只看该作者
外部中断是 红外遥控器发射的红外光啊。5ms绝对可以的啊。

使用特权

评论回复
10
zhanghqi| | 2018-9-7 16:25 | 只看该作者
还是没明白你的程序在中断函数中循环是什么意思,我以为是while中的CCTL1 |=CCIE;和中断程序之间进行的循环。

使用特权

评论回复
11
jiajs|  楼主 | 2018-9-7 16:29 | 只看该作者
呵呵,不是的啊。是在中断函数内部循环啊。没有跳出中断函数啊,

使用特权

评论回复
12
wyjie| | 2018-9-7 16:31 | 只看该作者

你发现的这个循环,是多长时间循环一次?

使用特权

评论回复
13
jiajs|  楼主 | 2018-9-7 16:34 | 只看该作者
这个 我没有去测过啊  也没有办法侧啊

使用特权

评论回复
14
51xlf| | 2018-9-11 21:04 | 只看该作者
你的代码呢?

使用特权

评论回复
15
i1mcu| | 2018-9-11 21:05 | 只看该作者
MSP430中断的优先级?

使用特权

评论回复
16
pmp| | 2018-9-11 21:05 | 只看该作者
中断嵌套 ?

使用特权

评论回复
17
mmbs| | 2018-9-11 21:05 | 只看该作者
这个中断时什么函数呢?

使用特权

评论回复
18
1988020566| | 2018-9-11 21:06 | 只看该作者
没有程序看不出来的

使用特权

评论回复
19
lzbf| | 2018-9-11 21:06 | 只看该作者
这个代码呢?

使用特权

评论回复
20
houjiakai| | 2018-9-11 21:06 | 只看该作者
jiajs 发表于 2018-9-7 15:55
#include
#define uchar unsigned char
#define uint unsigned int

这个中断无法执行吗?

使用特权

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

本版积分规则

940

主题

11975

帖子

6

粉丝