LABVIEW的深入探索之功能强大的位操作能力

发布者:草木知秋最新更新时间:2015-08-24 来源: eefocus关键字:LABVIEW  位操作 手机看文章 扫描二维码
随时随地手机看文章
学习过C语言的朋友们都知道,每当我们谈起C语言的优势时,强大的位操作能力是不能不提的,正是因为C语言具有强大的位操作能力,使得C语言广泛用于开发操作系统和嵌入式应用中。

LABVIEW作为面向具体应用的工程师的编程语言,由于经常需要操作硬件设备寄存器,而寄存器往往都是需要位操作的,因此LABVIEW具有位操作能力是必须的。LABVIEW不仅具有强大的位操作能力,而且操作极其方便,这得益于LABVIEW具有一般编程语言不具备的特殊数据类型--布尔量。

相信经常使用C51和PLC的朋友们都非常熟悉位操作,51单片机具有自己的位寻址区,位寻址区不但可以进行位寻址,也可以按字节、字(双字节)寻址,PLC也是如此。但是很多设备和编程语言是不支持位寻址的,只允许字节或者字的方式,高级编程语言基本如此。

我在下面的文章中大致提及了LABVIEW中的位操作,但是是针对具体问题的,本文希望系统性地讨论一下LABVIEW中的位操作极其特点。

http://www.jsuedc.cn/csxcs366/blog/08-08/153754_5fd57.html

 C语言中的位操作符包括位非(按位取反)、位与、位或和异或四个基本操作符,LABVIEW提供了更多的位操作函数,这体现了LABVIEW语言的面向应用的特点,其实,具备了与、或、非三个基本操作符,其它位操作符都可以由与、或、非操作符组合而成。

LABVIEW提供了独特的布尔数据类型,但是布尔数据实际占用一个字节,也就是说,布尔数据虽然形式上类似于位,但是与位是完全不同的,LABVIEW利用一个字节表示布尔量,如果字节值为0,则表示布尔量为FALSE,如果值为1,则表示布尔量为TRUE。

LABVIEW专门提供布尔函数选板,包括了与、或、非等多种布尔操作函数,如下图所示:

LABVIEW中的布尔函数基本都是多态函数,具有两个非常重要的特点:

1、布尔函数支持布尔量的逻辑运算

2、支持U8、U16、U32等位运算

3、函数的输入端子必须为布尔值或数字。 可以是标量、数字或布尔值数组或簇、数字或布尔值簇数组等。

布尔量的基本逻辑运算非常简单,这里就不具体讨论了。对于多字节的位运算,比如U16、U32等,与U8的位操作非常类似,因此下面的讨论主要是针对U8数据的。

首先我们考虑一下为什么要针对U8而不是I8数据类型那,I8数据的最高位为符号位,因此I8主要是用来表示数值的大小的。我们采用U8进行位操作,U8数据每个位都表示一个布尔值(开关量),每个位的值只有0、1两种选择。U8数据可以表示8个位,不存在符号的问题,实际上我们对U8所代表的值并不关心,我们更关心的是每个位的值是0还是1。

 下面我们开始讨论LABVIEW中常用的位操作。

一、掩码

由于高级语言不支持位寻址,所以针对字节或字中的某一位或者几位进行操作时,必须借助与掩码。掩码是某些位为0,某些位为1的位组合。对于字节的位操作,通常采用下列掩码(MASK)

BIT0----->(MASK) 0X01

BIT1----->(MASK) 0X02

BIT2----->(MASK)0X04

BIT3----->(MASK)0X08

BIT4----->(MASK)0X10

BIT5----->(MASK)0X20

BIT6----->(MASK)0X40

BIT7----->(MASK)0X80

一个字节有8位构成,分别定义为BIT0--->BIT7,每位的掩码是该位为1,其它为0的U8数。

二、如何求取掩码

我们列举了U8的8个掩码,如果是U64,则会有64个掩码,这种情况下采用列举的方法就很麻烦了。很明显,掩码是有规律的,从BIT0开始为1,依次递增2倍,因此可以用下列两种方法求取掩码。

1、计算法

2、移位法

我们知道,乘以2运算实际上就是移位运算,而且更为快捷,这是C语言中常用的方法。

三、置位(打开位)

 对某一位置1,而其它位保持不变,这种操作称作置位(SET)操作,也称作打开位操作(OPEN).

如果需要某位置位,而其它位不变,与该位掩码进行按位或运算即可。下面的例子对BIT3进行置位操作。[page]

 除了使用基本的位操作函数外,LV中还可以使用另外一种独特的方法进行位操作,这是其它编程语言不具备的。我们知道LABVIEW中的布尔数据类型与位非常类似,不过是存储空间不同。LABVIEW中的布尔数组和按字节、字进行位操作极为类似。因此可以先把字节、字转换为布尔数组,进行相应的位操作后在转换回字节、字。如下图所示,实现的是置位操作,与上图效果相同。

布尔数组可以直接转换成U32,因此使用上述方法操作双字更为方便,由于中间经过了多次转换,可能运行效率会低于直接使用位操作。在下面的其它位操作中,将同时演示两种不同的方法。

四、复位(关闭位)

复位操作与置位操作相反,复位操作使某个位的值恢复为0状态,这是默认状态,因此称作复位。

对掩码按位取反,则只有一位为0,其它位均为1,与字节进行与操作,则只有一位复位为0,其它位保持不变。

五、转置位

转置位就是对掩码指定的位进行反转,如果原来为0,则置位为1。如果原来位1,则复位为0。进行转置位操作,最简单的就是进行异或操作。

假如我们还是对BIT3 (掩码0X08)进行操作。由于掩码中的BIT3为1,如果字节中的BIT3为0,异或的结果是不同为1,字节中的BIT3由0成了1。反之,如果字节中的BIT3为1,异或的结果是相同为0,因此BIT3由1变成了0,实现了该位的转置。

由于掩码的其它位为0,根据相同为0,不同为1的原则,其它位会保持不变。

 

 

六、查看某位的值

查看某位的值就非常简单了,只要字节与掩码进行与操作,判断结果是否为0就可以了。如果字节该位为1,与掩码与的结果则不为0。反之,如果字节的该位为0,与掩码与的结果则为0。

除了了对字节中的某一位进行置位、复位、转置和测试位的能力,LABVIEW还支持对无符号数、有符号数的移位操作,这在高级编程语言中是不多见的,充分体现了LABVIEW面向工程应用的特点。

关键字:LABVIEW  位操作 引用地址:LABVIEW的深入探索之功能强大的位操作能力

上一篇:LABVIEW的深入探索之单选按钮
下一篇:LABVIEW的深入探索之LABVIEW能否读写物理内存

推荐阅读最新更新时间:2024-03-30 23:03

labview---字符串自动依次顺序输出
应用场景: 当需要串口自动发送数据时, 如果有好几种不同的指令需要发送时,这里解决将 不同的指令依次顺序发送。 用条件结构来选择,对应条件时的字符串。 使用反馈节点, 自循环累加。 初始值为0. 当自动累加到2时, 如果大于2, 重新从0开始计数。 数值条件对应的顺序为: 0-----------------字符串 000 1-----------------字符串 111 2-----------------字符串 222 ... 这里仅用0,1,2做为实例, 如果有更多,后面依次可以添加。 将这一模块添加到串口发送里去: 这里显示
[测试测量]
<font color='red'>labview</font>---字符串自动依次顺序输出
基于LabVIEW的USB实时数据采集处理系统的实现
  通用串行总线USB(Universal Serial Bus)作为一种新型的数据通信接口在越来越广阔的领域得到应用。而基于USB接口的 数据采集 卡与传统的PCI卡及ISA卡相比具有即插即用、热插拔、传输速度快、通用性强、易扩展和性价比高等优点。    USB 的应用程序一般用Visual C++编写,较为复杂,LabVIEW语言是一种基于图形程序的编程语言,内含丰富的数据采集、数据信号分析分析以及控制等子程序,用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,易于调试、理解和维护,而且程序编程简单、直观。因此它特别适用于数据采集处理系统。利用它编制USB应用程序,把LabVIEW语言和USB总线紧密结合起来的数
[测试测量]
基于<font color='red'>LabVIEW</font>的USB实时数据采集处理系统的实现
基于LabVIEW的数控机床网络测控系统——总体设计 (一)
  2 数控机床网络测控系统的总体设计   2.1 数控机床网络测控系统的设计思路和目标   随着测控网络与信息网络的融合,一方面,人们希望更广泛的使用Internet,试图接入更多的设备,以便在扩充其应用模式的同时享受其带来的更多便利;另一方面,工业化程度的加剧也给测控网络系统的发展提出了新的问题:如何方便地组建一个高效率的、智能化的、能够和其他高层网络互联的测控网络系统。以便于统一集中监控和提高管理决策水平。为了达到这些目的,需要测控网络和信息网络在一定程度上能够共享资源,并且以有效的方式交换信息。所以,从测控网络和信息网络各自的发展来看,它们均已表现出走向对方并相互融合的进步趋势。为了实现这种融合,十分必要研究如何保证它
[测试测量]
基于<font color='red'>LabVIEW</font>的数控机床网络测控系统——总体设计 (一)
利用NI LabVIEW的并行化技术来提高测试的吞吐量
   概览   二十世纪一位很有影响力的建筑设计师Frank Floyd Wright曾经说过:“每个伟大的建筑设计师都是他所处时代的伟大解读者。”这句话同样适用于测试系统设计师们。在他们设计、开发和实现系统的时候,他们必须理解不断进步的技术,如多核处理器、现场可编程门阵列(FPGA)和高速数据总线,如PCI Express等等。通过将这些技术与NI LabVIEW并行化编程软件及NI TestStand编程管理软件结合在一起,测试工程师们可以创建出高性能的测试系统,用于并行化处理、并行化测量,甚至于在生产阶段进行完全并行化的测试。借助于基于PC机的并行化技术,用户可以将测试速度提高到传统仪器的10倍以上。   并行化处理
[测试测量]
利用NI <font color='red'>LabVIEW</font>的并行化技术来提高测试的吞吐量
NI发布大型Virtex-5 LabVIEW FPGA系统
国家仪器(National Instruments;NI)发布2款PXI接口的R系列I/O模块,将针对设计、控制与测试作业,提供进阶的处理效能。这些新模块将可透过现有硬件,并以NI LabVIEW FPGA Module进行图形化程序设计,以执行客制化的在线(Inline)数据分析与精确的I/O控制,适用于特定频率与触发的应用。 由于提升FPGA的容量,使用者可针对R系列模块尽可能提升嵌入式逻辑的总数,并建置如控制表达式、客制处理,与数字通讯协议的复杂功能。针对控制应用,工程师亦可增加同步化控制回路的数量,与其控制应用的复杂度。在动态测试应用中,工程师可透过FPGA扩充测试范围,并将实时响应讯号传送到在测装置(DUT
[嵌入式]
STM32操作详细介绍
前言 //在STM32中,如果我们要使PB0端口输出低电平,可以用如下语句 GPIOB- ODR |= 0 0; //在51单片机中我们是这样的 P0 = 0xff; //总线操作 //还有一种方法 sbit LED1 = P0^0; LED1 = 0;//位操作 在STM32中能不能实现位操作呢,当然是可以的,这种方法我们叫做位带操作。位操作就是可以单独的对一个比特位读和写。 1.位带简介 在STM32中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,另一个是外设区最低 1MB 空间。这两个 1MB 的空间除了可以像正常的 RAM 一样操作外,他们还有自己的位带别名区,位带别名区把这 1MB 的空
[单片机]
STM32<font color='red'>位</font>带<font color='red'>操作</font>详细介绍
LabVIEW 8.0的前面板的改进
  1.将旋钮和转盘锁定在最小值和最大值区间内   在默认状态下,旋钮和转盘的转动无法超出最小值和最大值的区间范围。如果需要禁用锁定功能,可右键单击旋钮或转盘,从弹出的快捷菜单中选择 属性 ,再在打开的对话框中取消勾选 锁定在最小值至最大值之间 复选框。锁定功能可防止旋钮和转盘从最小值跳至最大值,或从最大值跳至最小值。要注意禁用该功能可能引起数值的意外跳变。   如果在LabVIEW 8.2中打开一个以LabVIEW 8.0或更早版本保存的Ⅵ,则锁定是禁用的。若要启用锁定,在上述对话框中勾选 锁定在最小值至最大值之间 复选框即可。   2.树型控件和列表框的多项拖曳   在树形控件和列表框中,允许对多个项一起拖放。右
[测试测量]
MSP430单片机的操作
  MSP430单片机属于RISC(Reduced Instruction Set Computer)型处理器。与普通的51单片机的复杂指令集相区别。普通51单片机执行一条指令最少需要12个时钟周期,而RISC单片机最少仅需1个时钟周期。RISC处理器带来的最大不同就是不能进行位操作,内存寻址只能到字不能到位。打个比方,一栋楼只有一个邮政编码,快递员送东西只能送到楼,显然比送到户要快,但具体是那户人家的,就得想想办法了。 1、写位操作。   对某字节使用 = 进行写操作时,所有位的值都将被改变。如果先将字节读出来,再使用 按位 操作符对原字节进行赋值,则可 等效 对单个位进行操作。   需要特别指出的是,采用 按位 操作并不意味
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved