中易网

51单片机中P3口或P3.0等算是变量吗

答案:3  悬赏:0  
解决时间 2021-03-21 08:48
下面是一个矩阵键盘扫描数码管编码
//如果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;
}
}
最佳答案
所谓变量,本质就是来在内存空间里开辟出的一个或者几个单元,这一个或几个单元里面存放的内容是可以改变的。
而你程序源里的P3,其本质是在 SFR内存空间里开辟出的一个单元,这个单元的内容是可以改变的,所以,P3是个变量,只是与普通变量不同的2113时,P3可以受到外界引脚变5261化而变化,也可以通过程序赋值变化,而普通变量只能是赋值。
你程序里的temp则只是一个变通的变量。
变量,本质就是在内存空间里开4102辟出的一个或者几个单元。
所以,P3和Temp是两个不同的内存空间,所以,当你执行了 Temp = P3后,P3再次变化,不会影响1653Temp,除非再次执行 Temp = P3;
全部回答
p3是0xfe h=
P3=0xfe;初始化函数最好单独定义,而且一般初始化一次就可以,不用放在while(1)大循环里,否则总是给P3赋同一个值,导致temp的值也不能变化。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我买了一瓶恒寿堂的蜜炼柚子茶 但不到一个月
佩戴角膜塑形镜会恢复视力吗?
广东哪里有二手手机进货?
请教伺服驱动器里几个专业单词:reference mo
捷安特,售后服务到底是些啥子,补胎都要收钱
截瘫病人的护理要点?
以下两篇、《假如明天没有太阳》哪一篇是郭敬
长城安心回报是货币基金还是股票基金
你们喜欢自己的男朋友留胡子吗?
刚开始用优步司机,乘客是一个熟人,结果到下
固始2009年的招教什么时候开始报名啊! 知道
海贼王路飞捕头
日本今年七八月份有没有地震或海啸?后天我去
赏金猎人电影间的人物关系尤其是唐嫣和李敏镐
许留山甜品培训哪家好
推荐资讯
先看一张红色海报 再看白墙 墙的边缘什么颜色
武汉有减肥班吗
我要维修主板想知道南桥复位和时钟等测试点在
在百度贴吧上怎么有些图片发不进去
应聘了中国平安湖南长沙分公司的人事助理。这
草鱼吃不吃菊苣
柱、墙石材幕墙如何计算面积
佛能送人吗
谁知道上海新天地酒吧群做地铁几号线?在什么
我点好痣后,伤疤变成了棕色,怎样让它恢复成
石家庄外贸尾货批发哪里有?
三庆不锈钢水管卡压,压力打到多少
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?