⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitfield.h

📁 ucos系统中键盘及LED驱动实验.
💻 H
字号:
/* *	FILE    	bitfield.h * *	Version 	1.1 *	Author  	Copyright (c) Marc A. Viredaz, 1998 *	        	DEC Western Research Laboratory, Palo Alto, CA *	Date    	April 1998 (April 1997) *	System  	Advanced RISC Machine (ARM) *	Language	C or ARM Assembly *	Purpose 	Definition of macros to operate on bit fields. */#ifndef __BITFIELD_H#define __BITFIELD_H#ifndef __ASSEMBLY__#define UData(Data)	((unsigned long) (Data))#else#define UData(Data)	(Data)#endif/* * MACRO: Fld * * Purpose *    The macro "Fld" encodes a bit field, given its size and its shift value *    with respect to bit 0. * * Note *    A more intuitive way to encode bit fields would have been to use their *    mask. However, extracting size and shift value information from a bit *    field's mask is cumbersome and might break the assembler (255-character *    line-size limit). * * Input *    Size      	Size of the bit field, in number of bits. *    Shft      	Shift value of the bit field with respect to bit 0. * * Output *    Fld       	Encoded bit field. */#define Fld(Size, Shft)	(((Size) << 16) + (Shft))/* * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit * * Purpose *    The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return *    the size, shift value, mask, aligned mask, and first bit of a *    bit field. * * Input *    Field     	Encoded bit field (using the macro "Fld"). * * Output *    FSize     	Size of the bit field, in number of bits. *    FShft     	Shift value of the bit field with respect to bit 0. *    FMsk      	Mask for the bit field. *    FAlnMsk   	Mask for the bit field, aligned on bit 0. *    F1stBit   	First bit of the bit field. */#define FSize(Field)	((Field) >> 16)#define FShft(Field)	((Field) & 0x0000FFFF)#define FMsk(Field)	(((UData (1) << FSize (Field)) - 1) << FShft (Field))#define FAlnMsk(Field)	((UData (1) << FSize (Field)) - 1)#define F1stBit(Field)	(UData (1) << FShft (Field))#define FClrBit(Data, Bit)	(Data = (Data & ~(Bit)))#define FClrFld(Data, Field)	(Data = (Data & ~FMsk(Field)))/* * MACRO: FInsrt * * Purpose *    The macro "FInsrt" inserts a value into a bit field by shifting the *    former appropriately. * * Input *    Value     	Bit-field value. *    Field     	Encoded bit field (using the macro "Fld"). * * Output *    FInsrt    	Bit-field value positioned appropriately. */#define FInsrt(Value, Field) \                	(UData (Value) << FShft (Field))/* * MACRO: FExtr * * Purpose *    The macro "FExtr" extracts the value of a bit field by masking and *    shifting it appropriately. * * Input *    Data      	Data containing the bit-field to be extracted. *    Field     	Encoded bit field (using the macro "Fld"). * * Output *    FExtr     	Bit-field value. */#define FExtr(Data, Field) \                	((UData (Data) >> FShft (Field)) & FAlnMsk (Field))#endif /* __BITFIELD_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -