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;
有点牵强,好像没从原理下手
基本都可以直接赋值的
