?? rd_usebits.h
字號:
#ifndef _USE_BITS_H_
#define _USE_BITS_H_
/***********************************************************
* 聲明庫說明:系統位段操作函數庫 *
* 版本: v1.00 *
* -------------------------------------------------------- *
* [版本歷史] *
* v1.00 包含了從32位到8位對16位8位4位1位的各種映射 *
* 允許通過功能宏定義中定義的宏拆分任意的地址 *
* -------------------------------------------------------- *
* [使用說明] *
* 1、該頭文件屬于基層頭文件。 *
* 2、兼容32位16位8位單片機系統。 *
* 3、飽含該頭文件以后,可以通過功能宏定義中定義的 *
* 宏拆分任意地址,也可以直接使用后面自定義的位 *
* 段類型定義新的位段變量或者指針。 *
* 4、需要注意的是,使用功能宏定義中的宏只是將指定 *
* 變量的地址強行邦定為指定類型的位段,并不真正 *
* 分配一個地址空間,如果指定類型的位段長度和地 *
* 址實際長度不相同將會導致不可預期的后果。 *
***********************************************************/
/********************
* 系 統 宏 定 義 *
********************/
/*------------------*
* 常 數 宏 定 義 *
*------------------*/
/*------------------*
* 功 能 宏 定 義 *
*------------------*/
# define SET_BIT8_FORMAT(Addr) (*((volatile BYTEBIT *)&Addr))
# define SET_BYTE_DIV_2(Addr) (*((volatile BYTE2HBYTE *)&Addr))
# define SET_BIT16_FORMAT(Addr) (*((volatile WORDBIT *)&Addr))
# define SET_WORD_DIV_2(Addr) (*((volatile WORD2BYTE *)&Addr))
# define SET_WORD_DIV_4(Addr) (*((volatile WORD2HBYTE *)&Addr))
# define SET_BIT32_FORMAT(Addr) (*((volatile DWORDBIT *)&Addr))
# define SET_DWORD_DIV_2(Addr) (*((volatile DWORD2WORD *)&Addr))
# define SET_DWORD_DIV_4(Addr) (*((volatile DWORD2BYTE *)&Addr))
# define SET_DWORK_DIV_8(Addr) (*((volatile DWORD2HBYTE *)&Addr))
/********************
* 結 構 體 定 義 區 *
********************/
/*------------------*
* 8位變量位映射 *
*------------------*/
typedef struct BYTE_BIT
{
unsigned BIT0:1;
unsigned BIT1:1;
unsigned BIT2:1;
unsigned BIT3:1;
unsigned BIT4:1;
unsigned BIT5:1;
unsigned BIT6:1;
unsigned BIT7:1;
}BYTEBIT;
/*------------------*
* 16位變量位映射 *
*------------------*/
typedef struct WORD_BIT
{
unsigned BIT0:1;
unsigned BIT1:1;
unsigned BIT2:1;
unsigned BIT3:1;
unsigned BIT4:1;
unsigned BIT5:1;
unsigned BIT6:1;
unsigned BIT7:1;
unsigned BIT8:1;
unsigned BIT9:1;
unsigned BIT10:1;
unsigned BIT11:1;
unsigned BIT12:1;
unsigned BIT13:1;
unsigned BIT14:1;
unsigned BIT15:1;
}WORDBIT;
/*------------------*
* 32位變量位映射 *
*------------------*/
typedef struct DWORD_BIT
{
unsigned BIT0:1;
unsigned BIT1:1;
unsigned BIT2:1;
unsigned BIT3:1;
unsigned BIT4:1;
unsigned BIT5:1;
unsigned BIT6:1;
unsigned BIT7:1;
unsigned BIT8:1;
unsigned BIT9:1;
unsigned BIT10:1;
unsigned BIT11:1;
unsigned BIT12:1;
unsigned BIT13:1;
unsigned BIT14:1;
unsigned BIT15:1;
unsigned BIT16:1;
unsigned BIT17:1;
unsigned BIT18:1;
unsigned BIT19:1;
unsigned BIT20:1;
unsigned BIT21:1;
unsigned BIT22:1;
unsigned BIT23:1;
unsigned BIT24:1;
unsigned BIT25:1;
unsigned BIT26:1;
unsigned BIT27:1;
unsigned BIT28:1;
unsigned BIT29:1;
unsigned BIT30:1;
unsigned BIT31:1;
}DWORDBIT;
/*------------------*
* 32位變量4分映射 *
*------------------*/
typedef struct DWORD_BYTE
{
unsigned BYTEA:8;
unsigned BYTEB:8;
unsigned BYTEC:8;
unsigned BYTED:8;
}DWORD2BYTE;
/*------------------*
* 32位變量2分映射 *
*------------------*/
typedef struct DWORD_WORD
{
unsigned WORDA:16;
unsigned WORDB:16;
}DWORD2WORD;
/*------------------*
* 32位變量16分映射 *
*------------------*/
typedef struct DWORD_HBYTE
{
unsigned BYTEAL:4;
unsigned BYTEAH:4;
unsigned BYTEBL:4;
unsigned BYTEBH:4;
unsigned BYTECL:4;
unsigned BYTECH:4;
unsigned BYTEDL:4;
unsigned BYTEDH:4;
}DWORD2HBYTE;
/*------------------*
* 16位變量2分映射 *
*------------------*/
typedef struct WORD_BYTE
{
unsigned BYTEA:8;
unsigned BYTEB:8;
}WORD2BYTE;
/*------------------*
* 16位變量4分映射 *
*------------------*/
typedef struct WORD_HBYTE
{
unsigned BYTEAL:4;
unsigned BYTEAH:4;
unsigned BYTEBL:4;
unsigned BYTEBH:4;
}WORD2HBYTE;
/*------------------*
* 8位變量2分映射 *
*------------------*/
typedef struct BYTE_DIV2
{
unsigned BYTEAL:4;
unsigned BYTEAH:4;
}BYTE2HBYTE;
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -