专栏中心

EEPW首页 > 专栏 > C语言位域在硬件控制中的运用

C语言位域在硬件控制中的运用

发布人:gongping11 时间:2011-08-06 来源:工程师 发布文章

硬件开发过程中经常需要操作的对象是按bit来存储的,也就是我们经常所说的单片机或者ARM中某一个寄存器的某一位或者某几位是需要操作的对象。但是C语言中最小的存储单元是以char也就是字符型为最小的标准的,也就是1个字节即8个bits。

硬件中的寄存器在C语言中实质就死一个个的结构体,8051中的寄存器通常为1个字节,也就是8个bits,通常称为8位。比如51单片几种的TCON 寄存器如下图所示:其中每一位比如IE1、IE0在内存中实质是以位域的形式存在的具体的形式如下:

D7    D6    D5    D4      D3    D2     D1  D0
TF1  TR1  TF0   TR0   IE1   IT1     IE0  IT0

struct TCON_BIT{ //位域的基本使用

unsigned char  IT0:1;//也就是占用uchar中的第一个bit

unsigend char  IE0:1;//也就是占用uchar中的第二个bit

unsigend char  IT1:1;

unsigend char  IE1:1;

unsigend char  TR0:1;

unsigend char  TF0:1;

unsigend char TR1:1;

unsigend char  TF1:1;//占用uchar的第8个bit

};

union TCON

{

 unsigned char all;

struct TCON_BIT;

};

其中struct TCON_BIT就是采用了位域的形式定义的。位域还存在很多其他的限制条件,具体的问题问问gooogle吧。对做个Nios2开发的朋友就会意识到位于操作的优势,能够大大减小内存的使用。很适合硬件操作。

位域的基本定义形式为:

基本类型(int,char...) 位域变量名(IE0,IT0,....) :number

其中基本类型就是C语言中的基本类型。

位域名就是该位的名字,比如IT0等

:number 就是占有的位宽,最小为1,最大为8,其中“:”是一定要有的,这是位域的标示。

位域操作相比传统的#define有较大的优势,比较直接,便于控制。同时TI官方提供的资源中很多都采用位域

定义新的MCU,这也说明了位域操作越来越得到重视。因此作出自己学习的总结。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

技术干货 | 为什么 TI DLP® 技术的彩虹效应正在逐渐消失

消费电子 2025-12-17

ASML:High NA EUV 光刻机,2027~2028年实现大规模量产

EDA/PCB 2025-12-17

模拟芯视界 | 选择电机控制中的位置传感器

技术干货 | 利用 CC2340R5 启用 Apple® Find My® Network 功能

ADI公司LDO的电容选择指南

电连接器检验仪器应用研究(下)

视频 2010-03-25

浩亭2025财年收官,全球布局驱动强劲增长

元件/连接器 2025-12-17

四天一单,谁在涌入半导体赛道?

2025-12-17

2025年前三季度全球腕戴设备市场同比增长10%

消费电子 2025-12-17

生物医学传感与检测技术(下)

视频 2010-03-25

生物医学传感与检测技术(上)

视频 2010-03-25

2025年第三季度,半导体营收首次单季突破2000亿美元,行业整体增长加速

简化设计,降低BOM成本,纳芯微推出NSI1611系列隔离电压采样芯片

用于医疗保健领域的ADI公司身体传感器和MEMS器件(上)

视频 2010-03-25

EEPW专访ERNI公司高管

视频 2010-03-25
更多 培训课堂
更多 焦点
更多 视频

技术专区