单片机中断c语言编程

我用c语言编写单片机中断程序但是我没按中断单片机就自动执行了中断内的程序,我不知道是为什么
程序:
#include<reg51.h>
void delay(unsigned int z);
sbit fmq=P2^7;
unsigned char code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
};
void main()
{
int i;
while(1)
{
EX0=1;
IT0=0;
EA=1;
for(i=0;i<16;i++)
{
fmq=1;
P2=0xd4;//01010100
P0=table[i];
delay(1000);
}
}
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}void x0() interrupt 0
{
fmq=0;
}
fmq代表蜂鸣器,上电之后蜂鸣器总是自动响

单片机上电后,引脚默认是高点平!所以你在引脚初始化时就要把 fmq清零
在主函数开始执行 fmq = 0;再做就不会自动响了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-09
神呀,P2=0xd4不就是你蜂鸣器响的原因,P2^7电平是0;
需要改成P2|=0xd4?
第2个回答  2012-07-09
p2=0xd4 是不是把P2第七位,也就是fmq又设为0了
相似回答