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

为什么这无法进入中断

时间:10-02 整理:3721RD 点击:
        #include<reg52.h>
                                       
                                       
                                        #define uint    unsigned int
                                        #define uchar   unsigned char
                                        sbit S1=P3^0;
                                        sbit S2=P3^1;
                                        sbit s3=P3^2;
                                        void delay(uint z);
                                        long int table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                
                                        long int a=0;
                               
                                        void main()
                                        {
                                    
                                        while(1)
                                        {
                                           EA=0;
                                        EX0=1;
                                        EX1=1;
                                        IT0=1;//开中断
                                         
                                         P1=table[a];
                                         delay(1000);
                                         P1=0xff;
                                         delay(1000);                                           //闪烁
                                       
                                        if(S1==0)
                                        {
                                        delay(5);
                                        if(S1==0)
                                        {
                                        a++ ;
                                        }
                                        }
                                    if(S2==0)
                                        {
                                        delay(5);
                                        if(S2==0)
                                        {
                                         a--;
                                        }
                                        }                  //检测S1.S2是否按下
                                       
                                        if(a<0)
                                       
                                        a=7;
                                        else
                                        if(a>7)
                                        a=0;
                               
                    }
                                        }
                                           void ky3() interrupt 0
                                        {
                               
                                        P1=1;
                                       
                                        }
                                       
                                        void delay(uint z)
                                        {
                                        uint x,y;
                                        for(x=z;x>0;x--)
                                          for(y=110;y>0;y--);
                                        }        //延迟

少了一个指令啊,打赏积分把

能具体点吗?
解决了就打赏

#include<reg52.h>
                    #define uint    unsigned int
                                        #define uchar   unsigned char
                                        sbit S1=P3^0;
                                        sbit S2=P3^1;
                                        sbit s3=P3^2;
                                        void delay(uint z);
                                        long int table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                
                                        long int a=0;
                                        int x=1;
                                    int k=1;
                               
                                        void main()
                                        {
                                    
                                        while(1)
                                        {
                                  
                                        EA=1;       
                                        PX1=1;
                                        EX0=1;
                                        EX1=1;
                                        TCON=0X05;
                                    //开中断
                                         x=1;
                                         P1=table[a];
                                         delay(1000);
                                         P1=0xff;
                                         delay(1000);                                           //闪烁
                                         
                                       
                                        if(S1==0)
                                        {
                                        delay(5);
                                        if(S1==0)
                                        {
                                        a++ ;
                                        }
                                        }
                                    if(S2==0)
                                        {
                                        delay(5);
                                        if(S2==0)
                                        {
                                         a--;
                                        }
                                        }                  //检测S1.S2是否按下
                                       
                                        if(a<0)
                                       
                                        a=7;
                                        else
                                        if(a>7)
                                        a=0;
                               
                    }
                                        }
                                           void ky3() interrupt 0
                                        {
                                        k=0;
                                        while(x<2)
                                        {                       
                                        P1=table[a];
                                       
                                        }
                                       
                                        }
                                        void ky4() interrupt 1
                                        {
                                       
                                         if(k=0)
                                         {
                                         x++;
                                         k=2;
                                         }
                                         else
                                         {
                                         a=0;
                                         k=0;
                                         }
                                        }
                                       
                                        void delay(uint z)
                                        {
                                        uint x,y;
                                        for(x=z;x>0;x--)
                                          for(y=110;y>0;y--);
                                        }        //延迟

这段程序第二次按k4为什么没反应啊?

if(k=0)  有这么玩的吗?没警告提示?

有警告,我正想问为什么
方便的话讲下吧

我知道了,因该是==,谢谢,但改了第二次按k4还是没反应

EA=0;
  EX0=1;
  EX1=1;
IT0=1;//开中断
你只开了K3 的中断,K4的中断没开,打赏积分吧

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

网站地图

Top