这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ADS 在ADS中要怎么定义一个位呢?

共2条 1/1 1 跳转至

ADS 在ADS中要怎么定义一个位呢?

院士
2006-09-17 18:14:16     打赏
ADS 在ADS中要怎么定义一个位呢?



关键词: 怎么     定义     个位    

院士
2006-12-22 22:43:00     打赏
2楼
问 比如,我设置一个标志位,然后根据它来做事:
在C51在一般做法是这样:在2104中我怎么定义呢?

bit flag;

if(flag) {a=1;}
  else  {a=0;} 1: re:不支持bit,请定义为unsigned int或unsigned char类型。 2: 这个问题从前讨论过,建议有问题要问前,搜索一下旧贴上善若水 发表于 2006-1-4 20:23 Philips ARM ←返回版面    

如何定义位变量?

C51有bit能声明只有一位的变量,很适合一些标志的定义,有效节省了内存空间。在使用了周立功模板的ADS中的c中有没有类似的位变量定义?难道我只是想定义一个标志变量也要定义为uint8?



zy315 发表于 2006-1-5 08:03 Philips ARM ←返回版面    

RE

bit是51机C语言专用的数据类型,ANSI C中哪有这种类型??bit是为适应51机可位寻址的128bit区域。但 标准C语言里有个叫位域,也叫位段的东西,强制访问内存中的单个位,你可以看看谭浩强的那本书的第12章。


eleven11 发表于 2006-1-5 08:23 Philips ARM ←返回版面    

位域会增加代码

其实就是与操作,和你定义某某位什么标志一样的操作
  

computer00 发表于 2006-1-5 08:42 Philips ARM ←返回版面    

位段会增加代码量以及程序运行时间

对于32位的MCU来说,如果为了提高运行速度,有时使用32bit的反而会比使用8bit的运行速度快。使用1bit的也是同样的道理。

ARM的存储空间应该比较,你不必为省这么几个字节较真吧?如果实在是有太多的标志,使用位段也可以。


上善若水 发表于 2006-1-5 09:19 Philips ARM ←返回版面    

请问computer00

“有时使用32bit的反而会比使用8bit的运行速度快。”是不是说把一些原本定义为8字节的变量,定义为32字节,虽然浪费了一定的内存空间,但是能提高运行速度?


computer00 发表于 2006-1-5 09:30 Philips ARM ←返回版面    

是的。

因为在32位CPU上处理8bit的数据,为了保证最后结果的正确性,还要进行一些调整,例如与操作,去掉高24位等。
你可以看看生成的汇编代码就知道了。

当然,对于速度没有严格要求的场合,使用比较小的存储单元是好的做法,尤其是在变量很多时。
但有时为了优化运行速度,不得不牺牲存储空间。


zy315 发表于 2006-1-5 11:16 Philips ARM ←返回版面    

a

楼主问的是如何表示单个位的标志,只是为了改善程序的可读性,并没有关心速度的问题,位域显然是通过与或操作进行的,因为它并不能改变ARM处理器内核的访问存储器的本质操作,像51那种可位寻址的单元在ARM体系中不存在,访问单个位只能通过软件实现,效率势必比硬件直接支持的低。这样做只是增加程序的可读性。
被ZLG置顶的服务条款明确指明不对C语言语法进行技术支持服务,但给我们提供一个交流平台也是好的!


3: 谢谢上善若水 !!! 4: 哈哈……原来还在这么早的时间,我就跟 上善若水 兄有过聊天了俺倒把这事给忘了………………发现最近记性越来越差,不知道大家有什么好的建议没?怎样提高记忆力。。。 5: 51的位真害了几代人...晕菜~~~ 6: 这应该是第一次向圈圈提问,时间过得好快啊但我个人认为,用了μC/OS-II里的事件标志组,可以解决位变量的问题。一直没有深究过,不知大家怎么认为?

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]