用于8051微控制器的C++?

Cod*_*sed 8 c c++ embedded microcontroller 8051

有人可以告诉我是否可以使用C++程序刻录8051微控制器?我试过在线搜索它,但似乎无法确定是否可能.Keil使用C,但是我需要编写的程序是字符串密集型的,与C#相比,C是非常不符合字符串的,这是我以前习惯使用的.目前,我正在尝试用C语言编写代码,但它变得非常混乱,所以如果我能用C++编写它,我会非常放心.

我需要一个C++编译器来创建一个Hex输出文件,然后可以将其烧录到微控制器上.有人听说过我可以使用的东西吗?而且,C使用一个头文件,让你引用端口,但当我试图找出这个头文件是否在C++中使用时,我找不到任何关于它的信息.

另外:我使用的微控制器是Atmel AT89C51,具有4K字节的可重编程闪存和128 x 8位内部RAM.这实际上是用于大学项目的机器人,编码实际上并不需要OOP.它只有很多以2D字符串数组格式查找的表.我想考虑C++的唯一原因是因为操作字符串似乎有些混乱(由于我缺乏C语言专业知识).

有没有人知道头文件?C使用#include reg51.h但我试图找出它是否适用于C++并且无法在其上找到任何内容.

mik*_*ong 10

首先,我会怀疑这是否真的是一个好主意.我理解在一般情况下想要在C语言上使用c ++的原因,但在8位哈佛架构微控制器的情况下,我会警告这一点.

要记住的事项包括:

  • 源级调试支持将介于较差和不可能之间.
  • 8位机器上OOP的运行时开销.我强烈建议在提交工具之前做一些严肃的基准测试.
  • 内存在嵌入式系统中并不便宜,您无疑会遇到一些地址空间限制.

此外,如果您真的要进行一些严格的字符串处理,我建议使用C标准库而不是字符串对象库,因为您可以更好地控制就地替换,因此字符串副本在代码中变得非常明显.

请发布一些您计划使用的微控制器(数据存储器,程序存储器),以及是否有任何性能要求必须满足,以便我们可以更具体地帮助您.

  • 请记住,C++进行编译时计算/代码生成,因此它原则上可以生成比任何C编译器更好的代码.我正在研究一个8位架构的LLVM端口(对不起,不能说更多),而且C++前端生成了纯C无法生成的漂亮的数字代码!我基本上得到了一个黑客版本的Eigen 3生成定点数字代码,用于具有硬件乘法器的8位架构.顺便说一句,这个代码与手写的程序集相当. (6认同)
  • "源级调试支持将介于穷人和不可能之间".恕我直言,它与调试C没有什么不同.如果目标有JTAG,如果调试器支持它,它应该是相当紧凑的. (3认同)

lot*_*har 2

ceibo有一个商业编译器。

但是,是否可以使用 C++(尤其是 STL 字符串)取决于您将拥有多少资源(ROM 和 RAM)。

有一个包含论坛、教程和下载的8051 站点,您可以在其中获得更多有关 8051 编程的资源。