微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机里面为什么不能直接对I/O口的位直接赋值

51单片机里面为什么不能直接对I/O口的位直接赋值

时间:10-02 整理:3721RD 点击:
我 的意思是:我写成:P1^1=0为什么会编译错误呢?
为什么一定要用一个中间变量呢?

你这案例挺 好,我买了个内裤

你用P1.0试试看,也许你写错了呢

好像不能直接写成0吧,要改写成四位的二进制

单片机I/O口在上电后除了P0口都默认为高电平,直接对I/O口进行赋值会与单片机内部产生矛盾。简单地说,可以使用一个变量赋值的原因是变量是会变的量,与单片机本身不冲突!

非常同意楼上的说法,学习了!

同求                              

我也想知道啊为什么啊。

好详细的解释啊!

以前一直不明白,现在终于清楚了,谢谢小编!

汇编里可以直接对位操作啊!
在c语言里P0^0=1;的意思是 P0 异或 0 还要被赋值为1 结束
如果你不想定义一个位的话,也可以这样:
对p0.0置一:P0|=0x01;
对p0.0置零:P0&=0xfe

你要理解^这个符号在C语言的意思,

p0口,的问题吧

P1^1写法不错啊,可以通过编译的。
但是我用protues仿真不能使单片机输出低电平

写成这个试试:
sbit P1.1=P1^1;
P1.1=0;

有点牵强,好像没从原理下手

                                

基本都可以直接赋值的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top