求助51C语言问题各位帮我看看怎么弄
当P3口P3.1和 P3.2都为1时P1.1为0
当P3.1为1时P1.2为0
就是说把P3.1和P3.2接上按键,当都不按下时,P1口都为1,当按下P3.1和P3。2时,P1.1输出0.
当只按下P3.1时P1.2输出0
我用IFP3=0X02;P1^0=0
ELSE if P3=...,..
结果失败了请问该怎么弄
请各位帮帮忙就是怎么能读取P3口的值呢,读单个就直接用P3^1,那读全部的看是不是P3=0c40,怎么弄呢
0x02=2进制00000010
嗯,但是怎么样才能判断输入口P3输入的是不是0x02,然后执行不同动作呢?
哎,论坛太让人心寒了,好几次问题都在百度里不到一天解决在这里没人理
这是个最简单的键盘检测程序,不回复你是因为你只要看一下相关教程就能搞清楚了。
再一个就是你把你写的程序贴出来,大家比较容易帮到你。
我看过键盘扫描程序了但是我用P3=0x....不行只能用P1.1&&等等,我就没弄懂这是为什么
如下,能不能把 if(k1==0&&k2==0)写成if(P3=0X....)?
#include<reg52.h> //52单片机头文件
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
//按键
sbit k1=P3^1;
sbit k2=P3^2;
sbit d1=P1^1;
sbit d2=P1^2;
//延时函数, z=1时,大概延时1ms.
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan()
{
if(k1==0&&k2==0)
{
delay(5); //按键一般要做延时消抖
if(k1==0&&k2==0)
{
d1=0;
}
}
esle if(k1==0&&k2!=0)
{
delay(5);
if(k1==0&&k2!=0)
{
d2=0;
}
}
esle if(k1==1&&k2==1)
{
delay(5);
if(k1==1&&k2==1)
{
P1=0XFF;
}
}
}
void main()
{
while(1)
{
keyscan();
}
}
只要功夫深铁杵磨成针,我自己弄出来了呵呵
