对于刚刚的问题。。。 就是a=0x01;a=0x80;a=0x7f;a=0xfe;你是怎么得到后面那两位的啊?

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay (uint);//延时函数
void main()
{
uchar a,b;
while(1)//大循环
{
a=0x01;//给a赋值
for(b=0;b<8;b++)//循环8次,从左到右依次点亮
{
P1=~a;/*a的按位取反值给P1口,如0000 0001按位取反为1111 1110,不可以写反成~a=P1*/
delay (500);//延时0.5秒
a<<=1;//a左移1位,如0000 0001 左移一位後为0000 0010
}
a=0x80;
for(b=0;b<8;b++)//从右到左依次点亮
{
P1=~a;
delay (500);
a>>=1;//a右移一位也可以写成a=a>>1;
}
a=0xfe;
for(b=0;b<8;b++)//从左到右全部点亮
{
P1=a;
delay(500);
a<<=1;
}
a=0x7f;
for(b=0;b<8;b++)//从右到左全部点亮
{
P1=a;
delay(500);
a>>=1;
}
}
}
void delay(uint xms)//延时函数
{
uint i,j;
for(i=xms;i>0;i--)//i=1时为1ms,以此类推
for(j=110;j>0;j--);
}

a=0x7f与a=0x80对应,分别是最高位是0与1;
a=0xfe与a=0x01对应,分别是最低位是0与1。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网