单片机外中断1的问题

我的单片机外中断1设置总是没效果无法使用没有中断的效果
我是用的是外中断1INT1P3_3,按下按钮后P3_3接口接地,我有一个用INT0的都好用,有效果,用INT1的就没有用,板子做好了只能用INT1接口。
华邦的单片机W78E52D它与51是通用的,程序如下,修改成功绝对给分,甚至加分,在线等比较急用。
#include <reg51.h> //单片机头文件
sbit d14=P3^7;
sbit d22=P3^6;
sbit d12=P3^5;
sbit zs=P3^4;
sbit an=P3^3;
sbit wp=P3^2;
sbit k1=P0^7;
sbit k2=P0^6;
sbit k3=P0^5;
sbit k4=P0^4;
sbit k5=P0^3;
sbit k6=P0^2;
sbit k7=P0^1;
sbit k8=P0^0;
delay(unsigned long i) //频率程序长整形
{
unsigned long n;
n=3000000/i; //3000000/i为延时次数
for(;n>1;n--)
n--;
}
delay10ms(unsigned int i)
{
unsigned long n;
n=30000; //30000频率为10ms延时次数
for(;i>0;i--)
for(;n>1;n--)
n--;
}
void main (void)
{
int zq;
//设置中断服务,及中断等级
EX1=1;//开外部中断1
IT1=1;//外部中断1中断方式为下降沿触发
EA=1;//开CPU总中断
/*加电自起,首先判定开关状态(P0^0,P0^1),决定相位开关状态,1-2, P3^5,2-2, P3^6,1-4,P3^7(低电平有效),状态指示灯,RUN,P3^4闪烁,*/
while(1)
{
zq=(P0&0x03);
switch(zq)
{
case 0:P3=0x60; /*1/4P*/
break;
case 1:P3=0xa0; /*2-2P*/
break;
case 2:P3=0xc0; /*1-2P*/
break;
case 3:P3=0xe0; /*1-1P*/
break;
}
}
}

void intersvr0(void) interrupt 2//外中断1的中断编号为2
{
int kg=0,w=0,j=0,n; /*kg开关状态,zq自起状态,i频率,j数组a的第一个维数,k数组a的第二个维数,w外频,n为输出频率循环数*/
unsigned char code a[][16]={0x11,0x31,0x19,0x2d,0x0b,0x08,0x0a,0x2c,0x28,0x38,0x10,0x24,0x02,0x07,0x03,0x25,/*一段*/0x25,0x03,0x07,0x02,0x24,0x10,0x38,0x28,0x2c,0x0a,0x08,0x0b,0x2d,0x19,0x31,0x11,/*二段*/0x09,0x08,0x00,0x01,0x09,0x08,0x00,0x01,0x09,0x08,0x00,0x01,0x09,0x08,0x00,0x01,/*三段*/0x01,0x00,0x08,0x09,0x01,0x00,0x08,0x09,0x01,0x00,0x08,0x09,0x01,0x00,0x08,0x09,/*四段*/0x39,0x2d,0x0f,0x2c,0x30,0x24,0x06,0x25,0x39,0x2d,0x0f,0x2c,0x30,0x24,0x06,0x25,/*五段*/0x25,0x06,0x24,0x30,0x2c,0x0f,0x2d,0x39,0x25,0x06,0x24,0x30,0x2c,0x0f,0x2d,0x39,/*六段*/0x39,0x0f,0x38,0x07,0x39,0x0f,0x38,0x07,0x39,0x0f,0x38,0x07,0x39,0x0f,0x38,0x07,/*七段*/0x07,0x38,0x0f,0x39,0x07,0x38,0x0f,0x39,0x07,0x38,0x0f,0x39,0x07,0x38,0x0f,0x39};/*八段*/
//1-1p的控制码
/*开关打开后运行程序*/
if(k1==0)
j+=8;
j+=zq*2;
if(k6==1) //内频控制
{while(1)
for(n=0;n<8;n++)
{
delay(i);
P1=a[j][n];
}
}
}
else
kg++;
kg=kg%2;
}

第1个回答  2014-06-26
只要中断的速度不太快,中断子程序不太长,就不会干扰,但是如每次中断之后,返回要很久的话,就会嵌套,这里就会有一个深度问题,也就是嵌套几次,可能就不行了.
求采纳为满意回答。追问

我就用了这一个中断程序,但是我按按钮之后根本就没有反映,还在主程序里根本就没有出来!而且我按按钮肯定不会太快啊!我不晓得是不是我设置的中断方式有没有问题。

相似回答