大神帮我看看这个流水灯的程序好吗?莫名其妙的问题

[复制链接]
1497|6
 楼主| beyouer 发表于 2014-8-13 01:37 | 显示全部楼层 |阅读模式
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移位后的值就能正常滚动```好莫名其妙啊``求大神解答
xyz549040622 发表于 2014-8-13 08:19 | 显示全部楼层
说了半天,还是不懂说的什么。。。
 楼主| beyouer 发表于 2014-8-13 10:46 | 显示全部楼层
xyz549040622 发表于 2014-8-13 08:19
说了半天,还是不懂说的什么。。。

就是第二排的led只左移不右移啊```
第一排也就是P2正常移动
第二排的led是通过74h595控制的
dirtwillfly 发表于 2014-8-13 11:52 | 显示全部楼层
估计你的hc595(temp)函数有问题吧
 楼主| beyouer 发表于 2014-8-14 13:55 | 显示全部楼层
dirtwillfly 发表于 2014-8-13 11:52
估计你的hc595(temp)函数有问题吧

如果这个函数有问题为什么第一个for中的左移正常呢?函数是没有任何问题的
NE5532 发表于 2014-8-14 15:44 | 显示全部楼层
因为你的hc595函数传入了不同的参数啊,楼主这种无厘头的问问题方法找到答案的可能性很小,还是读《程序调试黑宝书》好了,在侃单片机版面精华里找。
mmuuss586 发表于 2014-8-14 20:18 | 显示全部楼层
前面的循环和后面的循环,TEMP的处理不一样;

前面移了2次,后面移了1次;
自己好好查查程序哪里出错了;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部