91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用Bitwise邏輯運(yùn)算符進(jìn)行設(shè)計(jì)

微云疏影 ? 來(lái)源:Digi-Key ? 作者:Digi-Key ? 2022-04-12 15:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下文將介紹 AND (&) Bitwise 邏輯并闡明博文《直接端口的操作案例》中介紹的概念。在該示例中,通過(guò)多個(gè)按鈕和電位計(jì)控制器來(lái)操作由步進(jìn)電機(jī)驅(qū)動(dòng)的攝像頭滑塊。所選的微控制器在許多端口上都分布了有限的 I/O,這是通過(guò)將 I/O 匯編成單一數(shù)字值來(lái)實(shí)現(xiàn)的。

概覽

在軟件中評(píng)估開(kāi)關(guān)輸入時(shí),常常從有用的 if/then 語(yǔ)句開(kāi)始。這對(duì)于獨(dú)立輸入可能很有用,但對(duì)于多個(gè)交互式輸入來(lái)說(shuō)則不然。用 if/then 語(yǔ)句涵蓋所有的按鈕組合,可能會(huì)產(chǎn)生數(shù)百行代碼和每周期中大量的執(zhí)行任務(wù)。實(shí)施 Bitwise 邏輯可以最大限度地減少代碼,提高周期速度。

項(xiàng)目參數(shù)

攝像頭滑塊項(xiàng)目涉及五個(gè)瞬時(shí)接觸 SPST 開(kāi)關(guān),這些開(kāi)關(guān)用于在滑塊驅(qū)動(dòng)電機(jī)的工作過(guò)程中選擇方向和速度。將輸入轉(zhuǎn)換為 SPEED/ENABLE/DIRECTION 輸出。開(kāi)關(guān)按壓操作與多開(kāi)關(guān)按壓識(shí)別功能同時(shí)在軟件中鎖定。

pYYBAGJVJA2AVhXbAACH6rtTBqU965.jpg

AND Bitwise 運(yùn)算符

攝像頭滑塊的主要位運(yùn)算符是 AND。該運(yùn)算器使用 C 語(yǔ)言編程中的安培 (&) 符號(hào),使用圖 1 中的真值表。

poYBAGJVJA2ASw1mAAA0nZ7R75k254.jpg

圖 1:AND Biwise 運(yùn)算符的真值表及示例。(圖片來(lái)源:Don Johanneck)

I/O 組合

為了確立一個(gè)能代表所有開(kāi)關(guān)的單值,把位移至所需的位置,進(jìn)行相加并使用 AND 運(yùn)算符進(jìn)行比較(見(jiàn)圖 2)。另一個(gè)代表極限傳感器當(dāng)前狀態(tài)的值與開(kāi)關(guān)按壓值進(jìn)行比較,以便在達(dá)到極限時(shí)取消輸出。

pYYBAGJVJA2AXA5zAAB06ZELRI0517.jpg

圖 2:攝像頭滑塊開(kāi)關(guān)的配置,位的編譯以及 AND 運(yùn)算符的使用。(圖片來(lái)源:Don Johanneck)

在這種情況下,如果按下任何一個(gè)按鈕或按鈕組合,則 buttonValues 不等于零,并在軟件中通過(guò) limitValue 和查找表進(jìn)行操作,以確定輸出,這與前面提到的直接端口操作博文中描述的方法完全相同。

編程

該程序使用由經(jīng)過(guò)處理的輸入值索引而成的輸出值表。程序員可以通過(guò)改變表數(shù)值來(lái)確定按任何組合的按鈕所產(chǎn)生的動(dòng)作,這樣就不需要改變程序結(jié)構(gòu),否則結(jié)構(gòu)更改可能是令人望而生畏的。在該示例中,圖 3 中的表值代表了單個(gè)、多個(gè)和對(duì)立的按鈕動(dòng)作,不需要單獨(dú) IF 語(yǔ)句(圖 4)。

poYBAGJVJA6ANN_iAABW9Z5ZB98917.jpg

圖 3:由輸入值索引而成的唯一輸出值表。

pYYBAGJVJA6AT_IEAABSe6eZ2PI384.jpg

圖 4:主代碼;讀取數(shù)值和確定輸出。

電機(jī)控制是通過(guò)一個(gè)用來(lái)確定步進(jìn)頻率的定時(shí)器中斷服務(wù)例程以及一種“跳躍”方法實(shí)現(xiàn)的,這種方法通過(guò)僅在 stepGo 變量等于或大于 stepFreq 變量時(shí)設(shè)置電機(jī)控制板上的 STEP 引腳來(lái)簡(jiǎn)化速度控制(圖 5)。較低的電位器值使該例程跳過(guò)了更多的 STEP。

poYBAGJVJA6AafwPAAA2EFniX70951.jpg

圖 5:電機(jī)控制的中斷服務(wù)例程。

結(jié)論:

使用諸如 AND (&) 這樣的位運(yùn)算符可以簡(jiǎn)化代碼,并大大減少解析數(shù)字輸入所需的 IF 語(yǔ)句的數(shù)量。輸出表的建立簡(jiǎn)單而靈活。使用更多的輸出位可以快速擴(kuò)展輸出表,提供更多的輸出選擇。每一個(gè)增加的輸出位都需要在主代碼中增加一個(gè)(或幾個(gè))處理程序。一旦輸出表建立,該表就會(huì)在每個(gè)周期內(nèi)只使用一次,而由主代碼完成繁重的工作。中斷服務(wù)例程在后臺(tái)穩(wěn)定地運(yùn)行,更新電機(jī)控制器的 STEP 引腳,但在主代碼切換電機(jī)控制器的使能 (ENN) 引腳之前,不會(huì)發(fā)生運(yùn)動(dòng)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17823

    瀏覽量

    194307
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3368

    瀏覽量

    124075
  • 邏輯運(yùn)算
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    10281
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語(yǔ)言主要特點(diǎn)

    ,源程序短,因此輸入程序時(shí)工作量少。 2.運(yùn)算符豐富,C語(yǔ)言的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語(yǔ)言把括號(hào)、賦值和強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理,從而使C語(yǔ)言的
    發(fā)表于 01-05 07:41

    布爾表達(dá)式和零值比較處理

    ==0,x!=0(或者x>0)。 C代碼中每次關(guān)系運(yùn)算符的調(diào)用,編譯器都會(huì)發(fā)出一個(gè)比較指令。 如果操作是上面提到的,編譯器便會(huì)優(yōu)化掉比較指令。例如: int aFunction
    發(fā)表于 12-12 06:16

    cw32f030c8實(shí)現(xiàn)點(diǎn)燈

    << 1); 這行代碼使用按位與運(yùn)算符( )對(duì)GPIOA的ODR寄存器的第1位進(jìn)行操作。通過(guò)對(duì)第1位(對(duì)應(yīng)GPIOA Pin 1)進(jìn)行取反操作并與寄存器的其他位進(jìn)行
    發(fā)表于 12-10 08:07

    NL27WZ32雙路2輸入或邏輯門技術(shù)深度解析

    安森美 NL27WZ32雙路2輸入或門是高性能雙路2輸入或門,工作采用1.65V至5.5V的電源,工作在-55°C至+125°C的寬溫度范圍內(nèi)。這些器件具有幾乎為零的靜態(tài)供電電流,降低了系統(tǒng)的功率要求。安森美NL27WZ32雙路緩沖器提供可靠的邏輯運(yùn)算,使得該器件在諸多電子設(shè)計(jì)中成為關(guān)鍵元件。
    的頭像 發(fā)表于 11-25 11:15 ?589次閱讀
    NL27WZ32雙路2輸入或<b class='flag-5'>邏輯</b>門技術(shù)深度解析

    C語(yǔ)言宏拼接運(yùn)算符典型使用

    在C語(yǔ)言中,##運(yùn)算符(稱為[size=16.002px]標(biāo)記拼接運(yùn)算符)用于宏定義中將兩個(gè)標(biāo)記(token)拼接成一個(gè)新的標(biāo)記。它在預(yù)處理階段處理,常用于動(dòng)態(tài)生成變量名、函數(shù)名或類型名,以提高代碼
    發(fā)表于 11-20 08:27

    長(zhǎng)晶科技邏輯芯片產(chǎn)品矩陣介紹

    邏輯IC是用于實(shí)現(xiàn)基本邏輯運(yùn)算和復(fù)合邏輯運(yùn)算的集成電路, 廣泛應(yīng)用于各種電子設(shè)備和系統(tǒng)中,成為現(xiàn)代電子設(shè)備智能化、高效化的關(guān)鍵所在。
    的頭像 發(fā)表于 11-04 17:47 ?1333次閱讀
    長(zhǎng)晶科技<b class='flag-5'>邏輯</b>芯片產(chǎn)品矩陣介紹

    復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)

    中的運(yùn)算符有對(duì)應(yīng)關(guān)系。 結(jié)構(gòu)域負(fù)責(zé)將功能域中的各個(gè)基本功能單元按特定的順序和方式連接起來(lái),通常被實(shí)現(xiàn)為一個(gè)由有限狀態(tài)機(jī)控制的數(shù)據(jù)通路,該結(jié)構(gòu)與C 語(yǔ)言的流程控制語(yǔ)句相對(duì)應(yīng)。 以一個(gè)簡(jiǎn)單的加法組合邏輯為例
    發(fā)表于 10-30 07:02

    第4章 C語(yǔ)言基礎(chǔ)以及流水燈的實(shí)現(xiàn)(4.3 4.4)

    4.3 C語(yǔ)言基本運(yùn)算符 小學(xué)數(shù)學(xué)學(xué)過(guò)加、減、乘、除等運(yùn)算符號(hào)以及四則混合運(yùn)算,而這些運(yùn)算符號(hào)在C語(yǔ)言中也有,但是有些表達(dá)方法不一樣,并且還有額外的
    的頭像 發(fā)表于 10-29 15:30 ?366次閱讀

    SN74AHC1G09 單路2輸入正邏輯與門(開(kāi)漏輸出)技術(shù)解析與應(yīng)用指南

    Texas Instruments SN74AHC1G09/SN74AHC1G09-Q1單路2輸入正與門具有開(kāi)漏輸出配置。該器件以正邏輯執(zhí)行布爾邏輯運(yùn)算Y = A × B或Y = A + B。Texas Instruments SN74AHC1G09-Q1器件符合汽車應(yīng)用
    的頭像 發(fā)表于 08-19 10:42 ?1184次閱讀
    SN74AHC1G09 單路2輸入正<b class='flag-5'>邏輯</b>與門(開(kāi)漏輸出)技術(shù)解析與應(yīng)用指南

    協(xié)議分析儀支持哪些高級(jí)觸發(fā)選項(xiàng)?

    :使用AND、OR、NOT等邏輯運(yùn)算符組合多個(gè)觸發(fā)條件。 示例:捕獲同時(shí)滿足以下條件的流量: TCP端口 == 443(HTTPS) HTTP方法 == POST 數(shù)據(jù)包長(zhǎng)度 > 512字節(jié) 優(yōu)勢(shì):實(shí)現(xiàn)復(fù)雜場(chǎng)景
    發(fā)表于 07-23 14:21

    《ESP32S3 Arduino開(kāi)發(fā)指南》第三章 C/C++語(yǔ)言基礎(chǔ)

    &gt;=大于或等于 邏輯運(yùn)算符&amp;&amp;邏輯“與”運(yùn)算 ||邏輯“或”運(yùn)算 !
    發(fā)表于 06-10 09:20

    基于LockAI視覺(jué)識(shí)別模塊:C++圖像的基本運(yùn)算

    的 OpenCV API。按照以下步驟,您可以輕松地進(jìn)行圖像的基本運(yùn)算: 獲取和設(shè)置像素值:使用 cv::Mat::at 方法訪問(wèn)和修改像素。 邏輯運(yùn)算:使用 cv::bitwise_
    發(fā)表于 05-06 16:56

    基于LockAI視覺(jué)識(shí)別模塊:C++圖像的基本運(yùn)算

    在圖像處理中,理解圖像的基本操作是掌握計(jì)算機(jī)視覺(jué)技術(shù)的關(guān)鍵。本文章將介紹基于LockAI視覺(jué)識(shí)別模塊下OpenCV中圖像的基本運(yùn)算方法,包括像素操作、邏輯運(yùn)算和差值運(yùn)算,并通過(guò)一個(gè)綜合示例展示其實(shí)際應(yīng)用。
    的頭像 發(fā)表于 05-06 16:20 ?756次閱讀
    基于LockAI視覺(jué)識(shí)別模塊:C++圖像的基本<b class='flag-5'>運(yùn)算</b>

    新概念51單片機(jī)C語(yǔ)言教程入門、提高、開(kāi)發(fā)、拓展全攻略

    介紹 1.3 電平特性 1.4 二進(jìn)制與十六進(jìn)制 1.4.1 二進(jìn)制 1.4.2 十六進(jìn)制 1.5 二進(jìn)制的邏輯運(yùn)算 1.5.1 與 1.5.2 或 1.5.3 非 1.5.4 同或 1.5.5 異或
    發(fā)表于 04-15 13:57

    數(shù)字電路—5、邏輯運(yùn)算

    發(fā)表于 03-25 10:17