找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

c51單片機(jī)獨(dú)立按鍵控制一盞燈亮滅編程問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:720329 發(fā)表于 2020-4-4 16:32 來自手機(jī) | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬,如果我不用位定義,改為總線操作方法編寫這個(gè)程序,那么判斷按鍵抬起while(!     )這個(gè)括號(hào)里我該怎么編寫?
附圖片

IMG_20200404_162945.jpg (549.15 KB, 下載次數(shù): 48)

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

使用道具 舉報(bào)

沙發(fā)
ID:720329 發(fā)表于 2020-4-4 17:22 來自手機(jī) | 只看該作者
為什么沒有大神幫我解答一下,各位大神幫忙看看
回復(fù)

使用道具 舉報(bào)

板凳
ID:195446 發(fā)表于 2020-4-4 19:37 | 只看該作者
P3^0XFF 就可以了,不要 !。
回復(fù)

使用道具 舉報(bào)

地板
ID:275826 發(fā)表于 2020-4-4 19:44 | 只看該作者
while(P3!=0xfe );
回復(fù)

使用道具 舉報(bào)

5#
ID:70069 發(fā)表于 2020-4-4 20:26 | 只看該作者
不加while判斷抬起也可以實(shí)現(xiàn)功能了吧。
回復(fù)

使用道具 舉報(bào)

6#
ID:452950 發(fā)表于 2020-4-4 20:28 | 只看該作者
無鍵按下P3為0XFF,按鍵按下P3為0XFE,按鍵抬起P3恢復(fù)到0XFF,所以判斷按鍵抬起可以用while(P3!=0XFF);
意思是直到P3=0XFF時(shí)才跳出循環(huán),也可以寫作while(!P3==0XFF);
回復(fù)

使用道具 舉報(bào)

7#
ID:699194 發(fā)表于 2020-4-4 21:35 | 只看該作者
#include<reg51.h>
#define uchar unsigned char
sbit KEY_S1=P3^0;                   //定義輸入引角
sbit KEY_S2=P3^1;
sbit KEY_S3=P3^2;
sbit KEY_S4=P3^3;

void main(void)
{
  uchar temp;
  P3=0xff;                          //將p3口置成輸入狀態(tài)
  while(1)
  {
  temp=P3;
  switch(temp&=0x0f)           //屏蔽高4位
  {
   case 0x0e:P1=0xe7;break;                 //按下k1,p1端口位3、位4控制的led燈亮
   case 0x0d:P1=0xdb;break;                 //按下k2,p1端口位2、位5控制的led燈亮
   case 0x0b:P1=0xbd;break;                 //按下k3,p1端口位1、位6控制的led燈亮
   case 0x07:P1=0x7e;break;                 //按下k4,p1端口位0、位7控制的led燈亮
   default:P1=0xc3;break;                //不按鍵或同時(shí)按下多個(gè)按鍵時(shí),p1端口位2、位3、位4、位5控制的led燈亮
   }
   }
}

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表