tag 标签: 代码

相关帖子
相关博文
  • 热度 14
    2018-11-19 22:30
    2665 次阅读|
    7 个评论
    快速实现乘、除运算的算法(适用于单片机等计算能力有限的系统)。 ...
    从学习单片机以来,就一直被强调,单片机计算能力有限,进行数据乘、除操作十分耗费资源。 本人最近在研究51操作系统,接触底层比较多,昨晚突发奇想,想要设计基于位操作的乘、除算法。经过仔细思考和规律分析,摸索出一个可行的算法,如果担心、不确定MCU的效率,可供使用。话不多说,直接上代码: //------------------------------------------------------------------ // 功能: 使用位操作实现数据的乘法运算 // 输入: x-乘数 // y-被乘数 // 输出: 无(使用VC++编写,结果会直接打印在屏幕上) //----------------------------------------------------------------- void multiple(int x, int y) { int operate = x, operated = y, result = 0; char i = 0; do { if(operate&0x01) { result += (operated<
  • 热度 1
    2016-6-1 17:26
    282 次阅读|
    0 个评论
              航空电子设备尤其是HMI设备的开发,对安全和开发效率提出了越来越高的要求。Presagis公司开发的VAPS XT作为航空电子HMI设备首选设计开发工具,具备开放的架构和集成逻辑能力,支持从概念设计到嵌入式代码生成阶段。VAPS XT采用面向对象C++开发技术,符合航空DO-178B/C标准。目前已广泛应用于空客、波音、洛马等飞机人机界面高安全可靠性设计。 产品组成         VAPS XT 主要由基础、高级及DO178高级开发包等组成。         VAPS XT Developer作为基础开发工具包,包含了VAPS XT Designer的HMI设计,仿真及代码生成等功能;         VAPS XT Embedded是HMI高级开发工具包,在基础包基础上集成了嵌入式代码生成模块;         VAPS XT-178是DO-178高级开发工具包,在高级包基础上集成了DO-178 CerMode模块。         可选模块包括:VAPS XT ARINC 661模块是用来自定义并创建符合ARINC 661的控件;VAPS XT DOC nGEN模块是用来自动生成设计源文件的文档。 关键特征 •  灵活易用的专业HMI开发环境     ♦   VAPS XT集图形设计与逻辑设计为一体         VAPS XT提供了庞大的图形对象库,用户能够方便地使用或修改图形对象来构建HMI外观。动画和逻辑通过VAPS XT中数据流和状态图表来实现,同时支持导入Rhapsody的架构逻辑模型。     ♦   VAPS XT集开发与验证于一体         VAPS XT编辑器提供集成运行模式,应用程序能够作为整体或部分来进行集成测试。在测试过程中,VAPS XT还提供调试监视窗口和可视化的运行时跟踪信息。记录与回放功能能够自动测试提供极大的帮助。     ♦   多点触控与手势开发框架 •  无缝集成主流工具     ♦   与STAGE、FLIGHTSIM/HELISIM集成,提供飞行仿真,嵌入式训练,测试集成和原型验证的应用。     ♦   与DOORS、Rational ClearCase集成,实现HMI设计的需求分析、配置管理。     ♦   与Rhapsody、Simulink集成,提供HMI逻辑架构设计,以及系统行为建模应用。     ♦   与General Dynamics SoftMap集成,提供数字地图的应用。 •  业界领先的代码生成能力     ♦   CODE nGEN高性能、鲁棒的代码生成器。     ♦   自动生成基于各种图形标准的优化代码。 •  跨平台部署     ♦   支持OpenGL、OpenGL ES和 OpenGL SC。     ♦   能够将原型程序快速部署到不同的平台:Linux、Windows、iOS、Android和Raspberry Pi。 •  符合主流标准     ♦   VAPS XT的开发流程符合DO-178B/C标准。     ♦   VAPS XT提供了符合美国航空设备ARINC661设计标准的驾驶舱显示系统(CDS)开发解决方案。         恒润科技PMT(Process MethodModel Tools)团队致力于为客户提供协同研制服务平台,主要涵盖过程体系咨询、协同研发平台以及基于模型的产品开发咨询。多年来,已为汽车、轨道交通、军工等行业客户提供了多项咨询服务,赢得了客户的广泛认可。
  • 热度 2
    2014-9-28 13:17
    373 次阅读|
    0 个评论
      在上次的文章里,我们提到了DSP编程中程序优化最常使用到的选项问题,主要提到的几个选项包括-O1、-O2、-O3、-O4等等。虽然我们是以DSP为例进行说明的,但是对于其它的处理器,例如ARM、CPU、一些高级的单片机如MSP430、PIC等等和一些编译环境,例如Keil、XilinxSDK等,它们使用的一般的优化选项和基本内容也是大同小异的,即同样的优化级别,优化的目的都是基本一致的。   这些都是基本的操作,如果我们的目的仅仅是优化代码性能或者尺寸的话。如果我们想了解优化过程中产生和使用的更多信息的话,对于DSP本身而言,它的一些其它特性对于程序的运行性能也是非常关键的,此时在基本的优化选项基础上,我们又要注意一下高级的优化选项的影响。例如,某些汇编指令在做诸如FFT变化的时候能够成倍的提高效率,所以开启高级优化选项使得编译器有针对性地生成相关的指令就非常重要。下面我们看一下编译器的高级优化选项有哪些。因为要考虑到指令集等因素,这里以C28x系列为例进行分析。   表1编译器的高级优化选项         大家可以关注一下我们集芯城的微信公众号,微信号是:icjxc520 微信二维码:                                 来源:EEChina
  • 热度 3
    2012-1-20 09:36
    1231 次阅读|
    0 个评论
    要实现在读取模拟数据时同步进行 数字写入 ,可执行如下步骤: 1.      在一个信道增益队列中使用任意给定的条目 2.      取出数字数据,然后对所有未使用的位做掩码处理,方法是通过与127(针对 KPCI-3101 /2/3/4)或3(针对KPCI-3110/16)做逐位的与运算,常数DATA_MASK_3101和DATA_MASK_3110就是为此目的而定义。 The KPCI-3101/2/3/4 有7个动态数字位能够用这种方法设置,因此0到127都是有效的值; The KPCI-3110/16 有两个动态数字位,因此有效的值是0到3。 3.      在选定的条目上(步骤1中所提到的),在左移4位(也就是乘以2^4)后,对增益数据做逐位或运算。这个值在代码中被定义为DIGDATA_MULTIPLIER. 然后通过与 (-2) ^ 15做或运算以设置第15位,这个值在代码中被定义为CHAN_OEM_FLAG. 4.      无论何时,当 KPCI 板卡 遇到信道增益队列中的这个条目(来自步骤3)时,动态数字输出位将会做相应的设置。 接下来的代码实现了这一过程: 'Choose 3110/16 or 3101/2/3/4. Const HAVE_3110_OR_3116 As Boolean = True       '3110/16 have two Dyn Dig outputs. Const DATA_MASK_3110 As Integer = 3       '3101/2/3/4 have 7 Dyn Dig outputs.       Const DATA_MASK_3101 As Integer = 127           ' For boards having unique, product-specific attributes Const CHAN_OEM_SHIFT   As Integer = (-2) ^ 15 Const CHAN_OEM_MASK    As Integer = (1 * CHAN_OEM_SHIFT) ' use std attribs Const CHAN_OEM_DEFAULT As Integer = (0 * CHAN_OEM_SHIFT)     ' use OEM attribs Const CHAN_OEM_FLAG    As Integer = (1 * CHAN_OEM_SHIFT)    ' For boards supporting programmable single-ended vs. differential inputs Const CHAN_SEDIFF_SHIFT   As Integer = 2 ^ 13 Const CHAN_SEDIFF_MASK    As Integer = (3 * CHAN_SEDIFF_SHIFT) ' use static config Const CHAN_SEDIFF_DEFAULT As Integer = (0 * CHAN_SEDIFF_SHIFT)  ' digital input chan Const CHAN_SEDIFF_DIG     As Integer = (1 * CHAN_SEDIFF_SHIFT)  'When merging data, multiply by this Const DIGDATA_MULTIPLIER As Integer = 2 ^ 4      . . . DriverLINXSR1.Sel_chan_N = NumberOfChannels DriverLINXSR1.Sel_chan_format = DL_tNATIVE For i = 0 To NumberOfChannels - 1      DriverLINXSR1.Sel_chan_list(i) = LogicalChannels(i)      DriverLINXSR1.Sel_chan_gainCodeList(i) = _                DriverLINXSR1.DLGain2Code(ChannelGains(i)) _                                        Or (DigitalData(i) * DIGDATA_MULTIPLIER) _                                        Or CHAN_OEM_FLAG Next i 在这个例子中(如前面的例子),代码逐个设置服务请求的单一属性。      第一个属性设置是Sel_chan_N或信道增益列表中条目的数量;      第二个属性Sel_chan_list告诉DriverLINX如何在缓存区中存储这些数据。DL_tNATIVE意味着以硬件指明的格式进行 存储 。      第三个属性将它的每一个值(它是一个数组)设置到当前的信道列表。      第四个设置那些对应信道的增益,设置位15(CHAN_OEM_FLAG),以及设置数据(DigitalData(I) * DIGDATA_MULTIPLIER)(步骤3)。需要重点关注的一点是,DigitalData()数组已经对数据做了掩码处理。也就是说,它已经和代码中其它位置的数据掩码做了与运算。 关于写入动态数字输出,还有一件要注意的事情。无论何时,当信道增益队列中的任何一个增益被设置了CHAN_OEM_FLAG时, DriverLINX 会假设信道增益队列中的每一个增益都被设置了CHAN_OEM_FLAG. 这意味着用户不能在一个增益中不设置CHAN_OEM_FLAG却期望它的数字输出不改变。相反,输出会改变。它会改变到增益码属性的初始值:0. 这意味着用户必须用期望的 数字值 为每个条目编程。没有“继续上一个值”的功能。   了解更多信息 要想了解有关吉时利KPCI-3100系列板卡或者关于数据采集的更多信息,请点击 http://www.keithley.com.cn/products/data/analog 或登录吉时利官方微博 ( http://weibo.com/keithley ) 与专家进行互动 。     数字写入 :http://www.keithley.com.cn/bak_news/prod030105a 存储 :http://www.keithley.com.cn/news/prod100223 数值 :http://www.keithley.com.cn/llm/a/25.html
  • 热度 3
    2011-12-14 19:45
    430 次阅读|
    0 个评论
    有时候,编程人员想要阻止其他用户访问脚本的源代码。在 2600 系列 数据源表中,可以使用二进制发行示例脚本(可以从www.keithley.com网站获得)使得脚本源代码读取困难。不过,在 2600A 系列 数字源码中,可以删除脚本源代码,但仍然保持运行脚本的能力。为了删除脚本源代码,可以将脚本属性设置为零。然后,读取源代码只返回该代码的二进制编码版本。下面就是如何删除 myScript 源代码的实例。其中包括试图找回脚本源代码的结果。 Occasionally, programmers want to discourage other users from accessing the source code of a script. In the Series 2600instruments, the Binary Distribution example script (available onwww.keithley.com) could be used to make it difficult to read thescript source code. In the Series 2600A instruments, however,the source code of a script can be deleted and still maintain theability to run the script. To delete the script source code, set thesource attribute of a script to nil. Afterward, reading the scriptsource code returns only the binary-encoded version of the code.The following is an example of how to delete the source codeof the myScript. The results of attempts to retrieve the scriptsource code are included.   myScript.source = nil print(myScript.source)   2612A 系列数字源表 的返回如下: Series 2612A returns the following:   loadstring(table.concat({    "\27LuaP\0\4\4\4\6\8\9\9\8A}\245\23h\147\9\182\0\0\ 0\1\0\0\0",    "\0\0\0\0\0\2\0\0\0\12\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2",    "\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\4\0\0\0\4\0\0\0\4\0\0",    "\0\0\0\0\0\0\0\0\0\8\4\0\0\0\5smua\0\4\0\0\0\7source\0\4\0\0",    "\0\5func\0\3?\240\0\0\0\0\0\0\4\0\0\0\7leveli\0\4\0\0\0\8mea",    "sure\0\3\0\0\0\0\0\0\0\0\4\0\0\0\6sense\0\0\0\0\0\0\0\0\12\0",  "\0\0\5\0\0\198\0~?I\0\0\0\5\0\0\198\0\127?I\0\0\0\5\0\0?\198",    "\0~@\9\0\0\0\5\0\128\191I\0\0\128\27"}))()       了解更多信息      要想了解有关2600A系列数字源表或者吉时利其他系列数字源表的更多信息,或者咨询全套直接可用的多通道测试系统的价格,请点击https://admin.acrobat.com/_a16893448/p81871518/,或者联系吉时利公司:全国免费电话800-810-1334手机用户请拨打440-650-1334。 登录吉时利官方微博(http://weibo.com/keithley)与专家进行互动。     2600系列数字源表http://www.keithley.com.cn/products/semiconductor/sourcemeasureunits/series2600sys 2600A系列http://www.keithley.com.cn/news/prod080923 2612A http://www.keithley.com.cn/products/semiconductor/sourcemeasureunits/series2600sys/?mn=2612A
相关资源
广告