欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3523|回復: 10
打印 上一主題 下一主題
收起左側

按按鍵1持續停止一秒,按按鍵2持續停止2秒 小白求助,各位大神幫一下咯

[復制鏈接]
跳轉到指定樓層
樓主
ID:214729 發表于 2017-6-26 12:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
按按鍵1持續停止一秒,按按鍵2持續停止2秒,按按鍵3持續停止3秒,按按鍵4持續停止4秒
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2017-6-26 17:41 | 只看該作者
你的電路加電初始是什么狀態?負載是電機或其他?不說清楚幫不了。
回復

使用道具 舉報

板凳
ID:196818 發表于 2017-6-26 19:34 | 只看該作者
源碼發來看看
回復

使用道具 舉報

地板
ID:214729 發表于 2017-6-26 19:40 | 只看該作者
wulin 發表于 2017-6-26 17:41
你的電路加電初始是什么狀態?負載是電機或其他?不說清楚幫不了。

負載是LED,初始狀態是全亮
回復

使用道具 舉報

5#
ID:214729 發表于 2017-6-26 19:45 | 只看該作者
wulin 發表于 2017-6-26 17:41
你的電路加電初始是什么狀態?負載是電機或其他?不說清楚幫不了。

然后這應該是一個簡單的延時程序,初始狀態是全亮,然后按按鍵1LED滅一秒再亮,按按鍵2燈滅2秒再亮......
回復

使用道具 舉報

6#
ID:214729 發表于 2017-6-26 20:32 | 只看該作者

需要的就是程序
回復

使用道具 舉報

7#
ID:214729 發表于 2017-6-27 08:46 來自觸屏版 | 只看該作者
wulin 發表于 2017-6-26 17:41
你的電路加電初始是什么狀態?負載是電機或其他?不說清楚幫不了。

大神,你看你能幫忙編寫一下這個程序,還有電路圖嘛,謝謝啦
回復

使用道具 舉報

8#
ID:213173 發表于 2017-6-27 10:25 | 只看該作者
1582143078 發表于 2017-6-26 19:45
然后這應該是一個簡單的延時程序,初始狀態是全亮,然后按按鍵1LED滅一秒再亮,按按鍵2燈滅2秒再亮......

/***********************************************************************
這是可以用于實戰的獨立按鍵程序,有詳細注釋,你看懂就進入中級階段了。
加電LED1~LED4全亮,key1~key4分別控制LED1~LED4熄滅1~4秒,各通路獨立控
制互不影響,延時期間重復按鍵無效。摒棄嚴重影響運行效率的Delay軟件延時。
按鍵和LED端口定義可根據實際電路自行更改
************************************************************************/
#include <reg51.h>
#define uint unsigned int                 //宏定義無符號整型數據
#define uchar unsigned char         //宏定義無符號字符型數據
sbit key1=P3^4;                                        //按鍵端口定義
sbit key2=P3^5;       
sbit key3=P3^6;       
sbit key4=P3^7;       
sbit LED1=P1^0;                                        //LED端口定義
sbit LED2=P1^1;       
sbit LED3=P1^2;       
sbit LED4=P1^3;       
void key_scan();                                //按鍵掃描程序聲明
void Timer0Init();                                //初始化定時器程序聲明
bit key1_sign=0,key2_sign=0,key3_sign=0,key4_sign=0;//按鍵自鎖標志
uint sec5ms1=0,sec5ms2=0,sec5ms3=0,sec5ms4=0;//5ms中斷變量
/*******************
        主程序
********************/
void main()
{
        LED1=0;                                                //初始化LED
        LED2=0;
        LED3=0;
        LED4=0;
        Timer0Init();                                //初始化定時器程序
        while(1)
        {
                key_scan();                                //按鍵掃描程序
        }
}
/**************************************************
        按鍵掃描程序
**************************************************/
void key_scan()                                        //鍵掃描程序
{
        static uchar count1=0,count2=0,count3=0,count4=0;//消抖計數變量                       

        if(key1==0)                                        //按鍵1按下
        {
                count1++;                                //消抖計數1自+1
                if(count1>=100)                        //100次檢測按鍵如果為0
                {                       
                        count1=100;                        //防止溢出
                        if(key1_sign==0)        //按鍵1自鎖標志為0
                        {
                                key1_sign=1;        //按鍵1自鎖標志置1
                                LED1=1;                        //LED1熄滅
                        }
                }
        }
        else count1=0;                                //按鍵1抬起計數1清0

        if(key2==0)                                        //按鍵2按下
        {
                count2++;                                //消抖計數2自+1
                if(count2>=100)                        //100次檢測按鍵如果為0
                {                       
                        count2=100;                        //防止溢出
                        if(key2_sign==0)        //按鍵2自鎖標志為0
                        {
                                key2_sign=1;        //按鍵2自鎖標志置1
                                LED2=1;                        //LED2熄滅
                        }
                }
        }
        else count2=0;                                //按鍵2抬起計數2清0

        if(key3==0)                                        //按鍵3按下
        {
                count3++;                                //消抖計數3自+1
                if(count3>=100)                        //100次檢測按鍵如果為0
                {                       
                        count3=100;                        //防止溢出
                        if(key3_sign==0)        //按鍵3自鎖標志為0
                        {
                                key3_sign=1;        //按鍵3自鎖標志置1
                                LED3=1;                        //LED3熄滅
                        }
                }
        }
        else count3=0;                                //按鍵3抬起計數3清0
       
        if(key4==0)                                        //按鍵4按下
        {
                count4++;                                //消抖計數4自+1
                if(count4>=100)                        //100次檢測按鍵如果為0
                {                       
                        count4=100;                        //防止溢出
                        if(key4_sign==0)        //按鍵4自鎖標志為0
                        {
                                key4_sign=1;        //按鍵4自鎖標志置1
                                LED4=1;                        //LED4熄滅
                        }
                }
        }
        else count4=0;                                 //按鍵4抬起計數4清0
}
/**************************************************
        初始化定時器程序  12T 5毫秒@12.000MHz
**************************************************/
void Timer0Init(void)                //5毫秒@12.000MHz
{
        TMOD = 0x01;                        //設置定時器模式
        TL0 = 0x78;                                //設置定時初值
        TH0 = 0xEC;                                //設置定時初值
        TF0 = 0;                                //清除TF0標志
        TR0 = 1;                                //定時器0開始計時
        EA=1;                                        //開總中斷
        ET0=1;                                        //開定時器0中斷       
}
/**************************************************
        定時器0中斷服務程序
**************************************************/
void timer0() interrupt 1        //定時器0中斷服務程序
{
        TL0 = 0x78;                                //設置定時重載值
        TH0 = 0xEC;                                //設置定時重載值
        if(key1_sign==1)                //允許1秒延時計時
        {
                sec5ms1++;                        //sec5ms1自+1
                if(sec5ms1>=200)        //1秒
                {
                        sec5ms1=0;                //sec5ms1清0
                        key1_sign=0;        //按鍵1自鎖標志清0
                        LED1=0;                        //LED1亮
                }
        }
        if(key2_sign==1)                //允許2秒延時計時
        {
                sec5ms2++;                        //sec5ms2自+1
                if(sec5ms2>=400)        //2秒
                {
                        sec5ms2=0;                //sec5ms2清0
                        key2_sign=0;        //按鍵2自鎖標志清0
                        LED2=0;                        //LED2亮
                }
        }
        if(key3_sign==1)                //允許3秒延時計時
        {
                sec5ms3++;                        //sec5ms3自+1
                if(sec5ms3>=600)        //3秒
                {
                        sec5ms3=0;                //sec5ms3清0
                        key3_sign=0;        //按鍵3自鎖標志清0
                        LED3=0;                        //LED3亮
                }
        }
        if(key4_sign==1)                //允許4秒延時計時
        {
                sec5ms4++;                        //sec5ms4自+1
                if(sec5ms4>=800)        //4秒
                {
                        sec5ms4=0;                //sec5ms4清0
                        key4_sign=0;        //按鍵4自鎖標志清0
                        LED4=0;                        //LED4亮
                }
        }
}
回復

使用道具 舉報

9#
ID:214729 發表于 2017-6-27 11:24 | 只看該作者
謝謝老鐵了
回復

使用道具 舉報

10#
ID:215347 發表于 2017-6-28 10:07 | 只看該作者
只要寫一延時程序就可以了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表