访问电脑版页面

导航:老古开发网手机版51单片机51单片机Keil C51编程

Keil C51中直接使用二进制数方法

导读:
关键字:
二进制数,Keil C51,

  在Keil C51中数不能直接以二进制形式赋值,虽然在8051的汇编中是可以的。二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。于是很多人怀念了8051的汇编,很想在C51中使用二进制。没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。

  方法一:

  建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义:binary(右键>>“目标另存为”>>下载)。

  方法二:

  做一个带参数宏定义,将输入的类二进制数变换为对应的16进制数,整个定义和使用实例请见下文,可以直接使用,如果想研究原理又看不懂带参宏定义的朋友们请参考谭浩强的《C程序设计》预处理命令一章内容(第三版在P204-P211)。

  #define LongToBin(n) \

  (\

  ((n >> 21) & 0x80) | \

  ((n >> 18) & 0x40) | \

  ((n >> 15) & 0x20) | \

  ((n >> 12) & 0x10) | \

  ((n >> 9) & 0x08) | \

  ((n >> 6) & 0x04) | \

  ((n >> 3) & 0x02) | \

  ((n ) & 0x01) \

  )

  #define Bin(n) LongToBin(0x##n##l)

  void main(void)

  {

  unisigned char c;

  c = Bin(10101001); //相当于c = 0xA9

  }

  上面预处理指令中使用了反斜杠\,这里解释一下:每一条预处理语句总是以"#"字符开始,并且不能超过一行,一旦遇到换行符语句就被当做结束,唯一的一种能将预处理语句扩展到多行的办法就是在换行符之前加一个反斜杠('\')。

来源:elecfans   作者:网络  2011/1/30 17:31:00
栏目: [ 51单片机Keil C51编程]

相关阅读

几种码制转换 BCD TO HEX,HEX TO BCD ,BIN TO HEX

让Ultra Edit和Keil结合的更紧密

在Keil c51调试中,如何查看外部存储器XDATA?

在KEIL C51上仿真完了,怎样生成HEX文件去烧写??

Keil C51中如何实现代码优化?

C51中 INT 转换为 2个CHAR?

Keil C51编译错误总结

proteus与keil的完美结合(没有开发板,让你也学的爽!)

C51 的重入问题 WARNING L15: MULTIPLE CALL TO SEGMENT(转)

[转载]C51中断处理过程

那位大虾能告诉我C51 的printf()函数有什么用?

keil 7.0编译出现:error C316: unterminated conditionals

51单片机CO2检测显示程序解析

在Keil c51调试中,如何查看特殊寄存器?

Keil C51单片机中变量的使用方法解析

volatile的用法

在Keil c51调试中,如何查看全部256bytes的内部RAM?

MCS51单片机程序设计时堆栈的计算方法解析

SBUF=0x65,c=SBUF结果为c=0???

keil C51 怎样把修改的startup.a51 加到工程文件中