C 语言跑马灯问题求高手解答
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint xms);
void main()
{
while(1)
{
uchar a,num;
a=0xfe;
P1=a;
delay(500);
for(num=0;num<7;num++)
{
a=a<<1;
a=a|0x01;
P1=a;// 这两句为什么不能写成P1=a|0x01;求解
delay(500);
}
a=0x7f;
P1=a;
delay(500);
for(num=0;num<7;num++)
{
a=a>>1;
a=a|0x80;
P1=a;
delay(500);
}
}
}
void delay(uint xms)
{
uint j,k;
for(j=xms;j>0;j--)
for(k=110;k>0;k--);
}
#define uint unsigned int
#define uchar unsigned char
void delay(uint xms);
void main()
{
while(1)
{
uchar a,num;
a=0xfe;
P1=a;
delay(500);
for(num=0;num<7;num++)
{
a=a<<1;
a=a|0x01;
P1=a;// 这两句为什么不能写成P1=a|0x01;求解
delay(500);
}
a=0x7f;
P1=a;
delay(500);
for(num=0;num<7;num++)
{
a=a>>1;
a=a|0x80;
P1=a;
delay(500);
}
}
}
void delay(uint xms)
{
uint j,k;
for(j=xms;j>0;j--)
for(k=110;k>0;k--);
}
P1=a|0x01
这里a值没有改变!
既然把a赋给p1,就去掉a就好
如果换的话,a值那个左移并不是循环左移
谢谢 应该是这样的,换了就没循环
我试过了,完全没有问题。怎么回事?
a=a|0x01;
P1=a;// 这两句为什么不能写成P1=a|0x01;求解
// a=a|0x01;
// P1=a;// 这两句为什么不能写成P1=a|0x01;求解
P1=a|0x01;
问题就有了