51_按键_查询法

 

 /**********************51单片机学习例程************************
*  平台:Keil U4 + STC89C52
*  名称:按键控制左右流水灯实验
*  编写:Tony
*  日期:2022-2-6
*   QQ : 674749794
*  晶体:12MHZ
*	 变更记录:无
******************************************************************/
#include<reg51.h>
#include<intrins.h>	

#define GPIO_LED P1
sbit K1=P3^1;
void Delay10ms( );   //延时10ms

/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
	unsigned int i,j;
	j=0x01; //1111_1110
	
	while(1)
	{	
		GPIO_LED=j;	 
		if(K1==0)		//检测按键K1是否按下
		{
			Delay10ms();	//消除抖动
			if(K1==0)
			{
				j=_cror_(j,1);
				while((i<50)&&(K1==0))	 //检测按键是否松开
				{
					Delay10ms(1);
					i++;
				}
				i=0;
			}
		}		

	}				
}
/*******************************************************************************
* 函 数 名         : Delay10ms
* 函数功能		   : 延时函数,延时10ms
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Delay10ms(unsigned int c)   //误差 0us
{
    unsigned char a, b;
 
    //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
    for (;c>0;c--)
    {
        for (b=38;b>0;b--)
        {
            for (a=130;a>0;a--);
        }         
    }      
}

  

posted @ 2022-02-06 16:10  xiaoberber  阅读(85)  评论(0编辑  收藏  举报