流水灯程序问题,第一个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);
                }                                   
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
zy2014
1楼-- · 2019-07-15 19:36
1.两个程序是不是一样啊
2.hc595(temp); 这个函数实现什么功能
lsbasy
2楼-- · 2019-07-16 00:47
有必要加FOR循环吗?
beyouer
3楼-- · 2019-07-16 04:24
zy2014 发表于 2014-8-13 07:07
1.两个程序是不是一样啊
2.hc595(temp); 这个函数实现什么功能

两个函数只改动了一句,我已经标注出来了
hc595()功能就是通过75h595控制另外八个led,通过这个函数向这八个led里面写输的```是一个串行转并行的芯片
ntmusic
4楼-- · 2019-07-16 04:30
 精彩回答 2  元偷偷看……
beyouer
5楼-- · 2019-07-16 08:19
ntmusic 发表于 2014-8-13 11:20
这两个程序不是一样吗?那里有改动?

不好意思``我复制错了```第一个程序应该是``temp = _cror_(temp, 1),第二个就改成temp = P2了``第一句不知道为什么不能移位
beyouer
6楼-- · 2019-07-16 11:32
zy2014 发表于 2014-8-13 07:07
1.两个程序是不是一样啊
2.hc595(temp); 这个函数实现什么功能

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

一周热门 更多>