微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 中断问题

中断问题

时间: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();
}

软件编译的一个小瑕疵吧。 中断入口地址分别是0X03 0X0B 0X13 0X1B 0X23  一一对应中断优先级  0~4  
用于存取中断服务程序入口程序跳转指令
你只有一个中断所以 只要是在0~4之间都是能编译、汇编的 至于正确的入口地址就不保留了 用作一般的程序代码存储

软件编译的一个小瑕疵吧。 中断入口地址分别是0X03 0X0B 0X13 0X1B 0X23  一一对应中断优先级  0~4  
用于存取中断服务程序入口程序跳转指令
你只有一个中断所以 只要是在0~4之间都是能编译、汇编的 至于正确的入口地址就不保留了 用作一般的程序代码存储

嗯嗯,谢了,但是就是有点不明白超过4之后的数字出现的现象还是不懂!

你可以看看机器汇编的代码  

上一篇:刚刚入门单片机
下一篇:十万火急

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top