中断问题
时间:10-02
整理:3721RD
点击:
写了个外部中断0的程序,是P3.2输入的,无意中去改变interrupt后面的数字就发现了一个问题,发现把0改成1,2,3后,效果和0的时候一样,而改成4后,启动中断后发现数码管上的数字不动了,超出4的数字发现效果又变了,启动中断后,数码管上的数字会归0,之后再启动中断也没作用了!求大神帮忙,看看能不能解决这个问题,谢谢!
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
void delay();
uchar num;
uchar code table[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void main()
{
IT0=1;
EA=1;
EX0=1;
P1=0x3f;
P0=0xf0;
while(1)
{
for(num=0;num<16;num++)
{
P1=table[num];
delay();
}
}
}
void delay()
{
int x,y;
for(x=100;x>0;x--)
for(y=1500;y>0;y--);
}
int exter() interrupt 0
{
P2=0x00;
delay();
}
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
void delay();
uchar num;
uchar code table[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void main()
{
IT0=1;
EA=1;
EX0=1;
P1=0x3f;
P0=0xf0;
while(1)
{
for(num=0;num<16;num++)
{
P1=table[num];
delay();
}
}
}
void delay()
{
int x,y;
for(x=100;x>0;x--)
for(y=1500;y>0;y--);
}
int exter() interrupt 0
{
P2=0x00;
delay();
}
软件编译的一个小瑕疵吧。 中断入口地址分别是0X03 0X0B 0X13 0X1B 0X23 一一对应中断优先级 0~4
用于存取中断服务程序入口程序跳转指令
你只有一个中断所以 只要是在0~4之间都是能编译、汇编的 至于正确的入口地址就不保留了 用作一般的程序代码存储
软件编译的一个小瑕疵吧。 中断入口地址分别是0X03 0X0B 0X13 0X1B 0X23 一一对应中断优先级 0~4
用于存取中断服务程序入口程序跳转指令
你只有一个中断所以 只要是在0~4之间都是能编译、汇编的 至于正确的入口地址就不保留了 用作一般的程序代码存储
嗯嗯,谢了,但是就是有点不明白超过4之后的数字出现的现象还是不懂!
你可以看看机器汇编的代码