不懂就要问:为什么P1^0就代表P1口的0引脚?

2020-02-02 09:22发布

前几天一学弟问我,怎么点亮一个LED灯
答曰:P1^0=0;
又问:P1^0为什么代表第0引脚?
答曰:@@#¥%…………&,最后勉强的回答:(1)'^'是异或的符号,但是在这里,它是表示位偏移的意思,P1^0就是P10的意思
哎,自己的基础不好,不知道误导学弟没?当初学习51的时候没有深究。各位有没有更好的解释?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
lusson
1楼-- · 2020-02-02 18:24
P1^0=0;
51里这样写不会报错吗?
我记得是要用sbit P1_1 = P1^0;
然后用P1_1 = 0
rclong
2楼-- · 2020-02-02 11:02
 精彩回答 2  元偷偷看……
jiaohaitao
3楼-- · 2020-02-02 13:16
嗯,感觉也是,用"异或"解释不通,应该是编译器默认吧。不过这又出来个问题,编译器怎么分清真正的异或运算和这个默认的位偏移呢?
我认为,一般涉及到这个某端口位的操作都会用到'sbit'这个C51扩展的变量类型。如:sbit P1_0=P1^0;这样就不会把这个'^'当成正常的异或运算
不知道对不对?
jiaohaitao
4楼-- · 2020-02-02 22:48
lusson 发表于 2012-11-15 17:22
P1^0=0;
51里这样写不会报错吗?
我记得是要用sbit P1_1 = P1^0;

呵呵,会报错的,我发帖的时候大意了,还有个基础的问题。在主函数main()前面不能使用 类似P0=0x00;之类的给某端口初始化,但在在主函数main之中就可以了,不懂?
这个也是基础问题,基础不好啊
lusson
5楼-- · 2020-02-03 02:37
这个。。。真不知道该怎么解释
楼下解释下吧。
sco518
6楼-- · 2020-02-03 04:05
 精彩回答 2  元偷偷看……

一周热门 更多>