[PIC®/AVR®/dsPIC®产品] 联合体可以方便寄存器的不同位操作

[复制链接]
1957|7
 楼主| 小明的同学 发表于 2023-10-28 16:26 | 显示全部楼层 |阅读模式
  1. #define SPARE2                        0x87 //!< Register 0x87 ; ACCESS RW;  Default Value:0x00
  2. union
  3. {
  4.         struct
  5.         {
  6.                 unsigned char :3;
  7.                 unsigned char CIF_EN:1;       
  8.                 unsigned char :1;
  9.                 unsigned char SMUTE_GAIN_CTRL_EN:1;       
  10.                 unsigned char :2;       
  11.         }refined;
  12.                 unsigned char raw;
  13. } reg87;

  14. #define FMCHAN0                        0x88 //!< Register 0x88 ; ACCESS RW;  Default Value:0x46
  15. union
  16. {
  17.         struct
  18.         {
  19.                 unsigned char FM_CHAN:4;                //FM_CHAN<11:8>
  20.                 unsigned char :2;
  21.                 unsigned char AM_FM:1;       
  22.                 unsigned char TUNE:1;
  23.         }refined;
  24.                 unsigned char raw;
  25. } reg88;

  26. #define FMCHAN1                        0x89 //!< Register 0x89 ; ACCESS RW;  Default Value:0xB8
  27. union
  28. {
  29.         struct
  30.         {
  31.                 unsigned char FM_CHAN:8        ;        //FM_CHAN<7:0>
  32.         }refined;
  33.                 unsigned char raw;
  34. } reg89;

  35. #define AMCHAN0                        0x8C //!< Register 0x8C ; ACCESS RW;  Default Value:0x01
  36. union
  37. {
  38.         struct
  39.         {
  40.                 unsigned char AM_CHAN:7        ;        //AM_CHAN<14:8>
  41.                 unsigned char :1;
  42.         }refined;
  43.                 unsigned char raw;
  44. } reg8C;

  45. #define AMCHAN1                        0x8D //!< Register 0x8D ; ACCESS RW;  Default Value:0xF8
  46. union
  47. {
  48.         struct
  49.         {
  50.                 unsigned char AM_CHAN:8        ;        //AM_CHAN<7:0>
  51.         }refined;
  52.                 unsigned char raw;
  53. } reg8D;
根据手册写的,这么写可以方便操作不同位段组合。
lcczg 发表于 2023-11-1 09:07 | 显示全部楼层
是很方便的。
Henryko 发表于 2023-11-14 11:28 | 显示全部楼层
为什么会这样啊?
Stahan 发表于 2023-11-16 14:33 来自手机 | 显示全部楼层
联合体是什么东西啊
Jacquetry 发表于 2023-11-20 10:29 来自手机 | 显示全部楼层
联合体可以操作不同的位
AloneKaven 发表于 2023-11-21 09:45 来自手机 | 显示全部楼层
操作不同的位吗
Bowclad 发表于 2023-11-23 15:06 来自手机 | 显示全部楼层
可以的,昨晚还去复习了这个知识点
MessageRing 发表于 2023-11-27 14:44 来自手机 | 显示全部楼层
union用的不多,乍一看都没想起这个关键字
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1640

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部