標(biāo)題:
請教一下單片機C語言繼電器if判斷代碼問題
[打印本頁]
作者:
idsjp
時間:
2021-4-19 13:41
標(biāo)題:
請教一下單片機C語言繼電器if判斷代碼問題
像下面if判斷執(zhí)行繼電器 這8個判斷方式可以直接寫在一個if判斷里么 麻煩大神講解下 謝謝
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;
sbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;sbit k6=P1^5;sbit k7=P1^6;sbit k8=P1^7; //定義P10口是k1
sbit l1=P0^0;sbit l2=P0^1;sbit l3=P0^2;sbit l4=P0^3;sbit l5=P0^4;sbit l6=P0^5;sbit l7=P0^6;sbit l8=P0^7; //定義P00口是led
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k1==0) //執(zhí)行1號繼電器動作
{
delay(1000);
if(k1==0)
{
l1=~l1;
}
while(!k1);
}
if(k2==0) //執(zhí)行2號繼電器動作
{
delay(1000);
if(k2==0)
{
l2=~l2;
}
while(!k2);
}
if(k3==0) //執(zhí)行3號繼電器動作
{
delay(1000);
if(k3==0)
{
l3=~l3;
}
while(!k3);
}
if(k4==0) //執(zhí)行4號繼電器動作
{
delay(1000);
if(k4==0)
{
l4=~l4;
}
while(!k4);
}
if(k5==0) //執(zhí)行5號繼電器動作
{
delay(1000);
if(k5==0)
{
l5=~l5;
}
while(!k5);
}
if(k6==0) //執(zhí)行6號繼電器動作
{
delay(1000);
if(k6==0)
{
l6=~l6;
}
while(!k6);
}
if(k7==0) //執(zhí)行7號繼電器動作
{
delay(1000);
if(k7==0)
{
l7=~l7;
}
while(!k7);
}
if(k8==0) //執(zhí)行8號繼電器動作
{
delay(1000);
if(k8==0)
{
l8=~l8;
}
while(!k8);
}
}
void main()
{
l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;
while(1)
{
keypros();
}
}
作者:
啊哈哈123
時間:
2021-4-19 13:41
要確定你這邊按鍵的功能需求。
你現(xiàn)有的程序,是按鍵互斥的,當(dāng)一個按鍵先一直按住,在按其他按鍵是無效的。等效為互斥。
那就可以把判斷條件放在一起如:
if(!key1||!key2||!key3...||!key8)
{
}
作者:
idsjp
時間:
2021-4-19 13:43
像這樣 如果(a=1 或 b=1 或 c=1)
作者:
啊哈哈123
時間:
2021-4-19 17:55
//之前的沒寫完就發(fā)出去了。。。。
if(!key1||!key2||!key3...||!key8)
{
delay(1000);//防抖
if(!key1)
{
l1=~l1;
while(!key1);
}
else if(!key2)
{
l2=~l2;
while(!key2);
}
.......
}
作者:
idsjp
時間:
2021-4-19 18:01
謝謝 主要是完全沒接觸過C語言 只會易語言 不過我發(fā)現(xiàn)思路其實都一樣 只是代碼描述有點區(qū)別
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1