熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-4-4 16:32
正文摘要:各位大佬,如果我不用位定義,改為總線操作方法編寫(xiě)這個(gè)程序,那么判斷按鍵抬起while(! )這個(gè)括號(hào)里我該怎么編寫(xiě)? 附圖片 |
#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燈亮 } } } |
無(wú)鍵按下P3為0XFF,按鍵按下P3為0XFE,按鍵抬起P3恢復(fù)到0XFF,所以判斷按鍵抬起可以用while(P3!=0XFF); 意思是直到P3=0XFF時(shí)才跳出循環(huán),也可以寫(xiě)作while(!P3==0XFF); |
不加while判斷抬起也可以實(shí)現(xiàn)功能了吧。 |
while(P3!=0xfe ); |
P3^0XFF 就可以了,不要 !。 |
為什么沒(méi)有大神幫我解答一下,各位大神幫忙看看 |
Powered by 單片機(jī)教程網(wǎng)