求教,关于51单片机的数据操作方式。

2020-01-30 14:12发布

说实话我也不知道该怎么描述。自学的单片机,没有系统的学过,所以…………

要求是这样的。
一个数据有八个位,我把他称为12345678。
现在我需要把其中的某几个“位”做一个“反向”操作。比如将12345678换成43215678。在程序中应该如何操作呢?

QQ截图20130217102520.jpg (101.03 KB, 下载次数: 0) 下载附件 2013-2-21 16:01 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
xiaodao35
1楼-- · 2020-01-30 19:09
 精彩回答 2  元偷偷看……
zhiqingdianzi
2楼-- · 2020-01-31 00:57
2楼说的不明白。去个列子最好
sdf159372008
3楼-- · 2020-01-31 04:32
xiaodao35 发表于 2013-2-21 16:06
低4位保留,高4位移到R0为低4位,查表得到高4位,与原低4位相加!

可以帮忙写一段C语言代码么?
我对查表一直是一知半解……
rjinglan
4楼-- · 2020-01-31 08:53
unsigned char swap_xx(unsigned char x)
{
        unsigned char temp1 = x;//temp1 = 1011 0101
        unsigned char temp2 = 0;
        unsigned char temp3 = 0;
       
        temp2 = temp1 >> 4;// temp2 = 0000 1011
        for(unsigned char i = 0; i < 8 ;i++)
        {
                if(temp2 & 0x01)
                {
                        temp3 |= 0x01;
                }
                temp3 << = 1;
        }//temp3 = 1101 0000
        temp3 = (temp1&0x0f)|temp3;
        return temp3;
}
faduo2012
5楼-- · 2020-01-31 11:26
unsigned char ChanByte(unsigned char DatBye)
{
    unsigned char i, j = 0, k = 0, HightBit, LowBit;

        HightBit = DatBye & 0xf0;
        LowBit   = DatBye & 0x0f;

        for(i = 0; i < 4; i ++)
        {
            j = (HightBit >> (i + 4)) & 0x01;
                k |= j << (7 - i);
        }

        k |= LowBit;

        return k;
}
sdf159372008
6楼-- · 2020-01-31 14:31
 精彩回答 2  元偷偷看……

一周热门 更多>