打印
[AVR单片机]

求教一个C语言问题

[复制链接]
1966|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
suoma|  楼主 | 2009-12-22 22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
Dai_Weis| | 2009-12-23 21:43 | 只看该作者
简单的方法用For或者用移位来操作

使用特权

评论回复
板凳
wf395962475| | 2009-12-25 15:39 | 只看该作者
#include <intrins.h>

void _crol_ (void)  {
  char a;
  char b;
   a = 0xf2;
   b = _crol_(a,4);  }

  你想移几位就移几位

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
suoma + 1
地板
znmcu| | 2009-12-25 16:01 | 只看该作者
crol只是循环移位,并不改变字节的头尾顺序。

/******************************************************************
- 功能描述:将一个字节进行反向,如0x55-->0xaa
- 隶属模块:公用函数模块
- 函数属性:外部
- 参数说明:a:待反向的源字节
- 返回说明:反向后的字节
- 注:此函数由振南编写,采用循环方式对字节反向。
******************************************************************/

unsigned char reverse (unsigned char a)
{
unsigned char temp=0,i=0;
for(i=0;i<8;i++)
{
  if(a&(0x80>>i)) temp|=(1<<i);
}
return temp;
}

以上代码,请参考

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
suoma + 1
5
znmcu| | 2009-12-25 16:10 | 只看该作者
unsigned char code rev_temp[256]=
{
0x0,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,
0x8,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8,
0x4,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,
0xc,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,
0x2,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,
0xa,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa,
0x6,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6,
0xe,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,
0x1,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,
0x9,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,
0x5,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,
0xd,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,
0x3,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3,
0xb,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb,
0x7,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7,
0xf,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff
};

/******************************************************************
- 功能描述:将一个字节进行反向,如0x55-->0xaa
- 隶属模块:公用函数模块
- 函数属性:外部
- 参数说明:a:待反向的源字节
- 返回说明:反向后的字节
- 注:此函数由振南编写,采用查表方式对字节反向。
******************************************************************/

unsigned char reverse(unsigned char a)
{
return rev_temp[a];
}

使用特权

评论回复
6
lovelyegle| | 2009-12-26 21:51 | 只看该作者
楼上给的例子不错

使用特权

评论回复
7
suoma|  楼主 | 2009-12-31 22:11 | 只看该作者
两位给的解答很棒!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

714

帖子

5

粉丝