标题: 请给看看这个LED逐个循环的取位问题 [打印本页]

作者: zbwww    时间: 2017-5-24 15:22
标题: 请给看看这个LED逐个循环的取位问题
请教了,初学比着葫芦画瓢写了个6LED灯逐个循环的C程序,就是不能按6位输出循环,请给看看这个取位应该怎么写,或者用什么方法解决这个问题。谢谢了!

#include <at89x52.h>
#include <Intrins.h>   


unsigned char code tab[6]={0x01,0x02,0x04,0x08,0x10,0x20,};
unsigned char con;
unsigned int  conss;

void main()
{       
        while(1)
        {
                   if(++conss>55500)
                {
                        conss=0;
                con++;
                        con&=0x07;         //现在是p2口8位循环,这个位怎么取才能使低6位LED循环?        
                       
                        P2=tab[con];
                }
        }
}



作者: yzwzfyz    时间: 2017-5-24 17:58
软件可以,硬件呢?
作者: zbwww    时间: 2017-5-24 19:23
请给看看问题在哪
作者: ahshmj    时间: 2017-5-24 20:35
将这里改一下即可:
//unsigned char code tab[6]={0x01,0x02,0x04,0x08,0x10,0x20,}; //原来的语句
unsigned char code tab[6]={0x80,0x40,0x20,0x10,0x08,0x04,};   //改后的语句
如果将数组的顺序倒过来,就会反向
作者: ahshmj    时间: 2017-5-24 20:42
噢!忘了,你本来就是低6位循环,我给改的是变成高6位循环。8位循环更简单一些。
作者: zbwww    时间: 2017-5-25 09:20
奋战一夜,终于完美解决。其实很简单,只是我不熟悉C,经高人指点,把取位&换成if,大功告成。谢谢大家的关注与帮助。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1