打印
[AVR单片机]

支持AVR的C语言编译器是否提供字节高低位交换的函数?

[复制链接]
3844|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tubie|  楼主 | 2007-12-27 22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
su_mj000| | 2007-12-28 07:34 | 只看该作者

自己编一个不就好了吗?

使用特权

评论回复
板凳
computer00| | 2007-12-28 10:09 | 只看该作者

#define SWAP8(x) (((x)<<4)|((x)>>4))

使用特权

评论回复
地板
tubie|  楼主 | 2008-1-8 19:20 | 只看该作者

以上效率都比较低啊

有没有单条指令就能实现的?用移位的方法时间比较长啊。
谢谢!

使用特权

评论回复
5
zalin| | 2008-1-8 23:07 | 只看该作者

使用IAR的话,可以用__swap_nibbles()实现,需要包含inavr.h

使用特权

评论回复
6
John_Lee| | 2008-1-9 00:26 | 只看该作者

gcc

static inline uint8_t swap (uint8_t val)
{
    asm ("swap %[val] : [val] "+r" (val));
    return val;
}

或者

#define SWAP(v) asm ("swap %[v] : [v] "+r" (v))

使用特权

评论回复
7
tubie|  楼主 | 2008-1-11 14:53 | 只看该作者

多谢楼上几位!

使用特权

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

本版积分规则

135

主题

428

帖子

0

粉丝