0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用Bitwise逻辑运算符进行设计

微云疏影 来源:Digi-Key 作者:Digi-Key 2022-04-12 15:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下文将介绍 AND (&) Bitwise 逻辑并阐明博文《直接端口的操作案例》中介绍的概念。在该示例中,通过多个按钮和电位计控制器来操作由步进电机驱动的摄像头滑块。所选的微控制器在许多端口上都分布了有限的 I/O,这是通过将 I/O 汇编成单一数字值来实现的。

概览

在软件中评估开关输入时,常常从有用的 if/then 语句开始。这对于独立输入可能很有用,但对于多个交互式输入来说则不然。用 if/then 语句涵盖所有的按钮组合,可能会产生数百行代码和每周期中大量的执行任务。实施 Bitwise 逻辑可以最大限度地减少代码,提高周期速度。

项目参数

摄像头滑块项目涉及五个瞬时接触 SPST 开关,这些开关用于在滑块驱动电机的工作过程中选择方向和速度。将输入转换为 SPEED/ENABLE/DIRECTION 输出。开关按压操作与多开关按压识别功能同时在软件中锁定。

pYYBAGJVJA2AVhXbAACH6rtTBqU965.jpg

AND Bitwise 运算符

摄像头滑块的主要位运算符是 AND。该运算器使用 C 语言编程中的安培 (&) 符号,使用图 1 中的真值表。

poYBAGJVJA2ASw1mAAA0nZ7R75k254.jpg

图 1:AND Biwise 运算符的真值表及示例。(图片来源:Don Johanneck)

I/O 组合

为了确立一个能代表所有开关的单值,把位移至所需的位置,进行相加并使用 AND 运算符进行比较(见图 2)。另一个代表极限传感器当前状态的值与开关按压值进行比较,以便在达到极限时取消输出。

pYYBAGJVJA2AXA5zAAB06ZELRI0517.jpg

图 2:摄像头滑块开关的配置,位的编译以及 AND 运算符的使用。(图片来源:Don Johanneck)

在这种情况下,如果按下任何一个按钮或按钮组合,则 buttonValues 不等于零,并在软件中通过 limitValue 和查找表进行操作,以确定输出,这与前面提到的直接端口操作博文中描述的方法完全相同。

编程

该程序使用由经过处理的输入值索引而成的输出值表。程序员可以通过改变表数值来确定按任何组合的按钮所产生的动作,这样就不需要改变程序结构,否则结构更改可能是令人望而生畏的。在该示例中,图 3 中的表值代表了单个、多个和对立的按钮动作,不需要单独 IF 语句(图 4)。

poYBAGJVJA6ANN_iAABW9Z5ZB98917.jpg

图 3:由输入值索引而成的唯一输出值表。

pYYBAGJVJA6AT_IEAABSe6eZ2PI384.jpg

图 4:主代码;读取数值和确定输出。

电机控制是通过一个用来确定步进频率的定时器中断服务例程以及一种“跳跃”方法实现的,这种方法通过仅在 stepGo 变量等于或大于 stepFreq 变量时设置电机控制板上的 STEP 引脚来简化速度控制(图 5)。较低的电位器值使该例程跳过了更多的 STEP。

poYBAGJVJA6AafwPAAA2EFniX70951.jpg

图 5:电机控制的中断服务例程。

结论:

使用诸如 AND (&) 这样的位运算符可以简化代码,并大大减少解析数字输入所需的 IF 语句的数量。输出表的建立简单而灵活。使用更多的输出位可以快速扩展输出表,提供更多的输出选择。每一个增加的输出位都需要在主代码中增加一个(或几个)处理程序。一旦输出表建立,该表就会在每个周期内只使用一次,而由主代码完成繁重的工作。中断服务例程在后台稳定地运行,更新电机控制器的 STEP 引脚,但在主代码切换电机控制器的使能 (ENN) 引脚之前,不会发生运动。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17931

    浏览量

    196023
  • 定时器
    +关注

    关注

    23

    文章

    3379

    浏览量

    125217
  • 逻辑运算
    +关注

    关注

    0

    文章

    58

    浏览量

    10322
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    IMX8M Plus 板上部署立体视觉模型 CPU 回退错误 IMX8M Plus问题

    您好,我想在 IMX8M Plus 板上部署立体视觉模型。我已经量化了模型并将其转换为 TFlite 架构,但是当模型部署在模型上时,当存在 NPU 无法处理的算子时,我会遇到分割错误。当模型仅使用 CPU 运行时,没有问题。CPU 不是应该自动处理不受支持的运算符吗?谢谢。
    发表于 04-29 07:23

    SN54LS181、SN54S181、SN74LS181、SN74S181算术逻辑单元/函数发生器详解

    SN54LS181、SN54S181、SN74LS181、SN74S181算术逻辑单元/函数发生器详解 在电子设计领域,算术逻辑单元(ALU)是实现各种算术和逻辑运算的核心部件。今天我们就来详细探讨
    的头像 发表于 04-23 15:15 342次阅读

    74F382 4位算术逻辑单元:功能、特性与应用详解

    Semiconductor公司的74F382 4位算术逻辑单元,它在众多数字电路设计中发挥着重要作用。 文件下载: 74F382PC.pdf 一、产品概述 74F382可以对两个4位字A和B执行三种算术和三种逻辑运算。此外,还有两个额外的选择输入代码可强制功能输出为低电
    的头像 发表于 04-10 14:15 242次阅读

    74F181 4位算术逻辑单元:高速运算的得力助手

    逻辑运算以及多种算术运算。与肖特基ALU相比,它的速度快了40%,功耗仅为其30%,在性能和能耗方面取得了很好的
    的头像 发表于 04-10 14:15 217次阅读

    SDRAM工业动态随机存储器在可编程逻辑控制器(PLC)的应用

    在工业自动化控制系统中,可编程逻辑控制器(PLC)承担着数据采集、逻辑运算与执行控制的核心任务。随着生产现场对实时性和稳定性的要求不断提高,PLC对内部存储器的性能也提出了更严苛的需求。其中
    的头像 发表于 04-07 14:10 240次阅读

    十进制计算机算术运算器“加法器”专利申请解析

    。针对每个逻辑值的运算,不再依赖于复杂的十值或N值逻辑门,而是通过对空间上并行的多条线路,直接利用现有的二值逻辑元件进行编码连接,从而实现十
    的头像 发表于 03-25 09:41 895次阅读
    十进制计算机算术<b class='flag-5'>运算</b>器“加法器”专利申请解析

    C语言主要特点

    ,源程序短,因此输入程序时工作量少。 2.运算符丰富,C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值和强制类型转换等都作为运算符处理,从而使C语言的
    发表于 01-05 07:41

    cw32f030c8实现点灯

    << 1); 这行代码使用按位与运算符( )对GPIOA的ODR寄存器的第1位进行操作。通过对第1位(对应GPIOA Pin 1)进行取反操作并与寄存器的其他位进行
    发表于 12-10 08:07

    C语言宏拼接运算符典型使用

    在C语言中,##运算符(称为[size=16.002px]标记拼接运算符)用于宏定义中将两个标记(token)拼接成一个新的标记。它在预处理阶段处理,常用于动态生成变量名、函数名或类型名,以提高代码
    发表于 11-20 08:27

    长晶科技逻辑芯片产品矩阵介绍

    逻辑IC是用于实现基本逻辑运算和复合逻辑运算的集成电路, 广泛应用于各种电子设备和系统中,成为现代电子设备智能化、高效化的关键所在。
    的头像 发表于 11-04 17:47 1545次阅读
    长晶科技<b class='flag-5'>逻辑</b>芯片产品矩阵介绍

    复杂的软件算法硬件IP核的实现

    中的运算符有对应关系。 结构域负责将功能域中的各个基本功能单元按特定的顺序和方式连接起来,通常被实现为一个由有限状态机控制的数据通路,该结构与C 语言的流程控制语句相对应。 以一个简单的加法组合逻辑为例
    发表于 10-30 07:02

    第4章 C语言基础以及流水灯的实现(4.3 4.4)

    4.3 C语言基本运算符 小学数学学过加、减、乘、除等运算符号以及四则混合运算,而这些运算符号在C语言中也有,但是有些表达方法不一样,并且还有额外的
    的头像 发表于 10-29 15:30 504次阅读

    SN74AHC1G09 单路2输入正逻辑与门(开漏输出)技术解析与应用指南

    Texas Instruments SN74AHC1G09/SN74AHC1G09-Q1单路2输入正与门具有开漏输出配置。该器件以正逻辑执行布尔逻辑运算Y = A × B或Y = A + B。Texas Instruments SN74AHC1G09-Q1器件符合汽车应用
    的头像 发表于 08-19 10:42 1392次阅读
    SN74AHC1G09 单路2输入正<b class='flag-5'>逻辑</b>与门(开漏输出)技术解析与应用指南

    协议分析仪支持哪些高级触发选项?

    :使用AND、OR、NOT等逻辑运算符组合多个触发条件。 示例:捕获同时满足以下条件的流量: TCP端口 == 443(HTTPS) HTTP方法 == POST 数据包长度 > 512字节 优势:实现复杂场景
    发表于 07-23 14:21

    《ESP32S3 Arduino开发指南》第三章 C/C++语言基础

    &gt;=大于或等于 逻辑运算符&amp;&amp;逻辑“与”运算 ||逻辑“或”运算 !
    发表于 06-10 09:20