久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用C語言能把一個單刀雙擲(帶關(guān)斷)開關(guān),寫出5個開關(guān)狀態(tài)來?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:138119 發(fā)表于 2019-2-16 22:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 yfpc2006 于 2019-2-16 22:44 編輯

用C語言能把一個單刀雙擲(帶關(guān)斷)開關(guān),寫出5個開關(guān)狀態(tài)來?


第0檔(K1==1 && K2==1):FLAG=0;
第1檔(K1==0 && K2==1):FLAG=1;
第2檔(K1==1 && K2==0):FLAG=2;
第3檔(K1==0 && K2==1):原第1檔:FLAG=3;
第4檔(K1==1 && K2==1):原第0檔:FLAG=4;


換擋過程(K1==1 && K2==1)。


請大哥哥、大姐姐們幫忙!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:474670 發(fā)表于 2019-2-17 04:39 | 只看該作者
很簡單的事,用定時中斷在標(biāo)識位就好,再努一把力就好了
回復(fù)

使用道具 舉報

板凳
ID:474670 發(fā)表于 2019-2-17 04:43 | 只看該作者
這里有一份義隆的定時長按與短按代碼,多看看http://www.zg4o1577.cn/bbs/dpj-146093-1.html

評分

參與人數(shù) 1黑幣 +10 收起 理由
春風(fēng)十里吹 + 10 很給力!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:303383 發(fā)表于 2019-2-17 09:20 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

5#
ID:213173 發(fā)表于 2019-2-18 07:34 | 只看該作者
你所描述的5種狀態(tài)其實就是3種狀態(tài)的往復(fù):0-1-2-1-0,在你上一個貼子我給你的程序基礎(chǔ)上加一條判斷語句就可以解決換擋過程短暫 K1=1與K2=1引起的不穩(wěn)定。請仔細(xì)看我的注釋以便理解程序。
#include <reg52.h>
#define key_S 5000        //預(yù)設(shè)延時計數(shù)值,12M晶振約230ms(根據(jù)響應(yīng)需求進(jìn)行調(diào)節(jié))
                                  //如果需要精確延時就要使用定時器。
sbit KEY1=P2^0;
sbit KEY2=P2^1;
sbit OUT1=P3^0;
sbit OUT2=P3^1;

void Key_Scan()//按鍵掃描程序
{
        static unsigned int count_1=0,count_2=0,count_3=0;//延時計數(shù)變量               
        
        if((KEY1==0)&&(KEY2==1))//輕按 狀態(tài)1
        {
                if(++count_1>=key_S)//計數(shù)延時
                {
                        count_1=key_S;//防止溢出
                        OUT1=1;
                        OUT2=0;
                        count_2=0;                //count_2清0
                        count_3=0;                //count_3清0
                }
        }
        else if((KEY1==1)&&(KEY2==0))//重按 狀態(tài)2
        {
                if(++count_2>=key_S)//計數(shù)延時
                {
                        count_2=key_S;//防止溢出
                        OUT1=1;
                        OUT2=1;
                        count_1=0;                //count_1清0
                        count_3=0;                //count_3清0
                }
        }   
        else //松手或不按   狀態(tài)0
        {
                if(++count_3>=key_S)//計數(shù)延時
                {
                        count_3=key_S;//防止溢出
                        OUT1=0;
                        OUT2=0;
                        count_1=0;                //count_1清0
                        count_2=0;                //count_2清0
                }
        }
}

void main()
{
        OUT1=0;//初始化輸出1端口
        OUT2=0;//初始化輸出2端口
        while(1)
        {
                Key_Scan(); //按鍵掃描
        }
}
回復(fù)

使用道具 舉報

6#
ID:158375 發(fā)表于 2019-2-18 13:05 | 只看該作者
樓主把簡單的問題復(fù)雜化了,按你說的:
第0檔(K1==1 && K2==1):FLAG=0;     能從FLAG=1來; 能從FLAG=2來;
第1檔(K1==0 && K2==1):FLAG=1;     只能從FLAG=0來;
第2檔(K1==1 && K2==0):FLAG=2;     只能從FLAG=0來;

只有三個狀態(tài);
回復(fù)

使用道具 舉報

7#
ID:138119 發(fā)表于 2019-2-18 18:44 | 只看該作者
#include <reg52.h>
#define key_S 5000
sbit KEY1=P2^0;
sbit KEY2=P2^1;


sbit OUT1=P3^5;
sbit OUT2=P3^6;
sbit OUT3=P3^7;
sbit OUT4=P3^4;

#define num 2000 //預(yù)設(shè)延時計數(shù)值,根據(jù)響應(yīng)需求進(jìn)行調(diào)節(jié)

#define OUT_RL_bit  OUT1
#define OUT_LED_bit OUT2

unsigned int FLAG1_bit=0,FLAG2_bit=0,a1=0,a2=0,a3=0,a4=0;


//延時函數(shù)
void delay_ms(unsigned int n)
{
        unsigned int j;
        unsigned char k;
        for(j=0;j<n;j++)
                for(k= 110;k>0;k--);
                        //NOP();
}

void Key_Scan()
{
        if(KEY1==0 && KEY2==1 && FLAG1_bit==0 && FLAG2_bit==0)
        {
                if(++a1 >= num)
                {
                        a1=num;
                        OUT1=0;
                        OUT2=1;
                        OUT3=1;
                        OUT4=1;
                        FLAG1_bit=1;
                        FLAG2_bit=0;
                        a1=0;
                        a2=0;
                        a3=0;
                        a4=0;
                }

        }
       
        else if(KEY1==1 && KEY2==0 && FLAG1_bit==1 && FLAG2_bit==0)
        {
                if(++a2 >= num)
                {
                        a2=num;
                        OUT1=1;
                        OUT2=0;
                        OUT3=1;
                        OUT4=1;
                        FLAG1_bit=0;
                        FLAG2_bit=1;
                        a1=0;
                        a2=0;
                        a3=0;
                        a4=0;
                }
        }
        else if(KEY1==0 && KEY2==1 && FLAG1_bit==0 && FLAG2_bit==1)
        {
                if(++a3 >= num)
                {
                        a3=num;
                        OUT1=1;
                        OUT2=1;
                        OUT3=0;
                        OUT4=1;
                        FLAG1_bit=1;
                        FLAG2_bit=0;
                        a1=0;
                        a2=0;
                        a3=0;
                        a4=0;
                }
        }
        else if(KEY1==1 && KEY2==1 && FLAG1_bit==1 && FLAG2_bit==0)
        {
                if(++a4 >= num)
                {
                        a4=num;
                        OUT1=1;
                        OUT2=1;
                        OUT3=1;
                        OUT4=0;
                        FLAG1_bit=0;
                        FLAG1_bit=0;
                        a1=0;
                        a2=0;
                        a3=0;
                        a4=0;
                }
        }
        else
        {
                a1=0;
                a2=0;
                a3=0;
                a4=0;
        }
}


void main()
{
        while(1)
        {
                Key_Scan();        //按鍵掃描
        }
}
回復(fù)

使用道具 舉報

8#
ID:138119 發(fā)表于 2019-2-18 18:45 | 只看該作者
wulin 發(fā)表于 2019-2-18 07:34
你所描述的5種狀態(tài)其實就是3種狀態(tài)的往復(fù):0-1-2-1-0,在你上一個貼子我給你的程序基礎(chǔ)上加一條判斷語句就 ...

再一次謝謝大哥哥的幫助!~
在您的基礎(chǔ)上,我也做了一個,小有成就感!
么么噠~
回復(fù)

使用道具 舉報

9#
ID:213173 發(fā)表于 2019-2-18 19:59 | 只看該作者
yfpc2006 發(fā)表于 2019-2-18 18:45
再一次謝謝大哥哥的幫助!~
在您的基礎(chǔ)上,我也做了一個,小有成就感!
么么噠~

                if(++a1 >= num)
                {
                        a1=num;
                        OUT1=0;
                        OUT2=1;
                        OUT3=1;
                        OUT4=1;
                        FLAG1_bit=1;
                        FLAG2_bit=0;
                        a1=0;//有添足之嫌,下同。
                        a2=0;
                        a3=0;
                        a4=0;
                }
回復(fù)

使用道具 舉報

10#
ID:471889 發(fā)表于 2019-2-18 23:25 | 只看該作者
好事多磨啊!再加油!

評分

參與人數(shù) 1黑幣 +10 收起 理由
static + 10

查看全部評分

回復(fù)

使用道具 舉報

11#
ID:478073 發(fā)表于 2019-2-19 13:45 | 只看該作者
哪個,頂起先,看樓主是否還有好的方法分享
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天综合天天 | 成人二区| 日韩av一二三区 | 亚洲免费在线视频 | 久久高清国产视频 | 色橹橹欧美在线观看视频高清 | 天天操狠狠操 | 免费一级做a爰片久久毛片潮喷 | 国产一区二区中文字幕 | 九九热免费视频在线观看 | 在线观看av网站 | av在线免费观看网址 | 九九热精| 色www精品视频在线观看 | 婷婷综合五月天 | 精品成人 | 国产午夜精品一区二区三区四区 | 日韩欧美网 | 国产欧美精品区一区二区三区 | 国产婷婷色一区二区三区 | 牛牛热在线视频 | 欧美性一区二区三区 | 噜噜噜噜狠狠狠7777视频 | 97超碰中文网 | 日韩视频在线播放 | a视频在线观看 | 日韩中文一区 | 亚洲一区在线日韩在线深爱 | 久久手机视频 | 天天射色综合 | 户外露出一区二区三区 | 一级中国毛片 | 99热99| 国产成人精品免费视频大全最热 | 欧美一级视频 | 久久久一二三区 | 羞羞色影院 | av黄色在线 | 国产精品久久久久久久模特 | 毛片免费观看 | 97精品国产 |