万能青年 发表于 2012-7-24 15:50:26

外部中断问题

为什么我写的中断程序 按下按钮蜂鸣器响了但是二极管还在闪烁 没有中断?
这段程序要怎么改呢?


#include <reg52.h>
#define unchar unsigned char

sbit led_1 = P1^2;
sbit led_2 = P1^3;
sbit beep= P1^4;
sbit key = P1^1;
sbit intr = P3^2;

void delay(unchar s)
{
      unchar x,y;
      for(x=s;x>0;x--)
                for(y=110;y>0;y--);
}


int main(void)
{
      unchar i;
      EA = 1;
      EX0 = 1;
      IT0 = 0;               

      while (1)
      {
                beep = 1;
                if (!key)
                {
                        delay(30);
                        if (!key)
                              intr = 0;
                intr = 1;
                }
                delay(1000);
                beep = 1;
                led_1 = 0;
                led_2 = 1;
                delay(1000);
                led_1 = 1;
                led_2 = 0;               
      }      

      return 0;
      
}


void int0 () interrupt 0
{
      beep = 0;
      delay(1000);
}


lxa0 发表于 2012-7-24 22:59:30

说实话,我没看懂你的问的啥

sidu 发表于 2012-7-26 18:16:10

if (!key)
                {
                        delay(30);
                        if (!key)
                              intr = 0;
                intr = 1;
                }
在这句话里面,intr始终是=1的,
if (!key)
                              intr = 0;
没有起作用的。因为它接下来就是   intr = 1;
页: [1]
查看完整版本: 外部中断问题