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

[复制链接]
6233|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 | 显示全部楼层
请使用汇编。
headwolf_83 发表于 2010-1-10 22:53 | 显示全部楼层
有库,算宏,你可以查一下。都有的。
 楼主| bcaiyo 发表于 2010-1-11 10:38 | 显示全部楼层
PICC中没有库吧,我也知道汇编,不过加下划线数据只能定义在BANK0中,其它的BANK没能用.
yewuyi 发表于 2010-1-11 15:35 | 显示全部楼层
PICC中没有库吧,我也知道汇编,不过加下划线数据只能定义在BANK0中,其它的BANK没能用.
bcaiyo 发表于 2010-1-11 10:38


没听说有这个限制,你确定如此吗?!
 楼主| bcaiyo 发表于 2010-1-12 12:10 | 显示全部楼层
加下划线数据应该是只能在BANK0中.要不就提示
fixup overflow in expression (location 0x7F (0x7F+0), size 1, value 0xBC)
之类的错误.
也不知道是不是其它的地方还有问题.不过感觉还是不爽.
headwolf_83 发表于 2010-1-12 14:18 | 显示全部楼层
PICC是吧.PIC16F的指令就没有循环移位的吧,那是有可能没有。18有循环移位的指令,就有库.
meizhigang 发表于 2010-1-13 15:12 | 显示全部楼层
#define        right_rotate(data)        (data=((data>>1)|(data<<7)))
#define        left_rotate(data)        (data=((data<<1)|(data>>7)))
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++
su_mj000 发表于 2010-1-14 05:27 | 显示全部楼层
楼主的抱怨毫无道理,C语言本来就不存在循环移位的操作运算。
tcc8073 发表于 2010-1-14 18:10 | 显示全部楼层
PIC单片机使用的时候我使用汇编比较多,因为指令少,用起来直观,AVR,51等指令多的用C比较多,如果真的需要就在C中加汇编,这样很直接
tcc8073 发表于 2010-1-14 18:10 | 显示全部楼层
PIC单片机使用的时候我使用汇编比较多,因为指令少,用起来直观,AVR,51等指令多的用C比较多,如果真的需要就在C中加汇编,这样很直接
牛牛特工 发表于 2010-1-14 20:15 | 显示全部楼层
用汇编 另外PIC有库 看PICC安装目录 DOC下Manual 但好像没发现有移位这个库 我还没仔细看
PICC18则是安装目录 doc下的manual和plib plib是类似固件库 提供一些现成的外设操作函数 比如定时器什么之类的
正在学习中
牛牛特工 发表于 2010-1-14 20:32 | 显示全部楼层
手册中没有发现有移位功能的库函数
不太清楚楼主到底要怎么移位 也并非一定要动用汇编
电子三极管 发表于 2010-1-14 21:25 | 显示全部楼层
:handshake
 楼主| bcaiyo 发表于 2010-1-16 13:40 | 显示全部楼层
11楼的办法应该更好点.不过如果能在C中加汇编更高效一点
itelectron 发表于 2010-1-16 19:56 | 显示全部楼层
这次要MARK下
gfs0521 发表于 2010-1-21 17:36 | 显示全部楼层
嵌入汇编
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

125

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部