小白求助51单片机如何用一个按键控制一段程序的运行与停...

2020-01-26 13:01发布

如题!我想用一个按键控制一段程序的运行与停止 ,k按下程序运行,k放开程序继续运行;k再次按下程序暂停或者停止或者复位。请高手们看看这段代码需要如何修改,请高手不吝赐教,谢谢!
#include <REG51.h> //通用89C51头文件

sbit LED1 = P1^0; //定义闪烁LED                  
sbit LED2 = P1^1; //定义闪烁LED
sbit LED3 = P1^2; //定义闪烁LED
sbit LED4 = P1^3; //定义闪烁LED                  
sbit K1 = P3^2;
/*********************************************************************************************
函数名:毫秒级CPU延时函数
调  用:DELAY_MS (?);
参  数:1~65535(参数不可为0)
返回值:无
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
#define light 1
#define black 0

void DELAY_MS (unsigned int a){
        unsigned int i;
        while( --a != 0){
                for(i = 0; i < 600; i++);
        }
}
/*********************************************************************************************/

/*********************************************************************************************/

void main (void){ //主程序
         
bit key=0;        
  
while(1)      
  {               
  if(K1==0)//假设按键低电平有效            
  {               
  DELAY_MS(5);                  
if(K1==0) key=~key;      
    }      
  else key=black;     
   if(key==light)
            
                {
                LED1=1;
                LED3=1;  
                DELAY_MS(10);         
              LED1=0;
                LED3=0;
                DELAY_MS(20);
                LED1=1;
                LED3=1;                  
                DELAY_MS(10);
                LED1=0;
                LED3=0;
                DELAY_MS(20);
                LED1=1;
                LED3=1;
                DELAY_MS(10);
                LED1=0;
                LED3=0;
                DELAY_MS(20);
                LED1=1;
                LED3=1;
                DELAY_MS(10);
                LED1=0;
                LED3=0;
                DELAY_MS(100);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。