51单片机流水灯问题
按照攻略119页的代码可以正常实现依次点亮一个led,但是修改后,就变成逐渐点亮每一个灯。想问一下,备注错的那种写法为啥不对了,仿真调试,观察外设p2口是对的状态,下载就不对。代码如下:#include<reg52.h>
#define led P2
typedef unsigned char u8;
typedef unsigned int u16;
void delay_10us(u16 n)
{
while(n--);
}
void main()
{
u8 i;
while(1)
{
for(i=0;i<8;i++)
{
//led=~(0x01<<i); //对
led=0xfe<<i; //错
delay_10us(50000);
}
}
} 应该是向左移位后低位补0,这点忽略了
仿真确实不一定和实际相等
led=0xfe<<i;假如i=1; 1111 1110 <<1 ==1111 1100
~(0x01<<i); 0x01<<1-> 0000 0001 <<1 == 0000 0010 取反后是11111101
页:
[1]