如题!我想用一个按键控制一段程序的运行与停止 ,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);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你按键的时候可能还在延时函数里,不能及时响应的
一周热门 更多>