打印
[AVR单片机]

AVR要是能位置位多好

[复制链接]
3291|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
masashinakayama|  楼主 | 2007-9-9 16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
HWM| | 2007-9-9 20:09 | 只看该作者

要这样只有MCS-51了,它有一个位处理器.

使用特权

评论回复
板凳
xwj| | 2007-9-9 20:16 | 只看该作者

谁说的啊?

LZ,你听谁说AVR不能位操作的啊?

而且51也不是随便什么位都能按位处理的

使用特权

评论回复
地板
HWM| | 2007-9-9 20:26 | 只看该作者

LS:是结构决定的,这个谁说了都没用。

使用特权

评论回复
5
HWM| | 2007-9-9 21:23 | 只看该作者

另外有必要在此多说几句。

在AVR中也有几条“类位设置”指令,指令中有操作字节地址和相应要设置的位的“位置”作为操作数,这类似于将位设置操作融入一条指令,但必须以字节地址加位“位置”的方式来指定。

反观MCS-51,它有一个统一编址的位可寻址空间,其操作单位是“位”,并配置有相应的位操作指令(以位地址作为操作数),而这些得益于MCS-51内有一个布尔处理器。

如果LZ认为用

             OP byte,bit

方式去设置位值,那AVR恰有此命令

而如果LZ想用

            OP bit

方式去进行位操作,乃至进一步想进行“位”布尔处理,据我了解就只有MCS-51了。

使用特权

评论回复
6
dcp| | 2007-9-10 00:21 | 只看该作者

AVR的位操作更好用

使用特权

评论回复
7
ayb_ice| | 2007-9-10 08:05 | 只看该作者

PIC也可以啊,而且比51的好,多...

使用特权

评论回复
8
粉丝| | 2007-9-10 10:02 | 只看该作者

8楼的水平通常是软硬件都搞,并且经常要移植人才会这样的

考滤得这么周到。

使用特权

评论回复
9
Autine| | 2007-9-10 10:08 | 只看该作者

CVAVR

使用特权

评论回复
10
donkey89| | 2007-9-10 16:53 | 只看该作者

真是死脑筋呀,中毒真深呀

真是死脑筋呀,自己写个宏还不是一样?PORTA|_BV(1)很难吗?也就是一条指令

使用特权

评论回复
11
AIRWILL| | 2007-9-10 19:09 | 只看该作者

有道理

    不过也要说说缺点, AVR 的位操作只能针对寄存器和特定的一些 IO 寄存器. 对 memory 就不行, 这也许是 RISC 的问题吧.
    这一点, 对于很多应用来说, 不能不说是个遗憾.

    因为, 很多的状态位都会被编译器分配到 SRAM 中去(因为大部分都是全局的),而非单指令的位操作会存在很多意想不到的问题. 不过这问题在 ARM  CortexM3 中得到解决.

使用特权

评论回复
12
宇宙飞船| | 2007-9-11 08:30 | 只看该作者

ARM CortexM3 算个P!!分支时间可计算吗?根本不可能精确

计算!!又没有DIP封装(没见到过),更加没有8个脚的封装!ARM CortexM3 跟8位机的可精确计算的时间控制能力根本就没法相提并论!
AVR的 RAM 多的是,要速度的话干嘛一定要用置位指令,正式的程式设计的菜鸟一个!想在这里做ZLG的托!又想把这里的AVR菜鸟们当成是白痴?

使用特权

评论回复
13
yewuyi| | 2007-9-11 15:08 | 只看该作者

AVR要是能直接下金蛋多好……

使用特权

评论回复
14
lixun00| | 2007-9-11 15:34 | 只看该作者

呵呵...下金蛋,ls要求太高了,俺只要下银胆就可以

使用特权

评论回复
15
avrvi| | 2007-9-13 16:55 | 只看该作者

用CVavr啊

支持 porta.2 这样的定义

使用特权

评论回复
16
AIRWILL| | 2007-9-14 18:58 | 只看该作者

这辈子, 第一次被人说成是托

不由得很气愤!

ARM CortexM3 就 ZLG 有吗? 干吗不说我成 arm 的托?! 
这里是技术讨论区, 有什么说什么, 不要这么神经过敏!
单指令修改存储器空间中某个位的技术的芯片, 确实不多啊 

使用特权

评论回复
17
DEF| | 2007-9-24 13:16 | 只看该作者

老鸟了还在说这些啊!!

大哥!
我不是第一天认识你了!
还在感慨这个问题啊!

使用特权

评论回复
18
masashinakayama|  楼主 | 2007-9-24 18:49 | 只看该作者

挖个坑玩玩

使用特权

评论回复
19
AIRWILL| | 2007-9-24 22:39 | 只看该作者

呵呵, 才不用挖坑坑呢

见笑见笑. 呵呵

使用特权

评论回复
20
avrx007| | 2007-9-28 21:37 | 只看该作者

办法还是有的。

虽然AVR只有部分IO才可以位操作,不过速度高,SRAM多byte当bit用,问题不大

C的全局变量一般来说不能直接位操作。

不过GCCAVR依然有办法,锁定一个寄存器即可。
register uint8_t gMainState asm("r20");

使用特权

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

本版积分规则

317

主题

1957

帖子

4

粉丝