打印

C中没有循环移位.真是恼火.

[复制链接]
5004|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bcaiyo|  楼主 | 2010-1-8 15:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bcaiyo 于 2010-1-8 15:40 编辑

在C语言中没有循环移位.真是恼火.

本来只是将一个数组移位. 因为没有循环移位,编译一下代码有点多.主要是耗时间,因为都在定时器里处理的.有什么好办法吗
沙发
bcaiyo|  楼主 | 2010-1-8 16:56 | 只看该作者
有时间要左移几位,本来时间就急,每次还有先将C清0再移一位.

使用特权

评论回复
板凳
yewuyi| | 2010-1-9 08:42 | 只看该作者
直接嵌入汇编。

全局变量前加下划线。

使用特权

评论回复
地板
NE5532| | 2010-1-9 15:44 | 只看该作者
请使用汇编。

使用特权

评论回复
5
headwolf_83| | 2010-1-10 22:53 | 只看该作者
有库,算宏,你可以查一下。都有的。

使用特权

评论回复
6
bcaiyo|  楼主 | 2010-1-11 10:38 | 只看该作者
PICC中没有库吧,我也知道汇编,不过加下划线数据只能定义在BANK0中,其它的BANK没能用.

使用特权

评论回复
7
yewuyi| | 2010-1-11 15:35 | 只看该作者
PICC中没有库吧,我也知道汇编,不过加下划线数据只能定义在BANK0中,其它的BANK没能用.
bcaiyo 发表于 2010-1-11 10:38


没听说有这个限制,你确定如此吗?!

使用特权

评论回复
8
bcaiyo|  楼主 | 2010-1-12 12:10 | 只看该作者
加下划线数据应该是只能在BANK0中.要不就提示
fixup overflow in expression (location 0x7F (0x7F+0), size 1, value 0xBC)
之类的错误.
也不知道是不是其它的地方还有问题.不过感觉还是不爽.

使用特权

评论回复
9
headwolf_83| | 2010-1-12 14:18 | 只看该作者
PICC是吧.PIC16F的指令就没有循环移位的吧,那是有可能没有。18有循环移位的指令,就有库.

使用特权

评论回复
10
meizhigang| | 2010-1-13 15:12 | 只看该作者
#define        right_rotate(data)        (data=((data>>1)|(data<<7)))
#define        left_rotate(data)        (data=((data<<1)|(data>>7)))

使用特权

评论回复
11
su_mj000| | 2010-1-14 05:21 | 只看该作者
10楼的方案看似简洁,但实际上的实现非常低效。

更有效的方法是:

#define right_rotate(data)     data >>= 1; if ( STATUS & 1 ) data |= 0x80
#define left_rotate(data)       data <<= 1; if ( STATUS & 1 ) data++

使用特权

评论回复
12
su_mj000| | 2010-1-14 05:27 | 只看该作者
楼主的抱怨毫无道理,C语言本来就不存在循环移位的操作运算。

使用特权

评论回复
13
tcc8073| | 2010-1-14 18:10 | 只看该作者
PIC单片机使用的时候我使用汇编比较多,因为指令少,用起来直观,AVR,51等指令多的用C比较多,如果真的需要就在C中加汇编,这样很直接

使用特权

评论回复
14
tcc8073| | 2010-1-14 18:10 | 只看该作者
PIC单片机使用的时候我使用汇编比较多,因为指令少,用起来直观,AVR,51等指令多的用C比较多,如果真的需要就在C中加汇编,这样很直接

使用特权

评论回复
15
牛牛特工| | 2010-1-14 20:15 | 只看该作者
用汇编 另外PIC有库 看PICC安装目录 DOC下Manual 但好像没发现有移位这个库 我还没仔细看
PICC18则是安装目录 doc下的manual和plib plib是类似固件库 提供一些现成的外设操作函数 比如定时器什么之类的
正在学习中

使用特权

评论回复
16
牛牛特工| | 2010-1-14 20:32 | 只看该作者
手册中没有发现有移位功能的库函数
不太清楚楼主到底要怎么移位 也并非一定要动用汇编

使用特权

评论回复
17
电子三极管| | 2010-1-14 21:25 | 只看该作者
:handshake

使用特权

评论回复
18
bcaiyo|  楼主 | 2010-1-16 13:40 | 只看该作者
11楼的办法应该更好点.不过如果能在C中加汇编更高效一点

使用特权

评论回复
19
itelectron| | 2010-1-16 19:56 | 只看该作者
这次要MARK下

使用特权

评论回复
20
gfs0521| | 2010-1-21 17:36 | 只看该作者
嵌入汇编

使用特权

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

本版积分规则

13

主题

125

帖子

0

粉丝