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

標題: 求STC89C52單片機 獨立按鍵的代碼,要求只需要用一個按鍵控制一個led燈 [打印本頁]

作者: lucyhyr    時間: 2015-4-11 16:31
標題: 求STC89C52單片機 獨立按鍵的代碼,要求只需要用一個按鍵控制一個led燈
求STC89C52單片機 獨立按鍵的代碼,要求只需要用一個按鍵控制一個led燈,第一次按下,燈亮,再按,燈滅,依此類推

作者: yesonjob    時間: 2015-4-11 22:55
入門問題,這個只能靠自己了
作者: panzishi123456    時間: 2015-4-12 08:41
/***********************************************************************************************************************************************
按一下燈亮,按一下燈滅
***********************************************************************************************************************************************/

#include<reg52.h>

sbit S1=P1^4;                                                                //將S1位定義為P1^4,檢測獨立按鍵
sbit led0=P1^0;                                                        //將led0定義為P1.0口的LED

/***********************************************************************************************************************************************
延時函數
***********************************************************************************************************************************************/
void delay(void)
{
        unsigned int i;
        for(i=5000;i>0;i--)
        ;
}
/***********************************************************************************************************************************************
主函數
***********************************************************************************************************************************************/
void main(void)
{
while(1)
{
        if(S1==0)                                                                //判斷是否有鍵按下
        {
                delay();                                                        //有鍵按下,延時去抖,真正應用時要少用這種延時,占用時間,用定時器延時或一個寄存器循環檢測10多次按鍵

                if(F0==0)                                                        //用F0標志位判斷鍵按下是否已經處理,因剛學C語言沒多久,
                                                                                        //不知道怎么定義RAM能位尋址的寄存器,先用F0,按鍵多的話,一個F0不夠用
                {
                        F0=1;                                                         //F0置1,表示這次按鍵按下已處理
                        led0=~led0;                                                //將LED亮滅狀態取反
                }
        }

        else                                                                         //S1=1說明按鍵釋放
        {
                F0=0;                                                                //F0清零,清按鍵已處理標志
        }
}
}


此程序自己編寫,經測試OK
作者: panzishi123456    時間: 2015-4-12 09:50
/****************************************************************************
按一下燈亮,按一下燈滅
*****************************************************************************/

#include<reg52.h>

sbit S1=P1^4;                                        //將S1位定義為P1^4,檢測獨立按鍵
sbit led0=P1^0;                                //將led0定義為P1.0口的LED

/************************************************************************
延時函數
***************************************************************************/
void delay(void)
{
        unsigned int i;
        for(i=5000;i>0;i--)
        ;
}
/**************************************************************************
主函數
****************************************************************************/
void main(void)
{
while(1)
{
        if(S1==0)                                                //判斷是否有鍵按下
        {
                delay();                                        //有鍵按下,延時去抖,真正應用時要少用這種延時,占用時間,用定時器延時或一個寄存器循環檢測10多次按鍵

                if(S1==0)
                {
                        if(F0==0)                                //用F0標志位判斷鍵按下是否已經處理,因剛學C語言沒多久,不知道怎么定義RAM能位尋址的寄存器,先用F0,按鍵多的話,一個F0不夠用
                        {
                                F0=1;                                 //F0置1,表示這次按鍵按下已處理
                                led0=~led0;                        //將LED亮滅狀態取反
                        }
                }
        }

        else                                                         //S1=1說明按鍵釋放
        {
                F0=0;                                                //F0清零,清按鍵已處理標志
        }
}
}


上面程序漏了一個if語句,要不延時去抖沒作用,汗
作者: panzishi123456    時間: 2015-4-12 10:12
/****************************************************************************
按一下燈亮,按一下燈滅
*****************************************************************************/

#include<reg52.h>

sbit S1=P1^4;                                        //將S1位定義為P1^4,檢測獨立按鍵
sbit led0=P1^0;                                //將led0定義為P1.0口的LED

/************************************************************************
延時函數
***************************************************************************/
void delay(void)
{
        unsigned int i;
        for(i=5000;i>0;i--)
        ;
}
/**************************************************************************
主函數
****************************************************************************/
void main(void)
{
while(1)
{
        if(S1==0)                                                //判斷是否有鍵按下
        {
                delay();                                        //有鍵按下,延時去抖,真正應用時要少用這種延時,占用時間,用定時器延時或一個寄存器循環檢測10多次按鍵

                if(S1==0)
                {
                        if(F0==0)                                //用F0標志位判斷鍵按下是否已經處理,因剛學C語言沒多久,不知道怎么定義RAM能位尋址的寄存器,先用F0,按鍵多的話,一個F0不夠用
                        {
                                F0=1;                                 //F0置1,表示這次按鍵按下已處理
                                led0=~led0;                        //將LED亮滅狀態取反
                        }
                }
        }

        else                                                         //S1=1說明按鍵釋放
        {
                F0=0;                                                //F0清零,清按鍵已處理標志
        }
}
}


上面程序漏了一個if語句,要不延時去抖沒作用,汗
作者: 叫我華哥好了    時間: 2015-4-12 10:23
入門問題,這個只能靠自己,看郭天祥視頻
作者: lucyhyr    時間: 2015-4-13 14:46
panzishi123456 發表于 2015-4-12 10:12
/****************************************************************************
按一下燈亮,按一下燈 ...

非常感謝

作者: lucyhyr    時間: 2015-4-13 15:17
panzishi123456 發表于 2015-4-12 10:12
/****************************************************************************
按一下燈亮,按一下燈 ...

F0的標志位不需要提前先定義麼?
作者: panzishi123456    時間: 2015-4-13 18:16
lucyhyr 發表于 2015-4-13 15:17
F0的標志位不需要提前先定義麼?

F0是PSW的,頭文件已經定義了
作者: lucyhyr    時間: 2015-4-13 20:13
panzishi123456 發表于 2015-4-13 18:16
F0是PSW的,頭文件已經定義了

哦哦,謝謝
作者: panzishi123456    時間: 2015-4-13 21:32
lucyhyr 發表于 2015-4-13 20:13
哦哦,謝謝

不客氣,以前我也試過學習時有一些問題卡住,難以解決的痛苦,有人知道提示一下能少走很多彎路
作者: dragon19790000    時間: 2016-4-18 13:27
哪位大師能寫個,四按鍵四LED的,多謝,在線等
作者: 君君愛你    時間: 2016-4-18 14:42
這個靠自己來理解了
作者: Hi,零距離    時間: 2016-4-18 15:44
百度啊
作者: dragon19790000    時間: 2016-4-18 23:47
百度沒有
作者: SuperHacker    時間: 2017-1-13 07:19
dragon19790000 發表于 2016-4-18 13:27
哪位大師能寫個,四按鍵四LED的,多謝,在線等

我也是初學者,我認為,你把他復制4份,改一下端口,融合在一起就行
作者: juese    時間: 2017-1-15 18:16
有沒有匯編程序
作者: suiyue9101    時間: 2017-1-15 19:00
百度找找,我是來湊數子的。。。。
作者: hulala302    時間: 2017-11-10 20:40
#include <reg52.h> sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; sbit k4=P3^3; void delay(int i) {     while(i--); } void key() {     if(k1==0)         {            delay(100);            if(k1==0)            {                led1=~led1;            }            while(!k1);         }         if(k2==0)         {            delay(100);            if(k2==0)            {                led2=~led2;            }            while(!k2);         }         if(k3==0)         {            delay(100);            if(k3==0)            {                led3=~led3;            }            while(!k3);         }         if(k4==0)         {            delay(100);            if(k4==0)            {                led4=~led4;            }            while(!k4);         } } void main() {     while(1)         {         key();         } }




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: www.日韩| 成人免费久久 | 日本国产一区二区 | 中日字幕大片在线播放 | 国产二区三区 | 日韩在线一区二区 | 国产精品免费观看 | 日本成人在线观看网站 | 国产精品三级 | 一级久久久久久 | 亚洲一区中文 | 久久久xxx| 日韩高清中文字幕 | 成人免费在线观看 | 在线欧美视频 | 国产精品视频97 | 日韩视频一级 | 韩国久久精品 | 欧美日韩精品区 | 久久久综合色 | 欧美日韩黄色一级片 | 亚洲综合久久久 | 99精品久久久久 | 日日拍夜夜 | 天天干精品 | 日韩在线中文字幕 | 亚洲第一在线 | 久久天堂网 | 日韩中文一区二区三区 | 久久伊人影院 | 亚洲精品成人网 | 日日骚网 | 一区二区三区国产好 | 亚洲精品一区在线 | 国产成人99久久亚洲综合精品 | 99久久影院 | 国产精品国产成人国产三级 | 狠狠的干狠狠的操 | 天天看夜夜 | 99久久精品国产毛片 | 亚洲成人一区 |