您的位置:首页技术文栏单片机C51
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

如何在C51增加几个位操作函数?

[日期:2008-07-26 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)
在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一些位操作功能。

#define uchar unsigned char

/*测试变量某一位是否为‘1’,是返回真,否返回假,num为待测试的数,bit为位数,其值从0到7,下同*/

uchar bittest(uchar num,uchar bit) 

{ if(num>>bit&0x01==1)

return 1;

else

return 0;

}

uchar bitclr(uchar num,uchar bit) /*清除某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

return num&~bit_value[bit];

}

uchar bitset(uchar num,uchar bit) /*设置某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

return num|bit_value[bit];

}

uchar bitcpl(uchar num,uchar bit) /*取反某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

if(num>>bit&0x01==1)

return num&~bit_value[bit];

else

return num|bit_value[bit];

}

/*以下主程序演示,调用时,可以直接给出数值,也可以给出变量名*/

void main(void)

{

uchar xx=0xfe;

xx=bitset(xx,0);

printf("The set out is %x\n",xx);

printf("The clr out is %x\n",bitclr(255,0));

printf("The test out is %x\n",bittest(0xff,0));

printf("The cpl out is %x\n",bitcpl(0x00,7));

}

以上是以TC为例编写的主程序,各函数在其它C语言中也一样可用。
阅读:
录入:JETTA

推荐 】 【 打印
产品购买方式
广州市东哥电子科技有限公司欢迎您
东哥单片机学习网--提供单片机学习开发板,单片机实验板,编程器,仿真器,无线发射接收控制模块,电子元器件,单片机技术交流,是单片机爱好者,单片机初学者,电子工程师不容错过的单片机学习交流网站。
1.广东省可以货到付款(即货到了你把钱给快递公司),购物零风险.
2.外省的需先转账后发货,部分城市可以货到付款,需外加3%代收手续费.
3.可以通过本站淘宝店购买(淘宝网担保交易购物零风险).
淘 宝 店:进入本站淘宝店请点击
业务咨询:罗小姐/廖先生
技术咨询:廖先生
联系电话:020 86307431
联系手机:13512767404
购买方式:查看请点击
公司地址:广州市天河新赛格电子城2楼
您还可以通过QQ咨询:279068079     
赞助商广告