单片机C51编程中bdata的问题

数据类型bdata的使用,详细一点,呵呵呵

在51中的位变量包含2类,一类是特殊功能寄存器中的可位寻址的位,比如EA,TR0等;这部分位在C中通过sbit来特殊声明,比如sbit Beep=P1^0; ;另一种即为bdata存储模式的位变量。
bdata是布尔变量的存储方式,表示位变量存储在位于单片机内部RAM字节地址0x20~0x2F的16个字节中,每个字节8位,共计16x8=128个可寻址位,位地址从0x00~0x7F。bdata所指只包含这个区域。

其实一般而言不用去特别声明位变量存储模式,比如bit bdata flag; ,在C51中普通的bit变量只能存放在bdata中,所以只需要bit flag这样去定义变量就行了。

关于bit型变量的应用,:
1、可以作为参数传递:比如
uchar test(bit flag)
{
if(flag)
{//传递来的是真则返回3,
return 3;
}
else
{//是假则返回2
return 2;
}
}
main()
{
uchar x;
bit flag = 1;

x = test(falg);
}

2、可以作为函数的返回值
bit test1(uchar a,uchar b)
{
if(a>b)
{//如果a>b则返回真,否则返回假
return 1;
}
else
{
return 0;
}
}
main()
{
bit flag;
flag = test1(2,3);
}

3、不能使用的场合:C51中没有位变量指针一说,比如 bit bdata *flag1;的定义就是非法的。位变量也不能定义位数组,比如 bit bdata flag[8]也不允许。

另外,返回值采用位变量有两种情况也是不允许的:一种是在函数中禁止使用中断时,第二则是函数中有类似using x这种寄存器组切换时。关于这两种情况我没验证过,没有感性认识,所以不能给你举例说明了,总之在使用中断时慎用返回位变量的函数。

bit变量应用最多的情况:执行一个函数,只是想知道操作是否成功,这时就可以用bit变量作为返回值,这样占用资源少,判断起来也快。当然,如果返回值是char型,判断速度上和bit型差不多,但如果是int型,由于是双字节,就要多花些时间了。
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机C51编程中bdata的问题
bdata是布尔变量的存储方式,表示位变量存储在位于单片机内部RAM字节地址0x20~0x2F的16个字节中,每个字节8位,共计16x8=128个可寻址位,位地址从0x00~0x7F。bdata所指只包含这个区域。其实一般而言不用去特别声明位变量存储模式,比如bit bdata flag; ,在C51中普通的bit变量只能存放在bdata中,所...

c51中"bdata"是什么意思?
c51中"bdata"是片内RAM,位寻址方式;存储器类型说明的意思。c51中"bdata"的用法:C51中的两种位变量,除了特殊功能寄存器中的可位寻址的位外,还有位于单片机内部RAM字节。地址0x20~0x2F的16个字节的128个可寻址位,位地址从0x00~0x7F。比如我有一个变量:uchar(unsigned char) BData;这是一个...

在51中bdata 是表示什么,如果我用盛群的单片机 应该怎样定义uchar bdat...
bdata就是可位寻址内部数据存储区 允许位与字节混合访问(16B)盛群的单片机我没有用过 单片机的原理应该和51的也差不多吧 unsigned char uchar;uchar bdata sta;sbit RX-DR=sta^6;

c51 中bdata是什么作用
位变量存贮的地方

单片机定义bitbdata是什么意思
在单片机C语言中,bit是新增的一个关键词,它是用来定义一个“位变量”bdata是把变量定义到数据RAM的可位寻址区,即51系列的20H~2FH单元中,最后bitflag应该是bit flag(和关键字bit中间有个空格)表示定义一个位变量flag,这个flag变量只能是0或者1。

data在C51中怎么不能用啊?
楼上答错了哦,data不是数据类型,是keil编译器的一个关键字,用来声明变量存储的位置的。若一个变量声明为data,那么它就是存放在单片机低128byte的ram区的。数据类型是char int long这些,本质上就是用来声明一个变量是占用多少字节的存储空间的。举个例子,int a;int bdata a;int data a;a...

关于C51单片机的外扩数据存储器的读写操作时序的问题
直接寻址。7. 外部数据寄存器(pdata):地址与P2口保持数据相关,使用R0、R1间接寻址(MOVX指令)。8. 代码(code):程序存储器,使用MOVC指令访问,为只读存储器。以上内容对C51单片机存储器类型及其物理存储器进行了详细描述,纠正了原文本中的遗漏和错误,并确保了语义的准确性和条理的清晰性。

C51中,用sbit定义位变量,是不是就存放在单片机的可位寻址区(0x20--0x...
sbit 是定义一个位变量 bdata 它只是说明你定义的变量的存储类型 比如 char bdata y 那么y这个变量是储存在可位寻址区域,可以进行字节或位访问 sbit 与bit bit定义是在bdata中 sbit 也可定义在bdata中,但此时必须是类似这样的形式 bdata char a sbit a0=a^0 还有一功能是如楼上说的用于特殊...

关于c51存储类型和其数据长度,有点不懂,求指点
在C51里扩展了bit类型,1个位的长度 长度,只取决与以上类型,与data,idata,bdata,xdata,pdata没有关系,所以,你上面的表格是错误的。而那些data,idata,bdata,xdata,pdata等等,是变量或者常量的存储空间。51单片机有以下几个内存模块组成:ROM或者Flash就不说了。RAM有---内部RAM的低128字节(00-7...

51单片机中的uchar bdata sta; sbit RX_DR =sta^6;来分配存储区,盛群单...
unsigned char bdata sta; 定义一个无符号的字符型变量sta, bdata用于将变量定义在可位寻址片内数据存储区 sbit RX_DR =sta^6; sbit 位定义,定义后对RX_DR 的操作就是对端口sta^6的操作。例如:RX_DR = 1;\/\/给端口sta^6送高电平 RX_DR = 0;\/\/给端口sta^6送低电平 ...

相似回答