27,511
社区成员




为什么在执行中断后,数码管显示的数会停留在最后一个数,而不是返回主程序
#include <REGX51.H>
//-----定义全局变量
unsigned char DisplayData[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳数码管显示0---f
//延时函数
void delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=0;j<125;j++)
{;}//空函数
}
//主函数
void main( )
{
unsigned char i;
while(1)
{
EA=1; //总中断允许
EX0=1; //允许外部中断0中断
EX1=1; //允许外部中断1中断
IT0=1; //选择外部中断0为跳沿触发方式
IT1=1; //选择外部中断1为跳沿触发方式
PX0=0;
PX1=0;
for(i=0;i<17;i++)
{
P0=DisplayData[i];
delay(800);
}
}
}
//中断函数
void int0_isr(void) interrupt 0 using 0//外部中断0的中断服务函数
{
unsigned char i;
for(i=0;i<10;i++)
{
PX1=1;
P0=DisplayData[i];
delay(800);
}
}
void int1_isr(void) interrupt 2 using 1//外部中断1的中断服务函数
{
unsigned char i;
for(i=10;i<16;i++)
{
PX0=1;
P0=DisplayData[i];
delay(800);
}
}