流水灯程序问题,第一个for最后的值0x7f不动了???

2019-07-15 18:48发布

第一个led是普通P2口的灯,第二个是用74h595控制的,我想问的是,为什么第一个程序走到第二个for循环后P2正常移位,但是temp就是不懂,进调试看了下,temp在第一个for中好好的,在第二个就一直等于第一个for最后的值0x7f不动了,不知道为什么,如果改成第二个程序也就是把temp直接赋值P2移位后的值就能正常滚动```好莫名其妙啊``求大神解答
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);
                }                                   
        }
}


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);
                }                                   
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。