矩阵键盘扫描-----反转法
#include<reg52.h>#define uint unsigned int
#define uchar unsigned char
uchar low,high,temp;
void delay(uint t);
void main()
{
while(1)
{
P3=0x0f;
if(P3!=0x0f)
{ delay(100);
low=P3&0x0f;
P3=0xff; //What the hell ??????
P3=0xf0; //如果没了上面那行,此处用 P3=low|0xf0 什么的 同样失效。。。。
high=P3&0xf0;
temp=high+low;
switch(temp)
{
case 0xd7:P0=0x3f;break; //0
case 0xeb:P0=0x06;break; //1
case 0xdb:P0=0x5b;break; //2
case 0xbb:P0=0x4f;break; //3
case 0xed:P0=0x66;break; //4
case 0xdd:P0=0x6d;break; //5
case 0xbd:P0=0x7d;break; //6
case 0xee:P0=0x07;break; //7
case 0xde:P0=0x7f;break; //8
case 0xbe:P0=0x6f;break; //9
}
}
}
}
void delay(uint t)
{
while(t--);
}
-----------------------------------------------------------------------------------------------------------------------
首先 这个程序是正确的,虽然有些地方不足,但是是可以正常工作的。。。
主要是红 {MOD}字体那 就是让我纠结了好久的一个问题,实在是想不出来了 所以来论坛里求助 希望大家能帮帮忙 看一下也行 谢谢了 :)
因为实在是太奇怪了,
如果没有他,
如果我将她该为0x0f;那么高四位(P3.4~P3.7)相当于失效。
如果将他改为0xfe;那么P3.0口就失效。。。
总之就是,这个P3端口必须要置1一下 后面才能使用。
但是从C语言上,对于下面一条语句来说,他是多余的呀,难道和硬件有关吗???
如果有关的话 那这句话究竟起着什么作用呢???
我是在
仿真软件上进行测试的 也没有提示有错误
一周热门 更多>