在一个工程项目中,有时候我们经常会用到许多状态标志位。很多时候我们会去程序中定义这些变量,而这些变量往往占用了一个字节(byte),然而我们需要的仅仅是一个状态位(bit)。这样去定义变量不仅浪费了存储空间,而且不利于变量管理。下面,介绍一种使用位域的方法定义状态标志的方法:
//定义联合体,同时命名别名为function
typedef union
{
u8 flagByte;
struct
{
u8 b0:1;
u8 b1:1;
u8 b2:1;
}bits;
}function;
function myflag; //定义联合体变量myflag
//变量操作
union _SYS_STATUS_
{
struct
{
unsigned m0 : 1;
unsigned m1 : 1;
unsigned m2 : 1;
unsigned m3 : 1;
unsigned m4 : 1;
unsigned m5 : 1;
unsigned m6 : 1;
unsigned m7 : 1;
unsigned i0 : 1;
unsigned i1 : 1;
unsigned i2 : 1;
unsigned i3 : 1;
unsigned i4 : 1;
unsigned i5 : 1;
unsigned i6 : 1;
unsigned i7 : 1;
};
struct
{
unsigned int sysStuAll;
};
}
extern union _SYS_STATUS_ sSysStatus;
void tempp()
{
myflag.flagByte=0;
myflag.flagByte=0xff;
myflag.bits.b0=0;
myflag.bits.b1=0;
}
关键字:单片机 位域操作
引用地址:
单片机中的位域操作
推荐阅读最新更新时间:2024-03-16 14:34
如何用51单片机点亮一盏LED灯
首先应该了解51单片机最小系统:51最小系统也称为51最小应用系统,是指用最少的元件组成的51单片机可以工作的系统。如图2.1.1所示,51最小系统一般应该包括:单片机、晶振电路、复位电路。 晶振电路的原理及组成,作用: 在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。—个机
[单片机]
单片机模拟2272软件解码介绍
在无线遥控领域,PT2262/2272是目前最常用的芯片之一,但由于芯片要求配对使用,在很大程度上影响了该芯片的使用,笔者从PT2262波形特征入手,结合应用实际,提出软件解码的方法和具体措施。 一、概述 PT2262/2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。 PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出。 PT2262/2272必须用相同地址码配对使用,当需要增加一个
[单片机]
配置FM3产品族微控制器嵌入式应用的RFID开发工具
RFID 技术在物联网时代有着举足轻重的地位。很多芯片公司都很重视RFID 技术的应用。ST公司的短距离,13.56MHz频段,主要应用为身份识别、公交系统和防伪技术;ST公司的长距离RFID产品符合ISO15693标准,主要应用为交通、门禁;ST公司的超长距离RFID产品符合EPCClass1b标准,主要应用于物流供应链管理市场。NXP公司的UCODE G2iL系列可以为先进RFID系统的单品级标签,是结构简单,高效实惠的单天线解决方案。富士通半导体从2004上半年开始陆续提供13.56MHz频带的产品,并且已经提供UHF频带的产品。富士通半导体基于其MCU的嵌入式RFID解决方案是通过串行接口(SPI)和共享内存区来连接RFI
[模拟电子]
基于51单片机太阳能电池太阳跟踪装置程序设计
#include reg51.h #include intrins.h #include absacc.h #define uchar unsigned char #define uint unsigned int #define ysfs 600 //宏定义 预设风速 #define shuiping 1500 //宏定义 水平位置AD转换结果 #define fuyang 1500 //宏定义 俯仰位置AD转换结果 #define PA XBYTE //8255芯片端口4个基地址宏定义 #d
[单片机]
单片机机器码以及偏移地址的计算
比如: 机器码 SJMP rel 10000000 偏移量8bit 新的目标地址: PC = 当前PC + 偏移量 例: KK: SJMP K0 设KK的地址 = 0100H, 标号K0 = 00F0H 则偏移量为多少? rel = 目标地址 - 当前地址 = 00F0 - 0102H(PC指向下一条指令) = -12H = EEH(补码) KK: DJNZ R7,K0 设置KK的地址为 = 0009H, 标号K0 = 0005H 则偏移量为多少? rel = 目标地址 - 当前地址 = 0005H - 000BH(PC指向下一条指令) = -06H = FAH(补码,-06H负数的补码求法:符号位不变,其它部分取反加1)
[单片机]
中微CMS80F231x移动空调方案性能MCU
参数与应用领域: CMS80F231x系列MCU,增强型1T 8051 Flash MCU,最快支持48MHz外设运行,24MHz内核运行,被广泛应用于物联网智能家居、新能源、医疗电子、小家电、电机、工商业等领域。CMS80F231x是增强型1T 8051 Flash MCU,最快支持48MHz外设运行,24MHz内核运行,工作电压2.1V-5.5V,GPIO最多可达22个,内置2路模拟比较器,2路运算放大器,1路可编程增益放大器,提供6通道增强型PWM输出 ,最多达22路12位ADC,2个UART, 1个SPI, 1个I2C,可任意映射I/O口。工业级标准设计,可工作在-40℃至105℃,并提供SOP16,SOP20及SOP24
[单片机]
全新AVR MCU结合USB、充电功能
爱特梅尔现已推出结合了 USB 控制器和高性能模拟功能的全新AVR® 微控制器产品,型号为 ATmega16UA 和 ATmega32U4。这些器件可降低电池供电设备如游戏外设的系统成本。 虽然电池供电设备能够通过USB连接进行充电,然而,现代电池需要复杂的算法来加速和优化充电过程,而USB给电源带来了更多的限制,以致其能够提供的电压和最大电流都很有限。新的AVR器件则可以在优化电池充电的同时提供各项USB功能。其模数转换器可以用于感应终端应用的动作或压力,而高速脉冲宽度调制 (PWM) 则是低成本电机控制的理想选择。 游戏外设比如功能复杂的操纵杆,也需要大量模数转换信道和若干PWM信道,来驱动力反馈电机。这些全新
[单片机]
51单片机中变量的定义及应用方法
变量就是一种在程序执行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下: 在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto),外部(extern),静态(statIC)和寄存器(register),缺省类型为自动(auto)。 而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确的定位。注意的是在AT89C51芯
[单片机]