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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3206|回復: 10
收起左側

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

[復制鏈接]
ID:214729 發表于 2017-6-26 12:56 | 顯示全部樓層 |閱讀模式
按按鍵1持續停止一秒,按按鍵2持續停止2秒,按按鍵3持續停止3秒,按按鍵4持續停止4秒
回復

使用道具 舉報

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,初始狀態是全亮
回復

使用道具 舉報

ID:214729 發表于 2017-6-26 19:45 | 顯示全部樓層
wulin 發表于 2017-6-26 17:41
你的電路加電初始是什么狀態?負載是電機或其他?不說清楚幫不了。

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

使用道具 舉報

ID:214729 發表于 2017-6-26 20:32 | 顯示全部樓層

需要的就是程序
回復

使用道具 舉報

ID:214729 發表于 2017-6-27 08:46 來自觸屏版 | 顯示全部樓層
wulin 發表于 2017-6-26 17:41
你的電路加電初始是什么狀態?負載是電機或其他?不說清楚幫不了。

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

使用道具 舉報

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亮
                }
        }
}
回復

使用道具 舉報

ID:214729 發表于 2017-6-27 11:24 | 顯示全部樓層
謝謝老鐵了
回復

使用道具 舉報

ID:215347 發表于 2017-6-28 10:07 | 顯示全部樓層
只要寫一延時程序就可以了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费观看成人鲁鲁鲁鲁鲁视频 | 国产91在线播放 | 久久伊人一区二区 | 亚洲午夜精品久久久久久app | 99精品国产一区二区三区 | 天天做日日做 | 欧美一级黄色片免费观看 | 亚洲综合色 | 一区二区三区久久久 | 欧美日韩在线精品 | 国产一区2区 | 国产成人精品av | 午夜av免费 | 久久久一区二区三区 | 免费精品 | 99国产精品视频免费观看一公开 | 日韩av在线免费 | 激情网五月天 | 日韩成人在线视频 | 一区二区三区四区视频 | 国产传媒视频在线观看 | 日韩中文久久 | www成人啪啪18| 亚洲欧洲精品成人久久奇米网 | 久久成人精品一区二区三区 | 欧美日韩一区精品 | 色综合天天天天做夜夜夜夜做 | 国产精品不卡一区 | 黑人成人网 | 欧美日韩视频在线播放 | av一区二区三区 | 亚洲欧美一区二区三区国产精品 | 亚洲国产成人精品在线 | 亚洲乱码国产乱码精品精98午夜 | 99精品九九| 精品综合久久 | 极品久久| 日韩视频精品 | 无码日韩精品一区二区免费 | 免费看黄色视屏 | 欧美精品久久久久 |