p1口怎么无法赋值,赋值完还全是高电平?求解答
时间:10-02
整理:3721RD
点击:
void KEY(void)
{ uchar v;
P1=0xfC; //将键盘端口未按下按键时,按键1,2输入端口为0
if(P1!=0xfC) //检测是否有按键按下,如果有则hangval必不为0xf8
{
YS(10); //按键去抖动,延时10毫秒
if(P1!=0xfC) //确实有按键按下
{
v=P1;
switch(v)
{
case 0xf9:ZZ(0x01);v=0;break;
case 0xfa:ZZ(0x02);v=0;break;
default:v=0;
}
}
}
}
这是程序,正常不应该是初始仿真p1.0,p1.1是蓝色低电平的吗
{ uchar v;
P1=0xfC; //将键盘端口未按下按键时,按键1,2输入端口为0
if(P1!=0xfC) //检测是否有按键按下,如果有则hangval必不为0xf8
{
YS(10); //按键去抖动,延时10毫秒
if(P1!=0xfC) //确实有按键按下
{
v=P1;
switch(v)
{
case 0xf9:ZZ(0x01);v=0;break;
case 0xfa:ZZ(0x02);v=0;break;
default:v=0;
}
}
}
}
这是程序,正常不应该是初始仿真p1.0,p1.1是蓝色低电平的吗
检测按键的话,对引脚单独操作就是了,sbit key1=P1^0;sbit key2=P1^1;然后判断key1, key2的值去执行相应的操作
这个我也知道,不过按理来说这样也没问题吧,怎么赋值不了?求解答,谢谢
这个我也知道,不过按理来说这样也没问题吧,怎么赋值不了?求解答,谢谢
我也试过单独赋值了,不管怎么都是高电平
试试在p1.0,p1.1和地之间各接一个电阻
单片机赋值很另类的,
?
表示好久不玩51了
帮不上你了哦,兄弟
sbit key1=P1^0;sbit key2=P1^1;
if( key1==0)
{
delay(20);
if( key1==0){while(!key);led=~led}
}就这样的。肯定可以操作的
是不是你其他部分的程序又将这两个引脚置高了,毕竟键盘扫描的时间很短,如果其他程序把引脚置高了,是看不出引脚有置低的,另外按键和电源之间最好有个电阻,不要把引脚直接接电源
我初始已经将P1赋值了,而且其他子程序也没用到P1口
换两个引脚试试,另外定时器的功能有没有开启,这两个引脚好像和定时器的某些功能有关
这个没用到定时器,换个口也试过。