C51中变量取反 为什么不能赋值给另一个变量或者赋值给I/O口
例如 P2口接发光二极管 用一下程序让发光二极管闪烁
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;
void delay(uint k)
{
uint i;
for(i=0;i<k;i++);
}
void main()
{
while(1)
{
i=~i;
P2=i;
delay(30000);
}
}
这样做 发光二极管可以闪烁
为什么改成下面的就不可以闪烁了
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;
void delay(uint k)
{
uint i;
for(i=0;i<k;i++);
}
void main()
{
while(1)
{
//i=~i;
P2=~i;
delay(30000);
}
}
也就是说直接给P2口送取反后的变量i
还有下面这个情况也不可以
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i,k;
void delay(uint k)
{
uint i;
for(i=0;i<k;i++);
}
void main()
{
while(1)
{
k=~i;
P2=k;
delay(30000);
}
}
吧取反后的变量i的值赋给K 然后在吧K的值赋给P2口
难道说变量取反只能赋值给自身 例如(i=~i 这个是可以取反的 ,上面的情况 单步调试 跟踪变量 没看到变量取反) 这是为什么那