51中断控制蜂鸣器,无法实现蜂鸣器报警

这个程序没法使用中断来触发蜂鸣器响吗?当我去掉中断程序后,就改变电平高低蜂鸣器可以响,如下程序就无法使蜂鸣器触发,到底哪里出问题了?
#include <reg51.h>
typedef unsigned char uch;
typedef unsigned long uint;

sbit power=P3^3;
sbit beep=P1^5;

void delay(uint i)
{
while(i--);
}

void duan()
{
EX0=1;
IT0=1;
EA=1;
}

void main()
{
while(1)
{
duan();
}
}

void D_A() interrupt 0
{
if(power==0)
{
delay(100);
if(power==0)
{
beep=!beep;
}
}
}

中断初始化不要放while里面,初始化1次就够了