单片机C51编程中bdata的问题

数据类型bdata的使用,详细一点,呵呵呵... 数据类型bdata的使用,详细一点,呵呵呵 展开
 我来答
lylxy1965
推荐于2016-07-18 · TA获得超过2413个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:223万
展开全部
在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型,由于是双字节,就要多花些时间了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式