首页 > 其他分享 >问题:一直不明白为什么这两种写法 第一种就实现不到目标效果

问题:一直不明白为什么这两种写法 第一种就实现不到目标效果

时间:2022-09-30 17:35:23浏览次数:52  
标签:KG1 KG0 第一种 效果 delay State && sbit 写法

第一种:

查看代码
 #include<reg51.h>  
sbit LED1=P1^3;
sbit LED2=P3^5;
sbit LED3=P3^6;
sbit LED4=P3^7;   //定义位名称四个LED灯
sbit  K1=P2^0; 
sbit  K2=P2^1;    
//延时函数
void delay(unsigned int xms)
{
	while(xms>0)xms--;
}
//执行动作
void main(){
	while(1){
		if(K1==0&&K2==0){
			delay(1200);
			if(K1==0&&K2==0){
				LED1=0;	LED2=LED3=LED4=1; }
		}
		else if(K1==0&&K2==1){
			delay(1200);
			if(K1==0&&K2==1){
				LED2=0;	 LED1=LED3=LED4=1;} 
		}
		else if(K1==1&&K2==0){
			delay(1200);
			if(K1==1&&K2==0){
				LED3=0;	  LED1=LED2=LED4=1;	}
		}
		else if(K1==1&&K2==1){
			delay(1200);
			if(K1==1&&K2==1){
				LED4=0;	  LED1=LED2=LED3=1;}
		}
		
	}
}

效果:
按按键后 改变了状态 但是松开后立即回到上一个LED显示状态  发现不出来问题 

第二种:

#include<reg51.h>
sbit LED1=P1^3;
sbit LED2=P3^5;
sbit LED3=P3^6;		
sbit LED4=P3^7;
sbit KG0=P2^0;
sbit KG1=P2^1;
bit KG0_State=1;
bit KG1_State=1;
void delay(unsigned int xms);
void keyBoard();
//执行动作
void main(){
	while(1){
		keyBoard();
		if(	KG0_State==0&&KG1_State==0){
			LED1=0;	LED2=LED3=LED4=1; }
		else if(KG0_State==0&&KG1_State==1){
			LED2=0;	LED1=LED3=LED4=1; }
		else if(KG0_State==1&&KG1_State==0){
			LED3=0;	LED1=LED2=LED4=1; }
		else if(KG0_State==1&&KG1_State==1){
			LED4=0;	LED1=LED2=LED3=1; }
		}
	}

//延时函数
void delay(unsigned int xms)
{
	while(xms>0)xms--;
}
//判断按键状态
void keyBoard()
{
	if(KG0==0){
		delay(1200);
		if(KG0==0){
			delay(1200);
			while(!KG0);	
			KG0_State=!KG0_State;		
		}
	}
	if(KG1==0){
		delay(1200);
		if(KG1==0){
			delay(1200);
			while(!KG1);	
			KG1_State=!KG1_State;		
		}
	}
}

 效果:
正常 完美

标签:KG1,KG0,第一种,效果,delay,State,&&,sbit,写法
From: https://www.cnblogs.com/YYZYCS/p/16745614.html

相关文章

  • JS奇淫技巧:数值的七种写法
    JS奇淫技巧:数值的七种写法JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手你知道吗?在JS编程中,数值可以有很多种写法。第一种写法:一般情况而言,数值就是数值。比......
  • 带有旋转效果的提交按钮 - 仅限 CSS - 一步一步
    带有旋转效果的提交按钮-仅限CSS-一步一步HTML对于HTML,我们需要一个带有文本和“检查”svg元素的按钮。我们将显示文本并隐藏svg。在按钮焦点上,我们将显示sv......
  • SQL 循环语句几种写法
    摘自:https://www.cnblogs.com/guorongtao/p/11939751.html1、正常循环语句declare@orderNumvarchar(255)createtable#ttableName(idintidentity(1,1),Ordersvar......
  • props写法
    在eslint中写props,直接简写会有语法错误提示,要想去掉,可以加忽略检查的注释,但最好还是改为eslint认可的规范写法加注释:在上一行加上//eslint-disable-next-line,或者在......
  • less写法示例
    less写法示例<divclass="parentDiv"><divclass="childDiv">childDiv1</div><divclass="childDiv">childDiv2</div><divclass="childDiv">childDiv3</div>......
  • mybatis中大于等于小于等于的写法
    第一种写法(1):原符号<<=>>=&'"替换符号<<=>>=&amp;&apos;"例如:sql如下:create_date_time>=#{startTime}andcreate_date_time<=#{endTime} 第二种写法......
  • 跨模态学习能力再升级,EasyNLP电商文图检索效果刷新SOTA
    简介: 本⽂简要介绍我们在电商下对CLIP模型的优化,以及上述模型在公开数据集上的评测结果。最后,我们介绍如何在EasyNLP框架中调用上述电商CLIP模型。作者:熊兮、欢......
  • 13. HTML-- 注释的写法(附带示例)
    1.前言HTML注释主要用来对文档中的代码进行解释说明,注释也是代码的一部分,但浏览器会自动忽略注释的内容,所以用户在网页中是看不到注释的。我们在编写代码时应该善用注释......
  • C语言:九章算术:更相减损法求最大公约数 函数写法
    #include<stdio.h>//<<九章算术>>更相减损法:可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。//以等数约之。///第......
  • report 报表截取小数点后位数format 格式写法
    {0:0.######}  上边写法最前边个位0可以保留{0:#.######}上边写法个位0就会不显示上边写法可以保证小数点后截取6位,不足6位不会用0顶替,也就是去掉小数点后......