找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2683|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教一下單片機(jī)C語(yǔ)言繼電器if判斷代碼問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:908313 發(fā)表于 2021-4-19 13:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1黑幣
像下面if判斷執(zhí)行繼電器 這8個(gè)判斷方式可以直接寫(xiě)在一個(gè)if判斷里么 麻煩大神講解下 謝謝

#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器

typedef unsigned int u16;          //對(duì)數(shù)據(jù)類(lèi)型進(jìn)行聲明定義
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號(hào)繼電器動(dòng)作
        {        
                delay(1000);   
                if(k1==0)         
                {
                        l1=~l1;         
                }
                while(!k1);         
        }        
        if(k2==0)                  //執(zhí)行2號(hào)繼電器動(dòng)作
        {        
                delay(1000);   
                if(k2==0)         
                {
                        l2=~l2;         
                }
                while(!k2);         
        }        
        if(k3==0)                  //執(zhí)行3號(hào)繼電器動(dòng)作
        {        
                delay(1000);   
                if(k3==0)         
                {
                        l3=~l3;         
                }
                while(!k3);         
        }        
        if(k4==0)                  //執(zhí)行4號(hào)繼電器動(dòng)作
        {        
                delay(1000);   
                if(k4==0)         
                {
                        l4=~l4;         
                }
                while(!k4);         
        }        
        if(k5==0)                  //執(zhí)行5號(hào)繼電器動(dòng)作
        {        
                delay(1000);   
                if(k5==0)         
                {
                        l5=~l5;         
                }
                while(!k5);         
        }        
        if(k6==0)                  //執(zhí)行6號(hào)繼電器動(dòng)作
        {        
                delay(1000);   
                if(k6==0)         
                {
                        l6=~l6;         
                }
                while(!k6);         
        }        
        if(k7==0)                  //執(zhí)行7號(hào)繼電器動(dòng)作
        {        
                delay(1000);   
                if(k7==0)         
                {
                        l7=~l7;         
                }
                while(!k7);         
        }        
        if(k8==0)                  //執(zhí)行8號(hào)繼電器動(dòng)作
        {        
                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();         
        }               
}

最佳答案

查看完整內(nèi)容

要確定你這邊按鍵的功能需求。 你現(xiàn)有的程序,是按鍵互斥的,當(dāng)一個(gè)按鍵先一直按住,在按其他按鍵是無(wú)效的。等效為互斥。 那就可以把判斷條件放在一起如: if(!key1||!key2||!key3...||!key8) { }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:332214 發(fā)表于 2021-4-19 13:41 | 只看該作者
要確定你這邊按鍵的功能需求。
你現(xiàn)有的程序,是按鍵互斥的,當(dāng)一個(gè)按鍵先一直按住,在按其他按鍵是無(wú)效的。等效為互斥。
那就可以把判斷條件放在一起如:
if(!key1||!key2||!key3...||!key8)
{

}
回復(fù)

使用道具 舉報(bào)

板凳
ID:908313 發(fā)表于 2021-4-19 13:43 | 只看該作者
像這樣     如果(a=1 或 b=1 或 c=1)   
回復(fù)

使用道具 舉報(bào)

地板
ID:332214 發(fā)表于 2021-4-19 17:55 | 只看該作者
//之前的沒(méi)寫(xiě)完就發(fā)出去了。。。。
if(!key1||!key2||!key3...||!key8)
{
   delay(1000);//防抖
   if(!key1)         
   {
       l1=~l1;
       while(!key1);           
    }
     else if(!key2)         
   {
       l2=~l2;
       while(!key2);           
    }
.......
}
回復(fù)

使用道具 舉報(bào)

5#
ID:908313 發(fā)表于 2021-4-19 18:01 | 只看該作者
謝謝 主要是完全沒(méi)接觸過(guò)C語(yǔ)言 只會(huì)易語(yǔ)言 不過(guò)我發(fā)現(xiàn)思路其實(shí)都一樣 只是代碼描述有點(diǎn)區(qū)別
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表