找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6265|回復(fù): 1
收起左側(cè)

用單片機(jī)C語(yǔ)言的結(jié)構(gòu)體實(shí)現(xiàn)字節(jié)、位操作

[復(fù)制鏈接]
ID:140725 發(fā)表于 2017-3-22 03:30 | 顯示全部樓層 |閱讀模式
凌陽(yáng)出的教程,用來(lái)學(xué)習(xí)單片機(jī)c語(yǔ)言非常不錯(cuò),主要講解了結(jié)構(gòu)體實(shí)現(xiàn)字節(jié)、位操作,下面是教程的截圖,完整版本請(qǐng)下載本帖的51黑附件。
0.png 0.png
0.png


源碼:

  1. /* ========================================================================= */
  2. /* The information contained herein is the exclusive property of             */
  3. /* Sunplus Technology Co. And shall not be distributed, reproduced,          */
  4. /* or disclosed in whole in part without prior written permission.           */
  5. /*             (C) COPYRIGHT 2004 SUNPLUS TECHNOLOGY CO.                     */
  6. /*                    ALL RIGHTS RESERVED                                    */
  7. /* The entire notice above must be reproduced on all authorized copies.      */
  8. /* ========================================================================= */
  9. /*                                                                                                                                                          */
  10. /* ========================================================================= */
  11. /* Project Name  : AN_SPMC75_0202                                                                             */
  12. /* File Name     : main.c                                                                                                          */
  13. /* Description   : Easy-to-Use Byte and Bit mode operation using C data          */
  14. /*                 structure                                                                            */
  15. /* Processor     : SPMC75F2413A                                                                                             */
  16. /* Tools             : u'nSP IDE tools v1.18.1A or later version                                 */
  17. /* ========================================================================= */
  18. /* Revision                                                                                                                                         */
  19. /* ========================================================================= */
  20. /* Version       :  1.00                                                                                                            */
  21. /* Date                         : 9.2                                                                                                 */
  22. /* Modified by   :        更換正規(guī)的文件頭和最新的頭文件                                                         */
  23. /* Description         :                                                                                                                     */
  24. /* ========================================================================= */

  25. #include        "AN_SPMC75_0202.H"

  26. //===========================================================================
  27. /*
  28. .Note:
  29.         將UInt16型變量variable強(qiáng)制轉(zhuǎn)換為GENBITSDEF類型的指針,
  30.         那么這樣一個(gè)指針ptr就可以具有GENBITSDEF類型所定義的
  31.         屬性和成員,對(duì)其操作就可以實(shí)現(xiàn)對(duì)ptr所指存儲(chǔ)空間進(jìn)行操作。
  32. */
  33. #define        ptr        ((volatile GENTYPEDEF *)(&variable))        //普通變量強(qiáng)轉(zhuǎn)換類型

  34. main()
  35. {
  36.         UInt16 variable = 0;        //UInt16 變量定義
  37.         GENBITSDEF        sBits;                //自定義類型GENBITSDEF 變量定義
  38.         GENBYTEDEF        sByte;                //自定義類型GENBYTEDEF 變量定義
  39.         GENTYPEDEF        sMixb;                //自定義類型GENTYPEDEF 變量定義

  40.         P_IOD_Attrib->W = 0xFFFF;        //IOD初始化
  41.         P_IOD_Dir->W        = 0xFFFF;
  42.         P_IOD_Buffer->W        = 0xFFFF;
  43.         P_IOD_Data->W        = 0x0000;

  44.         sBits.W = 0xA5FF;                //字(Word)操作
  45.         sBits.B.bit0  = 0;                //位(Bit)操作
  46.         sBits.B.bit15 = 0;                //位(Bit)操作

  47.         sByte.W = 0xA5FF;                //字(Word)操作
  48.         sByte.B.byte0 = 0xA5;        //字節(jié)(Byte)操作
  49.         sByte.B.byte1 = 0xFF;        //字節(jié)(Byte)操作

  50.         sMixb.Word = 0xA5FF;        //字(Word)操作
  51.         sMixb.Bits.bit14 = 1;        //位(Bit)操作
  52.         sMixb.Bits.bit15 = 0;        //位(Bit)操作
  53.         sMixb.Byte.byte0 = 0;        //字節(jié)(Byte)操作
  54.         sMixb.Byte.byte1 = 0;        //字節(jié)(Byte)操作

  55.         ptr->Word = 0x90Fe;        //轉(zhuǎn)型后變量的操作方式
  56.         ptr->Bits.bit0  = 1;
  57.         ptr->Bits.bit15 = 0;
  58.         ptr->Byte.byte0 = 0xFF;
  59.         ptr->Byte.byte1 = 0x00;


  60.         while(1)
  61.         {
  62.                 LEDCHG->Byte.byte0 = 0xA5;        //對(duì)硬件(IOD)的字節(jié)(Byte)操作
  63.                 LEDCHG->Byte.byte0 = 0x5A;

  64.                 LEDCHG->Byte.byte1 = 0xA5;
  65.                 LEDCHG->Byte.byte1 = 0x5A;

  66.                 LEDCHG->Byte.byte0 = 0x00;
  67.                 LEDCHG->Byte.byte0 = 0xFF;

  68.                 LEDCHG->Byte.byte1 = 0x00;
  69.                 LEDCHG->Byte.byte1 = 0xFF;

  70.                 LEDCHG->Word           = 0x00;        //對(duì)硬件(IOD)的字(Word)操作

  71.                 LEDCHG->Bits.bit0 = 1;                //對(duì)硬件(IOD)的位(Bit)操作
  72.                 LEDCHG->Bits.bit0 = 0;

  73.                 LEDCHG->Bits.bit5 = 1;
  74.                 LEDCHG->Bits.bit5 = 0;

  75.                 LEDCHG->Bits.bit10 = 1;
  76.                 LEDCHG->Bits.bit10 = 0;

  77.                 LEDCHG->Bits.bit15 = 1;
  78.                 LEDCHG->Bits.bit15 = 0;
  79.         }
  80. }
復(fù)制代碼

完整教程和源碼下載:
用C語(yǔ)言的結(jié)構(gòu)體實(shí)現(xiàn)字節(jié)、位操作.rar (305.49 KB, 下載次數(shù): 46)


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:180246 發(fā)表于 2017-3-22 15:08 | 顯示全部樓層
好資料,51黑有你更精彩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表