中易网

单片机输入时为什么要先定义接口?比如直接使用P2^0的值为什么不可以而要声明sbit XX=P2^0;?

答案:4  悬赏:70  
解决时间 2021-03-14 16:15
还有,在单片机编程中,把端口赋值给变量一次,以后变量就自动随端口变化了?

我叙述的不是很清楚,第一个问题:比如我直接在主函数里写if(P2^0)这个if总是真的,即使我把P2^0接地;而如果在全局定义sbit X=P2^0;主函数再使用if(X)就可以把P2^0读入,我不太理解。第二个问题按照书上例程和我的尝试,如果在全局定义char i =P2;之后无需再次赋值 i 也会随P2发生变化,就像C++中的引用一样?(使用89S52,Keil C程序用μvision3编译)
最佳答案
我看着这句话“把端口赋值给变量一次”,我读不通,解释不了

很久没弄51了,也没查看编译器里的头文件,我的解释可能有错
本人理解如下:首先,sbit xx=P2^0;这个条语句是编译器帮你完成转换的
你要知道你烧写到芯片中最后的程序代码不是C语言,为什么要这么做很好回答,
这就是规定,别人设计这个编译器的人就是这么规定这个语法的,
那你有没有想过,为什么你写上一句int i,就定义了一个整型变量?
为什么不可以这样定义:整型 i,为什么不能用中文写程序,要用英文?
这是别人规定的,如果你不想这么用,很简单,你自己做一个编译器
不过,等你到了那个水平,不知道你还愿意花时间去做这种事不?(除非工作需要)

你说的变量和端口变化的意思,不知道是我理解的这样:
你的意思是:执行char i =P2;后,i的值就随着端口上电平的改变而改变?
不知道你是不是问这个?
但关于这问题的答案是否定的,什么时候执行了i=P2这条语句,i就是当时P2端口上的电平情况。你要想 i 这个变量随着端口电平的变化而变化,很简单,你经常执行i=P2这句话就行了。就像扫描一样,每隔一段时间,我看一下端口的电平是什么情况。
不知道解释的好不好,如有不当,请见谅
全部回答
不觉得麻烦么
你好! 因为P2^0口程序自己没有自己定义,必须自己声明,但是你可以直接对整个P2口进行操作,如 P2=0xff. 这是因为P2口在include中得reg51.h已经定义好了,你可以把鼠标放在reg51.h上,右键,选择open,查看里面已经定义多得一些引脚和寄存器等东西。 仅代表个人观点,不喜勿喷,谢谢。
P2^0其实是运算式,所以sbit XX=P2^0;是能够成立的,而P2^0=0;这样的语句是不成立的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有一部印度电影讲的是有一个男生组成的合唱组
记者的暗拍器件一般是放在哪里呀?平时看暗访
韩氏专业养生减肥中心怎么样
公积金封存状态,提取需要激活吗
英雄传奇怎么回不到以前的矿区了
座机号码查询机主姓名 01068979401
北京市通州区潞城镇崔家楼村村民委员会怎么去
买结婚钻戒一般要多少钱
与高高兴兴押韵的词语
为什么猫身上的跳蚤只活动在猫头部颈部
中通外直,不蔓不枝 中莲的含义
醇美和天工巧夺这两个词可以用哪些换词法来理
化妆台的一半对着门了影响风水吗
一分利海鲜店我想知道这个在什么地方
宝马325外把手拆掉门子开不开了怎么解决
推荐资讯
麦田坊地址在什么地方,想过去办事
丰盛饭庄这个地址在什么地方,我要处理点事
我的长城C30发动机点火的时候正常运作,但是
iPhone解锁震动一下怎么回事
张皋小学地址好找么,我有些事要过去
etc优点和缺点
淘宝卖家如何取消成人用品经营权?
去过武汉青山新火车站的朋友进来看下,他旁边
谁知道 we will rock you 的爵士鼓鼓谱那有下
圆的反义词,近义词是什么?
地狱少女qq分组
老河口市怎么去啊,有知道地址的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?