| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 417 人关注过本帖
标题:[求助] 一个位操作问题
取消只看楼主 加入收藏
litl123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-1
收藏
 问题点数:0 回复次数:3 
[求助] 一个位操作问题
单片机程序,定义一个数组 char SEGS[32] 其中前180个位(bit)为有效位,最后4个无效。在这180个位中随机7个位组成一个7段式的led数字8。共有14个led数字,请教高手有什么好办法对这些数字赋值,谢谢!

笨办法是:
//                 a ,b ,c ,d ,e ,f ,g
char number1[6] = {xx,xx,xx,xx,xx,xx,xx}  //xx 是在SEGS[]里的bit的位数


void set_seg(unsigned char seg_number)
{
    unsigned char seg_byte = 0,seg_bit = 0,data = 0;
    seg_byte = seg_number/8;
    seg_bit  = seg_number%8;
    data |= 1<<seg_bit;
    SEGS[byte] = data;
}

void clear_seg(unsigned char seg_number)
{
    unsigned char seg_byte = 0,seg_bit = 0,data = 0;
    seg_byte = seg_number/8;
    seg_bit  = seg_number%8;
    data &= ~(1<<seg_bit);
    SEGS[byte] = data;
}

void set_number1(unsigned char number)
{
    switch (number)
    {
        case 0:
        {
            set_seg(number1[0]);
            clear_seg(number1[1]);
                    .
                    .
                    .
                    .
                    .
            set_seg(number1[6]);
        }break;
        case 1:
        .
        .
        .
        case 9   
    }   
}

思路:有没有一个办法可以把任意的几个位组成一个数组,就像内存映射那样打乱顺序,再按要求组合??
搜索更多相关主题的帖子: 单片机程序 
2015-11-30 18:30
litl123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-1
收藏
得分:0 
位置是给出的而且固定,和其它程序无关,初始化有两种,一是0,二是不显
2015-11-30 19:28
litl123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-1
收藏
得分:0 
realpos += bitbeg == 0;  这句是什么意思?
2015-12-01 13:25
litl123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-1
收藏
得分:0 
谢谢 azzbcc 的指导
2015-12-04 10:38
快速回复:[求助] 一个位操作问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016240 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved