下面是一个矩阵键盘扫描数码管编码
//如果P3代表变量,那么就等于给temp赋值0xfe,P3再有变化temp也不会变的,是这样吗?能解释一下吗
#include<reg51.h>
sbit beep=P2^3;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char i=100;
unsigned char j,k,temp,key;
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
display(unsigned char num)
{
P0=table[num];
dula=1; dula=0;
P0=0xc0;
wela=1; wela=0;
}
void main()
{
dula=0; wela=0;
while(1)
{
P3=0xfe;
temp=P3;//如果P3代表变量,那么就等于给temp赋值0xfe,P3再有变化temp也不会变的
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee: key=0 break;
case 0xde: key=1;break;
case 0xbe: key=2;break;
case 0x7e:key=3;break;
}
while(temp!=0xf0)
{
temp=P3; temp=temp&0xf0; beep=0;
}
beep=1; display(key); P1=0xfe;
}
}
51单片机中P3口或P3.0等算是变量吗
答案:3 悬赏:0
解决时间 2021-03-21 08:48
- 提问者网友:房东的猫
- 2021-03-20 23:35
最佳答案
- 二级知识专家网友:堕落奶泡
- 2021-03-21 00:34
所谓变量,本质就是来在内存空间里开辟出的一个或者几个单元,这一个或几个单元里面存放的内容是可以改变的。
而你程序源里的P3,其本质是在 SFR内存空间里开辟出的一个单元,这个单元的内容是可以改变的,所以,P3是个变量,只是与普通变量不同的2113时,P3可以受到外界引脚变5261化而变化,也可以通过程序赋值变化,而普通变量只能是赋值。
你程序里的temp则只是一个变通的变量。
变量,本质就是在内存空间里开4102辟出的一个或者几个单元。
所以,P3和Temp是两个不同的内存空间,所以,当你执行了 Temp = P3后,P3再次变化,不会影响1653Temp,除非再次执行 Temp = P3;
而你程序源里的P3,其本质是在 SFR内存空间里开辟出的一个单元,这个单元的内容是可以改变的,所以,P3是个变量,只是与普通变量不同的2113时,P3可以受到外界引脚变5261化而变化,也可以通过程序赋值变化,而普通变量只能是赋值。
你程序里的temp则只是一个变通的变量。
变量,本质就是在内存空间里开4102辟出的一个或者几个单元。
所以,P3和Temp是两个不同的内存空间,所以,当你执行了 Temp = P3后,P3再次变化,不会影响1653Temp,除非再次执行 Temp = P3;
全部回答
- 1楼网友:一只傻青衣
- 2021-03-21 03:31
p3是0xfe h=
- 2楼网友:不傲怎称霸
- 2021-03-21 02:07
P3=0xfe;初始化函数最好单独定义,而且一般初始化一次就可以,不用放在while(1)大循环里,否则总是给P3赋同一个值,导致temp的值也不能变化。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯