解释
P2口的8种状态: 1111 1110 1111 1101 1111 1011 1111 0111 1110 1111 1101 1111 1011 1111 0111 1111
而<<、>>符号移动的时候自动填0,而不是1,所以这两个符号不能直接作用于P2 但是这两个符号可以直接作用于下面的8种状态 0000 0001 0000 0010 0000 0100 0000 1000 0001 0000 0010 0000 0100 0000 1000 0000 观察这八种状态与上面的八种状态能看得出来就是取反
所以可以以通过操作下面这八种状态然后取反赋值给P2
代码
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--){
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main(){
unsigned char flag=0x01;
P2=~flag;
while(1){
if(P3_1==0){
flag=flag>>1;
if(flag==0x0){
flag=0x80;
}
P2=~flag;
Delay(500);
}
if(P3_0==0){
flag=flag<<1;
if(flag==0x0){
flag=0x01;
}
P2=~flag;
Delay(500);
}
}
}
|