我要用到P1.0-P1.4口这五个IO口作为按键检测使用,(P1.5-P1.7用作其它控制),如果我要用switch语句来定义P1.0-P1.4,该怎么定义呢?可说明详细点呢?
例如:
switch(P1)
{
case 0xfe: Temp = 6; break;// 1111 1110
case 0xfd: Temp = 9; break;// 1111 1101
case 0xfb: Temp = 12; break;// 1111 1011
case 0xf7: Temp = 15; break;// 1111 0111
case 0x7f: Temp = 18; break;// 1110 1111
case 0xbf: Temp = 21; break;// 1101 1111
case 0xdf: Temp = 24; break;// 1011 1111
case 0xef: Temp = 27; break;// 0111 1111
case 0xee: Temp = 30; break;// 1110 1110
case 0xde: Temp = 33; break;// 1101 1110
case 0xbe: Temp = 36; break;// 1011 1110
case 0x7e: Temp = 39; break;// 0111 1110
default: Temp = 10;
}
如果我按以上这么定义,只要P1.5-P1.7口有功能,P1口出来的就是default的值了,有没办法只对前面5位作定义呢?谢谢!
谢谢您详细的回复,由于用if语句太长了,我想用switch可能会简单点喔!
C51 单片机P1.0-P1.4口用作按键输入时,使用switch语句怎么定义?
共5个键分别检测,执行。对端口要求简单,也不会受邻居的影响,或干扰邻居(如你的P1.7端口)。你的问题是用switch() 语句对一个寄存器判断(P1口也是一个寄存器),可以这样:KeyScan(){ unsigned char keyvalue; \/\/定义键盘数据缓存 keyvalue=P1;keyvalue=keyvalue|0x7f; \/\/0为按下,屏...
利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
P1.4--P1.7:单片机的P1口,和反光二极管L1--L4相连,通过单片机的P1.4--P1.7控制,用以显示秒表和时钟的时间变化。(3)功能简介LED显示模块与单片机的连接中,对LED显示模块的读写和字位、字段通道的选择是通过单片机的P2.6、P2.7口完成。其中,P2.6、P2.7口的片选信号需要和读写信号做一定的逻辑操作,以保证字位和...
C51单片机用IO口做为几个按键的控制,现在想用4X4键盘控制,请问下面显示...
这样我们可以先识别K01、K02、K03、K04、K05,若没有按键按下然后再和思路四的设计一样去识别其他按键。但这样存在一个问题,如果IO1配置为0,IO5读到0,那么怎么知道是K51按下还是K05按下呢,这里只需要在程序里做下判断,先判断下是不是K05按下,若不是就是K51,因为按键K01、K02、K03、K04、...
有c51单片机的一些项目代码吗?
4. P05 端口按键:增加;P04端口按键:减少[注:AT89S51使用12M晶振]===*\/\/*#include <AT89x51.h>*\/#include <REGX51.H>#include <string.h>#include<intrins.h>#define LCM_RS P2_0 \/\/定义引脚#define LCM_RW P2_1#define LCM_E P2_2#define LCM_Data P0#define Busy 0x80 \/\/用于检测LCM状态字...
怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用...
L1--L4:发光二极管,通过单片机的P1.4--P1.7控制,用以显示秒表和时钟的时间变化。BUZZER:扬声器,在程序规定的情况下,发出声音,提示计时完毕。74LS373:地址锁存器,将P0口的地址和数据分开,分别输入到2764的数据和地址端口。2764:EPROM,为单片机提供外部的程序存储区。开关K0、K1、K2分别调整秒、分、时。按键RESET:...