微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 流水灯程序问题,第一个for最后的值0x7f不动了?

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

时间:10-02 整理:3721RD 点击:
第一个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);
                }                                   
        }
}

1.两个程序是不是一样啊
2.hc595(temp); 这个函数实现什么功能

有必要加FOR循环吗?

两个函数只改动了一句,我已经标注出来了
hc595()功能就是通过75h595控制另外八个led,通过这个函数向这八个led里面写输的```是一个串行转并行的芯片

这两个程序不是一样吗?那里有改动?

不好意思``我复制错了```第一个程序应该是``temp = _cror_(temp, 1),第二个就改成temp = P2了``第一句不知道为什么不能移位

不好意思``我复制错了```第一个程序应该是``temp = _cror_(temp, 1),第二个就改成temp = P2了``第一句不知道为什么不能移位

不加for循环不左移一次又右移回去了?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top