找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1370|回复: 5
打印 上一主题 下一主题
收起左侧

请给看看这个LED逐个循环的取位问题

[复制链接]
跳转到指定楼层
楼主
ID:201299 发表于 2017-5-24 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教了,初学比着葫芦画瓢写了个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];
                }
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2017-5-24 17:58 | 只看该作者
软件可以,硬件呢?
回复

使用道具 举报

板凳
ID:201299 发表于 2017-5-24 19:23 | 只看该作者
请给看看问题在哪
回复

使用道具 举报

地板
ID:7485 发表于 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,};   //改后的语句
如果将数组的顺序倒过来,就会反向
回复

使用道具 举报

5#
ID:7485 发表于 2017-5-24 20:42 | 只看该作者
噢!忘了,你本来就是低6位循环,我给改的是变成高6位循环。8位循环更简单一些。
回复

使用道具 举报

6#
ID:201299 发表于 2017-5-25 09:20 | 只看该作者
奋战一夜,终于完美解决。其实很简单,只是我不熟悉C,经高人指点,把取位&换成if,大功告成。谢谢大家的关注与帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表