标题:求问个单片机关于中断的问题
只看楼主
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
结帖率:62.07%
 问题点数:0 回复次数:3 
求问个单片机关于中断的问题
#include <reg51.h>
sbit red_line=P3^2;
sbit red_line1=P2^0;
void init_int0()  // 初始化外部中断,选择下降沿有效
{
    EA=1;
    EX0=1;
    IT0=1;
}
void init_xlat0(unsigned char high,unsigned char low)        //T0时钟初始化,模式1
{
    TMOD=9;
    TH0=high;
    TL0=low;
    TF0=0;
     TR0=1;
}

void delay(unsigned char a,unsigned char b)     //时钟延时        
{
    init_xlat0(a,b);
    while(1){
        if(TF0==1)
            break;
    }
}
void main()
{
    init_int0();
   while(1){
       P2=0;
      delay(0,0);
      red_line=0;
   }   
}
void into_in(void) interrupt 0
{   
    red_line=1;    // 放在这运行是正常的,能出中断
    EX0=0;      
     P2=0xCC;
    delay(0,0);
    //red_line=1;  //把上面的red_line删掉,用下面的这个就出不了中断了,求问为什么   
    EX0=1;
    //red_line=1;  //同样这个地方也是不正常的
}
搜索更多相关主题的帖子: void 时钟 include 
2013-03-04 15:49
一介草莽
Rank: 2
等 级:论坛游民
帖 子:20
专家分:60
注 册:2012-10-8
得分:0 
一定不要在中断里面延时 这是大忌
在中断延时太久 那么当你还在延时时 有可能第二次中断又来了
那么就始终没法执行完中断函数 你上面就是这种情况把延时放在中断外就对了
2013-05-05 21:42
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
得分:0 
嗯,是的,把ex0=1放到最后一行,
2013-05-23 13:55
猴哥取经
Rank: 2
等 级:论坛游民
帖 子:41
专家分:34
注 册:2012-10-28
得分:0 
长知识了.
2013-06-02 16:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-399696-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.205521 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved