51单片机,用keil4编程:if(P1^(7-i)&&P1^(3-j)==0) 这句话有效吗?
我想用矩阵键盘控制数码管亮,按几亮几;编译没有错误;但不能实现,程序如下:请问其中的if(P1^(7-i)&&P1^(3-j)==0)有效吗?#include<reg51...
我想用矩阵键盘控制数码管亮,按几亮几;编译没有错误;但不能实现,程序如下:请问其中的 if(P1^(7-i)&&P1^(3-j)==0) 有效吗?
#include<reg51.h>
unsigned char code a[4][4]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void Delay10ms(void);
sbit LA=P2^2;
sbit LB=P2^3;
sbit LC=P2^4;
void main()
{
int i,j;
LA=1;
LB=1;
LC=1;
while(1)
{
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(P1^(7-i)&&P1^(3-j)==0)
{
Delay10ms();
if(P1^(7-i)&&P1^(3-j)==0)
P0=a[i][j];
}
}
}
}
}
void Delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
} 展开
#include<reg51.h>
unsigned char code a[4][4]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void Delay10ms(void);
sbit LA=P2^2;
sbit LB=P2^3;
sbit LC=P2^4;
void main()
{
int i,j;
LA=1;
LB=1;
LC=1;
while(1)
{
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(P1^(7-i)&&P1^(3-j)==0)
{
Delay10ms();
if(P1^(7-i)&&P1^(3-j)==0)
P0=a[i][j];
}
}
}
}
}
void Delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
} 展开
3个回答
展开全部
说实话兄弟,真没见过这么写的,因为像p0^0这种I/O端口的定义是在头文件里面已经预定义好的,你这么写可能会有问题,要是想扫描端口的话,不如用switch...case...吧。
再有就是看看电路上面有没有问题,51单片机P0端口作为驱动端口用的话是要加上拉电阻的,你看一下有没有加上
再有就是看看电路上面有没有问题,51单片机P0端口作为驱动端口用的话是要加上拉电阻的,你看一下有没有加上
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-06-28
展开全部
你确定这样不会报错?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询