Bit field in structure

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Bit field in structure

335 次查看
Aswin_5232
Contributor II

I am using MC9S12DG256 micro controller and codewarrior 5.2 .

typedef union
{
  uint16_t  w;
struct  {                    // Row  Col
uint16_t rc21 : 1;    //  2   1   msbit,msbyte
uint16_t rc22 : 1;    //  2   2
uint16_t rc23 : 1;    //  2   3
uint16_t rc24 : 1;    //  2   4
uint16_t rc25 : 1;    //  2   5
uint16_t rc14 : 1;    //  1   4
uint16_t rc13 : 1;    //  1   3
uint16_t rc12 : 1;    //  1   2
 
uint16_t rc26 : 1;    // 2   6   msbit,lsbyte
uint16_t rc27 : 1;    // 2   7
uint16_t rc28 : 1;    // 2   8
uint16_t rc29 : 1;    // 2   9
uint16_t unused : 1;  // 
uint16_t rc18 : 1;    // 1   8
uint16_t rc17 : 1;    // 1   7
uint16_t rc16 : 1;    // 1   6
    }b;
}lb_struct; 
Here the structure objects are arranged in LSByte MSbit order so when I use the union w to access the value is not correct. I want it to be arranges as MSByte MS bit order. Instead LS Byte first I need MSByte first and I also dont want the bitfield size reduction to happen. If i give int it should be allocated as int not char. I know about the setting to change the Bit field allocation order but when I do the register bits also getting changed for example instead of BIT7, BIT0 is toggled I don't want that to happen.
标记 (1)
0 项奖励
回复
1 回复

308 次查看
lama
NXP TechSupport
NXP TechSupport

Hi,

This behaviour is absolutely correct in the case of the S12 family. Higher byte is at the lower address.

The MCU is a big endian so word has always higher byte at lower address. As you can see for this configuration

typedef union

{

  unsigned int w;

  struct 

    {

      unsigned int f15 : 1;//0

      unsigned int f14 : 1;//0

      unsigned int f13 : 1;//0

      unsigned int f12 : 1;//0

      unsigned int f11 : 1;//0

      unsigned int f10 : 1;//0

      unsigned int f09 : 1;//0

      unsigned int f08 : 1;//0

      unsigned int f07 : 1;//0

      unsigned int f06 : 1;//0

      unsigned int f05 : 1;//0

      unsigned int f04 : 1;//0

      unsigned int f03 : 1;//0

      unsigned int f02 : 1;//0

      unsigned int f01 : 1;//0

      unsigned int f00 : 1;//0

    

    }b;

}attrib2;

 

Everything is correctly written. The highest bifield flag is written to the highest bit of the registers (word) PORTAB or a variable xx.

 

Of course, in the window Data1 you can see there is a bit 0 set but it is based on the definition in the device header file. (look into mc9s12dg256.h file in your project window and search for portab definition)



lama_0-1775663376502.png

 

 

 

Safe workaround for bitfield ordering issues on MC9S12 (CodeWarrior)

To avoid bitfield ordering problems while keeping hardware register mappings intact on MC9S12 (CodeWarrior), the recommended and robust workaround is not to use C bitfields at all for logical data interpretation.

Bitfield layout (bit order, byte order, and storage unit) is compiler-defined and controlled by global compiler settings. In CodeWarrior, changing the bitfield allocation order affects all bitfields, including those used for hardware register definitions. This results in incorrect hardware access (for example, BIT7 being interpreted as BIT0), which is unacceptable for peripheral register control. Therefore, bitfields cannot be safely used when exact and stable bit positioning is required.

The safe solution is to use a uint16_t value as the single source of truth and access individual bits via explicit masks and shifts. This guarantees correct MSByte / MSBit behavior, is independent of compiler bitfield rules, and does not interfere with hardware register mappings.

For example, instead of a bitfield-based union, define the data and its bit positions explicitly:

 

typedef uint16_t lb_word;

 

/* Explicit MSB-first bit definitions */

#define RC21 (1u << 15)

#define RC22 (1u << 14)

#define RC23 (1u << 13)

#define RC24 (1u << 12)

#define RC25 (1u << 11)

#define RC14 (1u << 10)

#define RC13 (1u << 9)

#define RC12 (1u <<

 

#define RC26 (1u << 7)

#define RC27 (1u << 6)

#define RC28 (1u << 5)

#define RC29 (1u << 4)

#define RC18 (1u << 2)

#define RC17 (1u << 1)

#define RC16 (1u << 0)

 

The 16‑bit value can then be manipulated safely and unambiguously, for example:

 

lb_word w = 0;

 

w |= RC21; /* set RC21 (bit 15) */

w &= ~RC27; /* clear RC27 (bit 6) */

 

if (w & RC14) {

/* RC14 is set */

}

This approach ensures:

  • Full control over exact bit positions (MSByte / MSBit)
  • Correct uint16_t representation without implicit byte reordering
  • No dependency on compiler-specific bitfield behavior
  • No risk of breaking hardware register access
  • Suitability for safety‑critical and automotive codebases

In practice, explicit bit masks and shifts are the standard solution in embedded and automotive projects whenever an exact and predictable data layout must be guaranteed.

Best regards,
Ladislav

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2346708%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E7%BB%93%E6%9E%84%E4%B8%AD%E7%9A%84%E4%BD%8D%E5%9F%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2346708%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%88%91%E4%BD%BF%E7%94%A8%20MC9S12DG256%20%E5%BE%AE%E5%9E%8B%E6%8E%A7%E5%88%B6%E5%99%A8%E5%92%8C%20codewarrior%205.2%E3%80%82%3C%2FP%3E%3CDIV%3E%E7%B1%BB%E5%9E%8B%E5%8C%96%E8%81%94%E7%9B%9F%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%20%20uint16_t%20w%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Estruct%20%7B%20%2F%2F%20Row%20Col%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc21%20%3A%201%3B%20%2F%2F%202%201%20msbit%2Cmsbyte%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc22%20%3A%201%3B%20%2F%2F%202%202%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc23%20%3A%201%3B%20%2F%2F%202%203%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc24%20%3A%201%3B%20%2F%2F%202%204%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc25%20%3A%201%3B%20%2F%2F%202%205%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc14%20%3A%201%3B%20%2F%2F%201%204%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc13%20%3A%201%3B%20%2F%2F%201%203%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc12%20%3A%201%3B%20%2F%2F%201%202%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc26%20%3A%201%3B%20%2F%2F%202%206%20msbit%2Clsbyte%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc27%20%EF%BC%9A1%3B%20%2F%2F%202%207%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc28%20%3A%201%3B%20%2F%2F%202%208%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc29%20%3A%201%3B%20%2F%2F%202%209%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20unused%20%3A%201%3B%20%2F%2F%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc18%20%3A%201%3B%20%2F%2F%201%208%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc17%20%3A%201%3B%20%2F%2F%201%207%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Euint16_t%20rc16%20%3A%201%3B%20%2F%2F%201%206%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%20%20%20%20%7Db%3B%3C%2FDIV%3E%3CDIV%3E%7Dlb_struct%EF%BC%9B%20%3C%2FDIV%3E%3CDIV%3E%E5%9C%A8%E8%BF%99%E9%87%8C%EF%BC%8C%E7%BB%93%E6%9E%84%E5%AF%B9%E8%B1%A1%E6%98%AF%E6%8C%89%20LSByte%20MSbit%20%E9%A1%BA%E5%BA%8F%E6%8E%92%E5%88%97%E7%9A%84%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%BD%93%E6%88%91%E4%BD%BF%E7%94%A8%20union%20w%20%E8%AE%BF%E9%97%AE%E5%80%BC%E6%97%B6%E5%B0%B1%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%E3%80%82%E6%88%91%E5%B8%8C%E6%9C%9B%E6%8C%89%20MSByte%20MS%20%E4%BD%8D%E9%A1%BA%E5%BA%8F%E6%8E%92%E5%88%97%E3%80%82%E5%8F%96%E8%80%8C%E4%BB%A3%E4%B9%8B%E7%9A%84%E6%98%AF%20LS%20%E5%AD%97%E8%8A%82%20%E9%A6%96%E5%85%88%E6%88%91%E9%9C%80%E8%A6%81%20ms%E5%AD%97%E8%8A%82%20%E8%80%8C%E4%B8%94%E6%88%91%E4%B9%9F%E4%B8%8D%E5%B8%8C%E6%9C%9B%E7%BC%A9%E5%B0%8F%E4%BD%8D%E5%9F%9F%E5%A4%A7%E5%B0%8F%E3%80%82%E5%A6%82%E6%9E%9C%E6%88%91%E7%BB%99%E7%9A%84%E6%98%AF%20int%EF%BC%8C%E5%AE%83%E5%BA%94%E8%AF%A5%E8%A2%AB%E5%88%86%E9%85%8D%E4%B8%BA%20int%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%20char%E3%80%82%E6%88%91%E7%9F%A5%E9%81%93%E6%9B%B4%E6%94%B9%E4%BD%8D%E5%9F%9F%E5%88%86%E9%85%8D%E9%A1%BA%E5%BA%8F%E7%9A%84%E8%AE%BE%E7%BD%AE%EF%BC%8C%E4%BD%86%E5%BD%93%E6%88%91%E8%BF%99%E6%A0%B7%E5%81%9A%E6%97%B6%EF%BC%8C%E5%AF%84%E5%AD%98%E5%99%A8%E7%9A%84%E4%BD%8D%E4%B9%9F%E4%BC%9A%E5%8F%91%E7%94%9F%E5%8F%98%E5%8C%96%EF%BC%8C%E4%BE%8B%E5%A6%82%EF%BC%8C%E6%88%91%E4%B8%8D%E5%B8%8C%E6%9C%9B%E5%8F%91%E7%94%9F%20BIT7%20%E8%A2%AB%E5%88%87%E6%8D%A2%EF%BC%8C%E8%80%8C%E6%98%AF%20BIT0%20%E8%A2%AB%E5%88%87%E6%8D%A2%E7%9A%84%E6%83%85%E5%86%B5%E3%80%82%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2347324%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Bit%20field%20in%20structure%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2347324%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%A5%BD%EF%BC%8C%3C%2FP%3E%0A%3CP%3E%E5%AF%B9%E4%BA%8ES12%E7%B3%BB%E5%88%97%EF%BC%8C%E8%BF%99%E7%A7%8D%E8%A1%8C%E4%B8%BA%E6%98%AF%E7%BB%9D%E5%AF%B9%E6%AD%A3%E7%A1%AE%E7%9A%84%E3%80%82%E8%BE%83%E9%AB%98%E7%9A%84%E5%AD%97%E8%8A%82%E4%BD%8D%E4%BA%8E%E8%BE%83%E4%BD%8E%E7%9A%84%E5%9C%B0%E5%9D%80%E3%80%82%3C%2FP%3E%0A%3CP%3EMCU%20%E6%98%AF%E5%A4%A7%E5%AD%97%E8%8A%82%E5%BA%8F%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%AD%97%E5%9C%A8%E8%BE%83%E4%BD%8E%E5%9C%B0%E5%9D%80%E5%A4%84%E6%80%BB%E6%98%AF%E6%9C%89%E6%9B%B4%E9%AB%98%E7%9A%84%E5%AD%97%E8%8A%82%E3%80%82%E6%AD%A3%E5%A6%82%E6%82%A8%E6%89%80%E7%9C%8B%E5%88%B0%E7%9A%84%E8%BF%99%E7%A7%8D%E9%85%8D%E7%BD%AE%3C%2FP%3E%0A%3CP%3E%E7%B1%BB%E5%9E%8B%E5%8C%96%E8%81%94%E7%9B%9F%3C%2FP%3E%0A%3CP%3E%7B%3C%2FP%3E%0A%3CP%3E%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20w%EF%BC%9B%3C%2FP%3E%0A%3CP%3E%20%20%E7%BB%93%E6%9E%84%20%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7B%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f15%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f14%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f13%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f12%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f11%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f10%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f09%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f08%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f07%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f06%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f05%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f04%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f03%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f02%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f01%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%20%20%20%20%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20int%20f00%20%3A%201%3B%2F%2F0%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%20%20%20%20%7Db%3B%3C%2FP%3E%0A%3CP%3E%7Dattrib2%EF%BC%9B%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E4%B8%80%E5%88%87%E9%83%BD%E5%86%99%E5%BE%97%E6%AD%A3%E7%A1%AE%E6%97%A0%E8%AF%AF%E3%80%82%E6%9C%80%E9%AB%98%E5%8F%8C%E5%AD%97%E6%AE%B5%E6%A0%87%E5%BF%97%E8%A2%AB%E5%86%99%E5%85%A5%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%88%E5%AD%97%EF%BC%89PORTAB%20%E6%88%96%E5%8F%98%E9%87%8F%20xx%20%E7%9A%84%E6%9C%80%E9%AB%98%E4%BD%8D%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E5%BD%93%E7%84%B6%EF%BC%8C%E5%9C%A8%E7%AA%97%E5%8F%A3%20Data1%20%E4%B8%AD%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E8%AE%BE%E7%BD%AE%E4%BA%86%200%20%E4%BD%8D%EF%BC%8C%E4%BD%86%E5%AE%83%E6%98%AF%E5%9F%BA%E4%BA%8E%E8%AE%BE%E5%A4%87%E5%A4%B4%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%82(%E6%9F%A5%E9%98%85%20mc9s12dg256.h%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6%E6%90%9C%E7%B4%A2%20portab%20%E5%AE%9A%E4%B9%89%EF%BC%89%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22lama_0-1775663376502.png%22%20style%3D%22width%3A%20696px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22lama_0-1775663376502.png%22%20style%3D%22width%3A%20696px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F381594iAFBF2AB5E5494548%2Fimage-dimensions%2F696x485%3Fv%3Dv2%22%20width%3D%22696%22%20height%3D%22485%22%20role%3D%22button%22%20title%3D%22lama_0-1775663376502.png%22%20alt%3D%22lama_0-1775663376502.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CP%3EMC9S12%20%E4%B8%8A%E4%BD%8D%E5%AD%97%E6%AE%B5%E6%8E%92%E5%BA%8F%E9%97%AE%E9%A2%98%E7%9A%84%E5%AE%89%E5%85%A8%E5%8F%98%E9%80%9A%E6%96%B9%E6%B3%95%EF%BC%88CodeWarrior%EF%BC%89%3C%2FP%3E%0A%3CP%3E%E4%B8%BA%E9%81%BF%E5%85%8D%E4%BD%8D%E5%AD%97%E6%AE%B5%E6%8E%92%E5%BA%8F%E9%97%AE%E9%A2%98%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E6%8C%81%20MC9S12%EF%BC%88CodeWarrior%EF%BC%89%E4%B8%8A%E7%A1%AC%E4%BB%B6%E5%AF%84%E5%AD%98%E5%99%A8%E6%98%A0%E5%B0%84%E7%9A%84%E5%AE%8C%E6%95%B4%E6%80%A7%EF%BC%8C%E5%BB%BA%E8%AE%AE%E9%87%87%E7%94%A8%E7%9A%84%E7%A8%B3%E5%81%A5%E5%8F%98%E9%80%9A%E6%96%B9%E6%B3%95%E6%98%AF%3CSTRONG%3E%E5%AE%8C%E5%85%A8%E4%B8%8D%E4%BD%BF%E7%94%A8%20C%20%E4%BD%8D%E5%AD%97%E6%AE%B5%3C%2FSTRONG%3E%E8%BF%9B%E8%A1%8C%E9%80%BB%E8%BE%91%E6%95%B0%E6%8D%AE%E8%A7%A3%E9%87%8A%E3%80%82%3C%2FP%3E%0A%3CP%3E%E4%BD%8D%E5%9F%9F%E5%B8%83%E5%B1%80%EF%BC%88%E4%BD%8D%E9%A1%BA%E5%BA%8F%E3%80%81%E5%AD%97%E8%8A%82%E9%A1%BA%E5%BA%8F%E5%92%8C%E5%AD%98%E5%82%A8%E5%8D%95%E5%85%83%EF%BC%89%E7%94%B1%E7%BC%96%E8%AF%91%E5%99%A8%E5%AE%9A%E4%B9%89%E5%B9%B6%E7%94%B1%E5%85%A8%E5%B1%80%E7%BC%96%E8%AF%91%E5%99%A8%E8%AE%BE%E7%BD%AE%E6%8E%A7%E5%88%B6%E3%80%82%E5%9C%A8%20CodeWarrior%20%E4%B8%AD%EF%BC%8C%E6%9B%B4%E6%94%B9%E4%BD%8D%E5%9F%9F%E5%88%86%E9%85%8D%E9%A1%BA%E5%BA%8F%E4%BC%9A%E5%BD%B1%E5%93%8D%3CEM%3E%E6%89%80%E6%9C%89%3C%2FEM%3E%E4%BD%8D%E5%9F%9F%EF%BC%8C%E5%8C%85%E6%8B%AC%E7%94%A8%E4%BA%8E%E7%A1%AC%E4%BB%B6%E5%AF%84%E5%AD%98%E5%99%A8%E5%AE%9A%E4%B9%89%E7%9A%84%E4%BD%8D%E5%9F%9F%E3%80%82%E8%BF%99%E4%BC%9A%E5%AF%BC%E8%87%B4%E4%B8%8D%E6%AD%A3%E7%A1%AE%E7%9A%84%E7%A1%AC%E4%BB%B6%E8%AE%BF%E9%97%AE%EF%BC%88%E4%BE%8B%E5%A6%82%EF%BC%8CBIT7%20%E8%A2%AB%E8%A7%A3%E9%87%8A%E4%B8%BA%20BIT0%EF%BC%89%EF%BC%8C%E8%BF%99%E5%AF%B9%E4%BA%8E%E5%A4%96%E8%AE%BE%E5%AF%84%E5%AD%98%E5%99%A8%E6%8E%A7%E5%88%B6%E6%9D%A5%E8%AF%B4%E6%98%AF%E4%B8%8D%E5%8F%AF%E6%8E%A5%E5%8F%97%E7%9A%84%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E5%9C%A8%E9%9C%80%E8%A6%81%E7%B2%BE%E7%A1%AE%E5%92%8C%E7%A8%B3%E5%AE%9A%E7%9A%84%E4%BD%8D%E5%AE%9A%E4%BD%8D%E6%97%B6%EF%BC%8C%E4%B8%8D%E8%83%BD%E5%AE%89%E5%85%A8%E5%9C%B0%E4%BD%BF%E7%94%A8%E4%BD%8D%E5%9F%9F%E3%80%82%3C%2FP%3E%0A%3CP%3E%E5%AE%89%E5%85%A8%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E6%98%AF%E4%BD%BF%E7%94%A8%20uint16_t%20%E5%80%BC%E4%BD%9C%E4%B8%BA%E5%8D%95%E4%B8%80%E7%9C%9F%E5%AE%9E%E6%BA%90%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87%E6%98%BE%E5%BC%8F%E6%8E%A9%E7%A0%81%E5%92%8C%E7%A7%BB%E4%BD%8D%E8%AE%BF%E9%97%AE%E5%90%84%E4%B8%AA%E4%BD%8D%E3%80%82%E8%BF%99%E4%BF%9D%E8%AF%81%E4%BA%86%E6%AD%A3%E7%A1%AE%E7%9A%84%20MSByte%20%2F%20MSBit%20%E8%A1%8C%E4%B8%BA%EF%BC%8C%E4%B8%8D%E5%8F%97%E7%BC%96%E8%AF%91%E5%99%A8%E4%BD%8D%E5%9F%9F%E8%A7%84%E5%88%99%E7%9A%84%E5%BD%B1%E5%93%8D%EF%BC%8C%E4%B9%9F%E4%B8%8D%E4%BC%9A%E5%B9%B2%E6%89%B0%E7%A1%AC%E4%BB%B6%E5%AF%84%E5%AD%98%E5%99%A8%E6%98%A0%E5%B0%84%E3%80%82%3C%2FP%3E%0A%3CP%3E%E4%BE%8B%E5%A6%82%EF%BC%8C%E4%B8%8D%E4%BD%BF%E7%94%A8%E5%9F%BA%E4%BA%8E%E4%BD%8D%E5%9F%9F%E7%9A%84%E8%81%94%E5%90%88%EF%BC%8C%E8%80%8C%E6%98%AF%E6%98%8E%E7%A1%AE%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%8F%8A%E5%85%B6%E4%BD%8D%E4%BD%8D%E7%BD%AE%EF%BC%9A%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3Etypedef%20uint16_t%20lb_word%EF%BC%9B%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%2F*%20%E6%98%BE%E5%BC%8F%20MSB%20%E4%BC%98%E5%85%88%E4%BD%8D%E5%AE%9A%E4%B9%89%20*%2F%3C%2FP%3E%0A%3CP%3E%23define%20RC21%20(1u%26lt%3B%26lt%3B%2015)%3C%2FP%3E%0A%3CP%3E%23define%20RC22%20(1u%26lt%3B%26lt%3B%2014)%3C%2FP%3E%0A%3CP%3E%23define%20RC23%20(1u%26lt%3B%26lt%3B%2013)%3C%2FP%3E%0A%3CP%3E%23define%20RC24%20(1u%26lt%3B%26lt%3B%2012)%3C%2FP%3E%0A%3CP%3E%23define%20RC25%20(1u%26lt%3B%26lt%3B%2011)%3C%2FP%3E%0A%3CP%3E%23define%20RC14%20(1u%26lt%3B%26lt%3B%2010)%3C%2FP%3E%0A%3CP%3E%23define%20RC13%20(1u%26lt%3B%26lt%3B%209)%3C%2FP%3E%0A%3CP%3E%23define%20RC12%20(1u%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%23define%20RC26%20(1u%26lt%3B%26lt%3B%207)%3C%2FP%3E%0A%3CP%3E%23define%20RC27%20(1u%26lt%3B%26lt%3B%206)%3C%2FP%3E%0A%3CP%3E%23define%20RC28%20(1u%26lt%3B%26lt%3B%205)%3C%2FP%3E%0A%3CP%3E%23define%20RC29%20(1u%26lt%3B%26lt%3B%204)%3C%2FP%3E%0A%3CP%3E%23define%20RC18%20(1u%26lt%3B%26lt%3B%202)%3C%2FP%3E%0A%3CP%3E%23define%20RC17%20(1u%26lt%3B%26lt%3B%201)%3C%2FP%3E%0A%3CP%3E%23define%20RC16%20(1u%26lt%3B%26lt%3B%200)%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E4%BE%8B%E5%A6%82%EF%BC%8C%E8%BF%99%E6%A0%B7%E5%B0%B1%E5%8F%AF%E4%BB%A5%E5%AE%89%E5%85%A8%E3%80%81%E6%98%8E%E7%A1%AE%E5%9C%B0%E6%93%8D%E4%BD%9C%2016%20%E4%BD%8D%E6%95%B0%E5%80%BC%EF%BC%9A%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3Elb_word%20w%20%3D%200%EF%BC%9B%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3Ew%20%7C%3D%20RC21%3B%20%2F*%20%E8%AE%BE%E7%BD%AE%20RC21%EF%BC%88%E7%AC%AC%2015%20%E4%BD%8D%EF%BC%89*%2F%3C%2FP%3E%0A%3CP%3Ew%26amp%3B%3D%20~RC27%3B%20%2F*%20%E6%B8%85%E9%99%A4%20RC27%EF%BC%88%E7%AC%AC%206%20%E4%BD%8D%EF%BC%89*%2F%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E5%A6%82%E6%9E%9C%20(w%26amp%3B%20RC14)%20%7B%3C%2FP%3E%0A%3CP%3E%2F*%20RC14%20%E5%B7%B2%E8%AE%BE%E7%BD%AE%20*%2F%3C%2FP%3E%0A%3CP%3E%7D%3C%2FP%3E%0A%3CP%3E%E8%BF%99%E7%A7%8D%E6%96%B9%E6%B3%95%E5%8F%AF%E7%A1%AE%E4%BF%9D%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%E5%AE%8C%E5%85%A8%E6%8E%A7%E5%88%B6%E7%B2%BE%E7%A1%AE%E4%BD%8D%E4%BD%8D%E7%BD%AE%EF%BC%88MSByte%20%2F%20MSBit%EF%BC%89%3C%2FLI%3E%0A%3CLI%3E%E5%9C%A8%E4%B8%8D%E8%BF%9B%E8%A1%8C%E9%9A%90%E5%BC%8F%E5%AD%97%E8%8A%82%E9%87%8D%E6%96%B0%E6%8E%92%E5%BA%8F%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%9B%B4%E6%AD%A3%20uint16_t%20%E8%A1%A8%E7%A4%BA%E5%BD%A2%E5%BC%8F%3C%2FLI%3E%0A%3CLI%3E%E4%B8%8D%E4%BE%9D%E8%B5%96%E7%BC%96%E8%AF%91%E5%99%A8%E7%89%B9%E5%AE%9A%E7%9A%84%E4%BD%8D%E5%9C%BA%E8%A1%8C%E4%B8%BA%3C%2FLI%3E%0A%3CLI%3E%E6%97%A0%E7%A0%B4%E5%9D%8F%E7%A1%AC%E4%BB%B6%E5%AF%84%E5%AD%98%E5%99%A8%E8%AE%BF%E9%97%AE%E7%9A%84%E9%A3%8E%E9%99%A9%3C%2FLI%3E%0A%3CLI%3E%E9%80%82%E7%94%A8%E4%BA%8E%E5%AE%89%E5%85%A8%E5%85%B3%E9%94%AE%E5%9E%8B%E4%BB%A3%E7%A0%81%E5%BA%93%E5%92%8C%E6%B1%BD%E8%BD%A6%E4%BB%A3%E7%A0%81%E5%BA%93%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%E5%AE%9E%E9%99%85%E4%B8%8A%EF%BC%8C%E5%9C%A8%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%92%8C%E6%B1%BD%E8%BD%A6%E9%A1%B9%E7%9B%AE%E4%B8%AD%EF%BC%8C%E5%8F%AA%E8%A6%81%E5%BF%85%E9%A1%BB%E4%BF%9D%E8%AF%81%E7%B2%BE%E7%A1%AE%E5%92%8C%E5%8F%AF%E9%A2%84%E6%B5%8B%E7%9A%84%E6%95%B0%E6%8D%AE%E5%B8%83%E5%B1%80%EF%BC%8C%E6%98%BE%E5%BC%8F%E4%BD%8D%E6%8E%A9%E7%A0%81%E5%92%8C%E7%A7%BB%E4%BD%8D%E5%B0%B1%E6%98%AF%E6%A0%87%E5%87%86%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82%3C%2FP%3E%0A%3CP%3E%E8%87%B4%E4%BB%A5%E6%9C%80%E5%B4%87%E9%AB%98%E7%9A%84%E6%95%AC%E6%84%8F%EF%BC%8C%3CBR%20%2F%3ELadislav%3C%2FP%3E%3C%2FLINGO-BODY%3E