新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 如何在Keil C51中直接使用二进制数

如何在Keil C51中直接使用二进制数

作者:时间:2012-04-29来源:网络收藏

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

本文引用地址:http://www.eepw.com.cn/article/171544.htm

  方法一:

  建立一个头文件,将所有的宏定义列举出来,用的时候宏定义,头文件定义: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

  }

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



评论


相关推荐

技术专区

关闭