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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

c語言控制程序,如何更改觸發方式(按鍵判斷改為高低電平判斷),而保持原程序執行...

[復制鏈接]
跳轉到指定樓層
樓主
ID:342600 發表于 2018-6-1 00:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面的程序,按一次按鍵(key1)執行case0,再按一次按鍵執行case1。
本人新手,想請高手指點幫忙,實現以下功能:當key1高電平時,執行case0。當key1為低電平時,執行case1。
【即:當key1高電平時,燈2滅,燈1滅;1秒后,保持燈2滅,但燈1亮,然后一直保持,直至key1電平發生變化。】
我曾使用if(!key1)但不能實現所需要的功能。

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay_ms(uint);
sbit led2=P1^0;
sbit led1=P1^2;
sbit key1=P3^2;

void main()
{
uchar i=0;

while(1)
{
if(key1==0)//按鍵1
{
delay_ms(10);
if(key1==0)
{
i++;
i=i%2;
switch(i)
{
case 0: led2=1; led1=1; delay_ms(1000); led2=1; led1=0; break;//燈2滅,燈1滅;1秒后,保持燈2滅,但燈1亮。
case 1: led2=0; led1=1; delay_ms(1000); led2=0; led1=0; break;//燈2亮,燈1滅;1秒后,保持燈2亮,但燈1亮。
default: break;
}
}
while(!key1);
}

}
}
void delay_ms(uint z) //延時子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

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

使用道具 舉報

沙發
ID:213173 發表于 2018-6-1 07:24 | 只看該作者
改這樣試試
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay_ms(uint);
sbit led2=P1^0;
sbit led1=P1^2;
sbit key1=P3^2;

void main()
{
        bit i=0;
        while(1)
        {
                if(key1==0)//按下
                {
                        delay_ms(10);
                        if((key1==0)&&(i==0))
                        {
                                i=~i;
                                led2=1; led1=1; delay_ms(1000); led2=1; led1=0; //燈2滅,燈1滅;1秒后,保持燈2滅,但燈1亮。
                        }
                }
                if(key1==1)//抬起
                {
                        delay_ms(10);
                        if((key1==1)&&(i==1))
                        {               
                                i=~i;
                                led2=0; led1=1; delay_ms(1000); led2=0; led1=0; //燈2亮,燈1滅;1秒后,保持燈2亮,但燈1亮
                        }
                }
        }
}
void delay_ms(uint z) //延時子程序
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
回復

使用道具 舉報

板凳
ID:330198 發表于 2018-6-1 08:49 | 只看該作者
本來按鍵就是高低電平判斷,不需要改啊。
回復

使用道具 舉報

地板
ID:342600 發表于 2018-6-1 18:39 | 只看該作者
wulin 發表于 2018-6-1 07:24
改這樣試試
#include
#define uint unsigned int

測試已通過!謝謝!!!

至于增加i,和i取反,其中的作用,我將好好的去理解并搞懂來。

再次感謝!!!
回復

使用道具 舉報

5#
ID:342600 發表于 2018-6-1 18:46 | 只看該作者
zhanghyg 發表于 2018-6-1 08:49
本來按鍵就是高低電平判斷,不需要改啊。

不同的。

原來的程序是按下并松開變化一次。現在是:按下變化一次,松開又變化一次。

即:原來的是下降沿觸發(其實我不知到是上升沿還是下降沿)。現在是:高電平、低電平分別觸發。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲激情在线视频 | 精品一区二区三区在线视频 | 狠狠入ady亚洲精品经典电影 | 亚洲国产一区二区三区 | 久久里面有精品 | 久久综合一区 | 在线免费观看a级片 | 亚洲午夜av | 久久一区二区三区电影 | 视频二区在线观看 | 九九在线视频 | 91免费入口 | 欧美日韩在线视频一区 | 欧美自拍视频 | 日韩精品在线观看一区二区 | 日韩中文在线视频 | 久久中文免费视频 | 一区观看| 久久99精品久久久久 | 久久这里只有精品首页 | 中文字幕在线观看一区 | 国产一区二区精品 | 天堂av免费观看 | 亚洲一区中文字幕 | 午夜国产一级 | 青青久草| 黑人性hd | 久久国产精品精品国产色婷婷 | 成人精品一区二区 | 亚洲精品小视频在线观看 | 能免费看的av | 日韩一区二区三区在线观看 | 成年人在线观看 | 国产精品一二三区 | 日本高清视频在线播放 | 国产成人啪免费观看软件 | 免费观看一级毛片 | 亚洲视频在线观看 | 久久久久久国产精品 | 欧美日韩亚洲一区 | 国产精品久久国产精品99 gif |