在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

單片機開發設計,如何通過指針對16位數進行操作

貿澤電子設計圈 ? 來源:互聯網 ? 作者:佚名 ? 2017-09-27 15:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在8位單片機中沒有16位數的操作指令,所有的int型數據都要通過兩個字節分開操作,使用的方法不用,生成的代碼也不相同,當然效率也不一樣,通過指針對16位數進行操作可以得到高效的代碼。

比如通過串行口接收數據,或者從串行的EEPROM中讀取的數據,或者從大于8位的A/D讀取的數據,由于8位單片機的數據線是8位的,高于8位的數據都要分成兩個字節分別讀取,然后寫入到RAM中去再進行計算,或者把16位的int型數據從RAM中讀出再分別把高低字節存到EEPROM或者送到D/A,或者通過串行口發送出去,方法有很多種,下面用多種方法進行實現該操作,這里只演示寫入到16位的情況,讀取的情況非常相似,不贅述。

(1)使用聯合 (union)

typedef union{unsigned int i;unsigned char c[2];}u_int;unsigned char dH = 0x11, dL=0x22;unsigned int d;u_int ud;ud.c[0] = dH;ud.c[1] = dL;d = ud.i;此時d = 0x1122;

(2) 使用移位指令

數據定義與前面相同d = ((unsigned int)dH) 或者d = dH;d d |= dL; // or: d = d | dL; 后者編譯的代碼可能不是最簡的

(3)使用指針

unsigned char *cptr;cptr = (unsigned char*)(&d);cptr[0] = dH;cptr[1] = dL;

(4)強制指針類型轉換

*((unsigned char*)(&d)) = dH;*((unsigned char*)(&d)+1) = dL;或((unsigned char*)(&d))[0] = dH;((unsigned char*)(&d))[1] = dL;

這兩種方式看似相同但由Keil編譯出的代碼是不用的,前都有一次加法運算,而后者沒有,后者生成的代碼更簡潔,這種方式與用聯合成生的代碼是完全一樣的。

在這幾種方法中第(1)與第(4)的第二種生成的代碼是最乘潔的,是推薦使用的,從軟件工程的角度出發,推薦使用方法(1),這樣沒有強制類型轉換,沒有用到指針,更不容易出錯。從書寫的代碼來講,第(4)的第二種方法是最好的,代碼簡潔而且效率最高,但語法有點兒復雜。

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

    關注

    6067

    文章

    44960

    瀏覽量

    648754
  • 串行接口
    +關注

    關注

    3

    文章

    384

    瀏覽量

    43249
  • 數據轉換
    +關注

    關注

    0

    文章

    90

    瀏覽量

    18241
  • 指針
    +關注

    關注

    1

    文章

    484

    瀏覽量

    71096

原文標題:8位單片機操作16位INT型數據的方法你想到了幾種?

文章出處:【微信號:Mouser-Community,微信公眾號:貿澤電子設計圈】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    51單片機編寫的6位數顯頻率計數器

    本帖最后由 eehome 于 2013-1-5 10:10 編輯 51單片機編寫的6位數顯頻率51單片機編寫的6位數顯頻率計數器計數器
    發表于 08-06 16:36

    如何在KEIL單片機編程環境下實現隨機的6位數驗證碼?

    比如:單片機如何給GSM短信模塊發送一個隨機的6位數,手機收到這6位數后,通過單片機的矩陣鍵盤輸入,點亮
    發表于 10-22 22:20

    單片機IO口進行定義

    本文將提到以下內容:操作中斷printf重定向隨機發生器RNGAD/DADMA高性能計算能力加密ART加速一、操作  在學習51
    發表于 07-27 07:49

    基于單片機的單通道16位數據采集系統設計

    基于單片機的單通道16位數據采集系統設計
    發表于 11-10 10:53 ?12次下載

    6位數顯頻率計數器

    6位數顯頻率計數器,單片機源代碼分享,下來看看。
    發表于 05-20 15:07 ?22次下載

    [轉載]Freescalenbsp;16單片機

    的原因吧。通常開始學單片機,都是寫一些比較小的程序,如果不做項目開發之類的,以飛思卡爾 16 單片機的資源
    發表于 11-23 17:52 ?788次閱讀

    16單片機有哪些

    在實際運用中,很多人使用16單片機16單片機有哪些呢?本文給大家帶來
    發表于 12-20 11:41 ?4.4w次閱讀

    89C51單片機16位數據傳送指令的執行過程

    這是89C51單片機唯一的一條16立即傳遞指令,其功能是將一個16的立即
    發表于 01-09 15:13 ?5695次閱讀
    89C51<b class='flag-5'>單片機</b><b class='flag-5'>16</b><b class='flag-5'>位數</b>據傳送指令的執行過程

    使用51單片機把416進制轉成10進制的方法和程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機把416進制轉成10進制的方法和程序免費下載。
    發表于 08-23 17:30 ?23次下載
    使用51<b class='flag-5'>單片機</b>把4<b class='flag-5'>位</b><b class='flag-5'>16</b>進制<b class='flag-5'>數</b>轉成10進制<b class='flag-5'>數</b>的方法和程序免費下載

    如何使用8單片機16INT型數據進行操作

    在8單片機中沒有16位數操作指令,所有的int型數據都要通過兩個字節分開
    的頭像 發表于 06-30 10:29 ?7959次閱讀
    如何使用8<b class='flag-5'>位</b><b class='flag-5'>單片機</b>對<b class='flag-5'>16</b><b class='flag-5'>位</b>INT型數據<b class='flag-5'>進行</b><b class='flag-5'>操作</b>

    使用單片機實現CC4021串行輸入8-16位數據信號的仿真文件

    本文檔的主要內容詳細介紹的是使用單片機實現CC4021串行輸入8-16位數據信號的仿真文件。
    發表于 03-12 14:57 ?11次下載

    51單片機4位數簡易計算器

    51單片機4位數簡易計算器
    發表于 05-06 11:19 ?30次下載

    單片機開發小程序

    如何使用單片機開發小程序單片機一般都是通過燒寫hex或是bin文件來進行程序升級,這個方法是在8、16
    發表于 11-13 12:36 ?10次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>開發</b>小程序

    816、32單片機中的“XX”指什么?

    處理的數據寬度不同,總線寬度小于CPU一次處理的數據寬度,則以CPU的數據寬度定義單片機位數,但稱為準多少。比如某CPU是16但總線是
    發表于 11-16 09:21 ?29次下載
    8<b class='flag-5'>位</b>、<b class='flag-5'>16</b><b class='flag-5'>位</b>、32<b class='flag-5'>位</b><b class='flag-5'>單片機</b>中的“XX<b class='flag-5'>位</b>”指什么?

    816、32單片機(MCU)

    51的CPU一次只能處理8位數據。????????在ARM里面,R0和R2是32的,所以ARM的CPU一次能處理32位數據。3、進一步解釋?????????單片機
    發表于 11-18 17:36 ?11次下載
    8<b class='flag-5'>位</b>、<b class='flag-5'>16</b><b class='flag-5'>位</b>、32<b class='flag-5'>位</b><b class='flag-5'>單片機</b>(MCU)
    主站蜘蛛池模板: 日韩欧美在线中文字幕 | 成人国产永久福利看片 | 综合激情网五月 | 四虎国产精品永久地址49 | 美女黄色毛片 | 日本不卡视频一区二区三区 | 特级毛片视频在线 | h在线观看免费 | 女主播扒开内衣让粉丝看个够 | 欧美色a电影精品aaaa | 成人免费久久精品国产片久久影院 | 超级乱淫片67194免费看 | 天天躁夜夜躁狠狠躁2018a | 韩国免费人成在线观看网站 | 国产大片91精品免费观看不卡 | 天天色天天干天天 | 亚洲欧美7777 | 国产骚b| 四虎国产精品免费久久影院 | 天天网综合 | 97久久综合区小说区图片专区 | 国产精品毛片一区二区三区 | 国产一级又色又爽又黄大片 | 影音先锋在线亚洲精品推荐 | 美国一级毛片不卡无毒 | 亚洲综合日韩欧美一区二区三 | 免费无遮挡很爽很污很黄 | 久久精品免费观看视频 | 国产色网站 | 欧美tube6最新69 | 8050午夜一级 | 无遮挡一级毛片视频 | 四虎影视色费永久在线观看 | 精品国产1000部91麻豆 | 免费一级欧美片片线观看 | 色综合天天综合网亚洲影院 | 国产精品午夜寂寞视频 | www.jizz中国| 欧美成人h精品网站 | 黄a大片 | 色播五月婷婷 |