色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機C語言位操作的編程實現:置位和清零

玩轉嵌入式 ? 來源:玩轉嵌入式 ? 2023-11-28 09:35 ? 次閱讀

前面介紹了C語言編程的6種位操作,分別是按位與“&”、按位“或|”、按位取反“~”、異或“^”、左移“<<”以及右移“>>”。這6種位操作在操作單片機寄存器時非常方便,尤其是對寄存器的某一位清零或者置位,而不影響其他位。

43af83c6-8d7c-11ee-939d-92fbcf53809c.png

單片機端口方向配置寄存器

以8位單片機為例,如果要將第1位設置為輸出,而其他7位保持不變,根據寄存器說明只需要將第1位配置為1即可。這里就要用到“置1”的C語言語句。直接操作寄存器時,可以直接通過置1和清0來將某一個bit設置為1或者0,如下圖所示。

43cda2fc-8d7c-11ee-939d-92fbcf53809c.png

置1和清0位操作

1."置1"C語言語句

//Var |= ( A<

其中Var是變量,B是從第幾位開始,而A則是要修改的位數,操作結果是置1。讀法為:將Var從第B位開始的連續A位置1,其他保持不變。

2.“置1”C語言語句推導

假設將Var中從第1位開始的3位置1,那么C語句的寫法應該為:Var |= (0x7<<1);那么推導過程如下:

Var = Var | ( 0x07<<1 );//等效寫法
0x07:        0000 0111
0x07<<1: 0000 1110//可以看到第1、2、3位變為了1;
//Var做按位或運算時,只要有1則結果為1

由上面的推導可以看到,(0x07<<1)從第1位開始的連續3位已經變為了1,再跟變量Var做或運算時,這三位就完成了置1操作,而其他位不受影響。

3."清0"C語言語句

//Var &= ~ ( A<

其中Var是變量,B是從第幾位開始,而A則是要修改的位數,操作結果是清0。讀法為:將Var從第B位開始的連續A位清0,其他保持不變。

按位或的真值表參考如下:

輸入A 0 0 1 1
輸入B 0 1 0 1
輸出 0 1 1 1

4.“清0”C語言語句推導

假設將Var中從第1位開始的3位清0,那么C語句的寫法應該為:Var &=~ (0x7<<1);那么推導過程如下:

Var = Var &(~( 0x07<<1 ));//等效寫法
0x07:              0000 0111
0x07<<1:        0000 1110//可以看到第1、2、3位變為了1;
~( 0x07<<1 ): 1111 0001//按位取反,可以看到第1、2、3位變為了0;
//Var做按位與運算時,只要有0則結果為0

由上面的推導可以看到,~(0x07<<1)從第1位開始的連續3位已經變為了0,再跟變量Var做與運算時,這三位就完成了清零操作,而其他位不受影響。

按位與的真值表參考如下:

輸入A 0 0 1 1
輸入B 0 1 0 1
輸出 0 0 0 1

5.“清0”和“置1”總結

按位操作的這種用法在初次接觸時非常的難理解,需要反復練習才能熟悉,下面將置1和清0做了總結,以方便大家記憶。

按位操作的“置1”規律如下圖所示:

43fbaec2-8d7c-11ee-939d-92fbcf53809c.png

↑ 按位操作的“置1”規律

按位操作的“清0”規律如下圖所示:

440ee370-8d7c-11ee-939d-92fbcf53809c.png

↑ 按位操作的“清0”操作






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634690
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120235
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136701

原文標題:單片機C語言,位操作的編程實現:置位和清零,GPIOx_CRL |= (0x01<<1)

文章出處:【微信號:玩轉嵌入式,微信公眾號:玩轉嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    清零

    在51程序中為什么要進行軟件清零
    發表于 11-17 17:50

    8單片機C語言編程為什么可以實現16數據的加減

    8單片機C語言編程為什么可以實現16數據的加減
    發表于 05-25 11:06

    請問dsp28035怎么通過匯編語言對GPIO口清零

    GpioDataRegs.GPASET.bit.GPIO11=1;對GPIO11口清零,請問對于28035這款芯片,怎么用匯編語言實現上述清零
    發表于 08-22 10:51

    單片機C語言編程三部(8、16、32

    本資料分別為8單片機C語言編程:基于PIC1616單片機
    發表于 02-13 18:23

    AVR單片機的的清零是如何來實現的?

    AVR單片機的的清零是如何來實現的?AVR單片機與51
    發表于 07-08 07:08

    AVR單片機的端口操作方法

    一、常規方法AVR單片機的各類教材或編程應用參考資料,對介紹的端口操作方法不外乎宏定義及整體和某個常量相或、相與來實現某一單個位狀態的改變
    發表于 07-13 08:11

    C語言操作在STM32f1單片機編程的具體應用 精選資料推薦

    C語言操作在STM32f1單片機編程的具體應用前言:熟練掌握
    發表于 07-14 07:31

    matlab 清零,單片機如何清零寄存器某一操作方法解析 精選資料推薦

    描述單片機如何清零寄存器就是把該位置1,清零就是把該位置0硬件自動清零就是當某種條件成立,硬
    發表于 07-15 08:47

    如何實現AVR單片機清零

    如何實現AVR單片機清零
    發表于 11-01 07:53

    AVR單片機的端口操作方法解析

    AVR單片機的端口操作方法解析來源:未知?作者:工程師周亮?2018年11月22日 16:07?3708次閱讀正在上傳…重新上傳取消?0一、常規方法AVR單片機的各類教材或
    發表于 11-23 08:35

    講解操作單片機開發中的一些實用技巧

    導讀C 語言單片機開發中的必備基礎知識。我們這里就列舉部分STM32學習中會遇見的C 語言基礎知識點1.
    發表于 01-24 08:18

    總結一下單片機清零的邏輯操作方法

    總結一下單片機操作清零的方法
    發表于 02-25 06:24

    單片機C語言編程中“”的保存方案

    引言   在現有的教課書及相關文章中,都難得提到在單片機C語言編程中對于自定義“”的狀態進行保存的理念。   當
    發表于 07-06 11:44 ?2265次閱讀

    32單片機C語言編程:基于PIC32圖書電子版

    《32單片機C語言編程:基于PIC32》介紹32單片機
    發表于 08-23 16:43 ?0次下載

    32單片機C語言編程:基于PIC32

    介紹32單片機PIC32的C語言編程技術,引導讀者循序漸進地掌握基于PIC32單片機的嵌入式控
    發表于 08-23 16:50 ?5148次閱讀
    主站蜘蛛池模板: 沈芯语麻豆0076 视频| 无限资源在线观看播放| 涩涩涩涩爱网站| 亚洲人成电影网站| FREE性丰满白嫩白嫩的HD| 国产色婷婷亚洲99精品| 久久视热频国只有精品| 日产精品久久久久久久蜜殿| 亚洲三级在线看| 超碰视频在线观看| 久久精品久精品99热| 日日摸天天添天天添无码蜜臀| 亚洲人交性视频| 达达兔午夜一级毛片| 久久黄色免费网站| 视频成人永久免费下载| 制服丝袜第一页| 国产精品伦一区二区三级视频 | 国产欧美日韩亚洲第一页| 久久亚洲A片COM人成A| 受喷汁红肿抽搐磨NP双性| 洲精品无码高潮喷水A片| 国产精品久久婷婷五月色| 蜜柚视频高清在线| 亚洲精品高清在线观看| 成人免费看片45分钟| 久草在线在线精品观看99| 台湾18成人影院| AV色蜜桃一区二区三区| 精品亚洲国产成AV人片传媒| 肉动漫无码无删减在线观看 | 俄罗斯9一14 young处| 老女老肥熟国产在线视频| 午夜免费小视频| WWW污污污抽搐喷潮COM| 久久兔费黄A级毛片高清| 亚洲aaaa级特黄毛片| 成人免费在线| 年轻的的小婊孑2中文字幕| 一边吃奶一边啪啪真舒服| 国产精品无码亚洲网|