微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > C51用外部中断控制切换流水灯自己搞得无法实现功能!

C51用外部中断控制切换流水灯自己搞得无法实现功能!

时间:10-02 整理:3721RD 点击:
思路是用x来记中断的个数,然后再主程序中用if语句来判断,当想X为多少多少,P0口的变化情况
刚刚学习单片机,技术不到位,求帮忙!


#include<reg52.h>
unsigned char x;
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{for(j=0;j<125;j++)
{;}
}
}
void main(void)
{            
EA=1;
EX0=1;
IT0=1;
x=0;
while(1)
    {
if(x==0)
  delay1ms(100);
  P0=0x00;
  delay1ms(100);
if(x==1)
  delay1ms(100);
  P0=0x01;
  delay1ms(100);
if(x==2)
  delay1ms(100);
  P0=0x34;
  delay1ms(100);
     }               
}
void int0(void) interrupt 0 using 0
  {
  x++;
  if(x==3)
  x=0;
  }

#include<reg52.h>
unsigned char x;
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{for(j=0;j<125;j++)
{;}
}
}
void main(void)
{                                                                     
EA=1;
EX0=1;
IT0=1;
x=0;
while(1)
    {
if(x==0)

{ P0=0x00;        }
   
if(x==1)
  
{ P0=0x01;}
  
if(x==2)
  
{ P0=0x34;        }
  
     }                                                                                                  
}

void int0(void) interrupt 1 using 1
  {         if(P3^3==0)
    {
        delay1ms(20);
          if(P3^3==0)
            {
                x++;
                }
       
        }
    if(x==3)x=0;
  }

看来还得靠自己啊,嘿嘿,搞定!

中断里面没有检测按键是否按下,也没有消抖

晕.. 外0中断号是0,干嘛特意改成1...

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

网站地图

Top