单片机机 中怎样和哪几种字节位操作的方式,最好给点C语言代码并解释

如题所述

1、ANSIC中,一般采用“读-修改-写”的方法实现单个位的位操作,通过与0“与”操作,将某一位清0。如使i变量的b0位为0,实现方法为i=i&0xfe。通过与1“或”操作,将某一位置1。如使i变量的b0位为1,实现方法为i=i|0x01。通过与1“异或”操作,将某一位取反。如使i变量的b0位取反,实现方法为i=i^0x01。

2 、通过位域的方法实现位操作
标准C提供了一种基于结构体的数据结构--位域(BitField),位域就是把一个存储单元中的二进制划分为几个不同的区域。并说明每个区域的位数。每一个域有一个域名,允许在程序中按域名进行操作,位域的定义格式如下:
struct 位域结构名{

位域列表 };

位域列表格式为:类型说明符 位域名:位域长度如:

struct k{

unsigned int a:1

unsigned int :2

unsigned int b:3

unsigned int :0     //空域

}k1;
说明:
1)各位依次从低位到高位排列,排满一个存储单元,按地址接着排下一单元;
2)位域可以无域名,但不能被引用,如第二域,这时其只用来填充或调整位置;
3)第四行称空域,目的是将目前存储单元的剩余部分分为一个域,且填充0。
位域的引用很简单,如:
k1.a=1; //置k1的b0位为1
k1.b=7; //将k1的b3-5位置111
通过位域定义位变量,是实现单个位位操作的重要途径和方法,采用位域定义位变量,产生的代码紧凑、高效。
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机机 中怎样和哪几种字节位操作的方式,最好给点C语言代码并解释
1、ANSIC中,一般采用“读-修改-写”的方法实现单个位的位操作,通过与0“与”操作,将某一位清0。如使i变量的b0位为0,实现方法为i=i&0xfe。通过与1“或”操作,将某一位置1。如使i变量的b0位为1,实现方法为i=i|0x01。通过与1“异或”操作,将某一位取反。如使i变量的b0位取反...

在单片机C语言中如何对变量的某一位进行操作或赋值。
在C语言中,一般有两种方法来操作位,一种是使用C语言提供的位运算操作符,一种是使用位域。1、使用位域 在C语言中定义位域的一般格式如下:struct 位域结构名 { 位域列表 };struct:在C语言中定义位域所使用的关键字是struct。位域结构名:是一个C语言中的标识符,有字母、数字、下划线组成,而...

C51单片机中的位操作和总线操作是什么意思
1、位操作,需要区别于C语言的位运算。你提的【位操作】,应该是针对51系列单片机特有的可位寻址的位单元操作。其他系列单片机是不支持的,而只能整个字节或字的位运算来管理某位。而51的这些可寻址的每个位都标上了地址。如可以声明 bit a; a=0;又如sbit P10=P1^0;表示单片机的管脚变量,可以直...

c51单片机中的伪指令DB的如何使用,简单点就是:我想把DB的数据读出来用P...
你好,C51中没有DB,只有汇编才有DB,你上面的写法是对的,DB 是以字节方式存放即8位,而DW是以16位方式存放,

下图是书《单片机与c语言》中的,图中的=~是什么意思,最好帮我解释一...
~是取反的意思,那条语句的意思就是:把变量L2按位取反,原来的位为0,再变为1赋值给L2。反之相反咯。在这个程序里面的意思,就是P1^7口交替赋值为0或者1;估计控制LED灯闪烁类的吧

内部RAM中 位所在字节的字节地址的计算
单片机内部RAM中低128字节的20H~2FH共16个字节可以用位寻址方式访问其各位。共128个位地址为00H~7FH。假设位地址为48H,那么单元地址=48H\/8+20H=29H。特殊功能寄存区中有的可以位寻址,用查表法,就可以得到,例如90H,查表得到,对应的字节地址为90H。低128字节中的00H~1FH共32个单元通常作为...

你好,我想请问下我是一个单片机汇编程序初学者,应该怎样去学习呢,有什...
如果是自学,那么不懂的地方可以上网收索或者上论坛询问,这里有个单片机的QQ群,是官方建的你可以加上一起学习讨论群号是:7344883 还有在了解指令的同时你要了解你的板子的结构亦即电路连接才能写好你的程序。当你学到一定程度的时候你可以学习一下单片机的外围电路设计比如液晶显示啊,A\/D转换啊什么的...

请问C语言是什么啊? 能给我详细的解释一下么? 谢谢了!
C语言的特点 C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言...

C语言与单片机C语言的区别 急求
1、单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法 如C51扩展的 data xdata bit sbit 一类的,还有一些中断程序写法 void int() interrput 1 一类的。2、C是一门语言,由对应平台的编译器编译成对应平台汇编的程序,各平台的汇编不一样,当然编译器也不一样 DOS上的TC2 TC3 WINDOWS上...

MCS-51单片机中内部RAM可划分为几个区域?各区域的特点是什么?_百度...
DATA区:又叫直接寻址区,位于单片机内部RAM的前128个字节,可以直接寻址,例如MOV A,30H,一般在写C程序的时候,把一些经常用到的变量放在这个区里面,这样可以节省机器周期。IDATA区:间接寻址区,单片机内部RAM的前256个字节,用间接寻址进行访问。例如:MOV R0,#30H MOV A,@R0 这里要说明...

相似回答