void main()
{
unsigned char i, temp;
P2 = 0xfe;
temp = 0xfe;
hc595(0xfe);
while(1)
{
for(i = 0; i < 7; i++)
{
P2 = _crol_(P2, 1);
temp = _crol_(temp, 1);
hc595(temp);
delay(250);
}
for(i = 0; i < 7; i++)
{
P2 = _cror_(P2, 1);
temp = _cror_(temp, 1);
hc595(temp);
delay(250);
}
}
}
void main()
{
unsigned char i, temp;
P2 = 0xfe;
temp = 0xfe;
hc595(0xfe);
while(1)
{
for(i = 0; i < 7; i++)
{
P2 = _crol_(P2, 1);
temp = _crol_(temp, 1);
hc595(temp);
delay(250);
}
for(i = 0; i < 7; i++)
{
P2 = _cror_(P2, 1);
temp = P2;
hc595(temp);
delay(250);
}
}
}
第一个led是普通P2口的灯,第二个是用74h595控制的,我想问的是,为什么第一个程序走到第二个for循环后P2正常移位,但是temp就是不懂,进调试看了下,temp在第一个for中好好的,在第二个就一直等于第一个for最后的值0x7f不动了,不知道为什么,如果改成第二个程序也就是把temp直接赋值P2移位后的值就能正常滚动```好莫名其妙啊``求大神解答 |