问题标签 [c51]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
211 浏览

c - 错误输出 sprintf C51 8051 MCU 嵌入式系统

我有以下用于 AT89S52 微控制器的 C 代码片段:

stdio.h 中的 sprintf 函数原型:

有人能告诉我为什么我的字符串包含“256”而不是“1”吗?,x 变量甚至不足以容纳 256 值。

我正在使用标准 stdio.h 库使用 KEIL uVision 5 进行编译。

如果我使用:

而不是 sprintf 字符串包含一个“1”。

我通过 char-LCD 40x4(KS 0066 兼容控制器)验证字符串打印的内容

具有以下功能:

0 投票
2 回答
66 浏览

c - const 参数的目的不是避免错误

我正在使用仅支持 C90 的 keil C51 C 编译器对 8051 微控制器进行编程。

我想通过UART发送一个字节的数据,函数如下所示:

使用1:

使用2:

在后一种情况下,发送了 1 个字节,但不是正确的值 (123)。

如果我将代码更改为:

然后一切正常。

根据我的理解和互联网上的几个来源,“const”的唯一目的是防止函数更改其参数(换句话说,防止程序员错误地更改参数)。那为什么我的第二种方法不起作用?

编辑:这是我的完整代码:

UART.h

UART.c

主程序

0 投票
0 回答
86 浏览

c - 执行精英 el exe 失败

我正在使用elite el el net 版本。我们从 senselock europa 购买了这个加密狗,但我们的加密狗试用套件中没有 e4nmgr.exe。我可以在哪里找到它。我从这个论坛下载了 sdk,但它不起作用,因为它是 russich。

我在下面的教程中编写代码。并为加密狗编写uvision代码,但是当我想运行它时。它给出一个错误“执行精英 el exe 失败”。这是关于 e4nmgr.exe 还是不同的我使用 mt 库并且我在 64 位下工作。

是网络版加密狗不支持执行。

这是我的主要代码:

这是我的usb代码我使用uvision c51作为下面的代码。

0 投票
2 回答
1205 浏览

c - 在 Eclipse 中的宏中使用宏粘贴无效

你好我有以下问题:

  • IDE:Eclipse 版本:2018-12 (4.10.0),带有 Keil C51 插件(用于语言映射)
  • 编译器(外部):Wickenhäuser uc51

这里的问题:Eclipse Bad Character Sequence

Keil 语言映射使用以下语法:

Wickenhäuser 略有不同:

所以我来到了这个工作解决方案:

但是这个解决方案并不完美,(双写等)应该是这样的:

不幸的是 Eclipse 标记了这一点:在宏 AT_ADDRESS 中使用宏粘贴无效

0 投票
1 回答
59 浏览

c - 如果按顺序声明可分割变量,它们的地址是否会递增

我们有很多文件的 ac 程序,我们想知道一件具体的事情。

我们正在用 C51 编译它。

如果,假设在其中一个文件中,我声明了一些变量,例如:

他们的地址会以相同的顺序递增吗?正如他们所宣布的那样?

我意识到可以使用数组或结构来增加地址,或者我可以分配选择的固定地址,但这不是问题。

0 投票
1 回答
62 浏览

keil - 为什么使用 `^` 来获取 C51 中的特定 sbit?

^这只是 XOR( ref ) 运算符对吗?不会超载什么的。

我怎么能得到sbitXOR 运算符?

0 投票
1 回答
95 浏览

c - Keil C51 在编译时不会为结构指针分配内存

我正在尝试为 EFM8 微控制器项目创建一个结构链接列表。我想让编译器在编译时为所有节点分配内存。我遇到的问题是没有为结构指针分配内存。

我希望这段代码为每个Foo结构分配 4 个字节(1 个字节bar0和 3 个字节,next因为在这种架构中,如果您不指定内存位置,则需要 24 位地址。

但是在调试时,该结构只报告每个结构的 1 个字节,并且扩展任何数组成员都会显示一条Error: cannot dereference this type消息。

在此处输入图像描述

更奇怪的是,如果在主循环中对结构体数组进行操作,结构体在内存中的大小计算正确:queue[1].bar0 = 0xCC;会将值写入内存地址0x4。问题是编译没有分配足够的内存,所以我们超出了每个结构的边界(在这种情况下,0xCC结束于queue[4].bar0)。

在编译时是否需要一些指令来正确调整这些结构指针的大小?

0 投票
0 回答
43 浏览

keil - 你能告诉我这里提到的错误是什么吗?我无法进一步解决它。Keil uvision5 IDE

test.c(8): 错误 C141: '(', 预期 '' 附近的语法错误

test.c(8):错误 C141:“无符号”附近的语法错误,应为“hdata”

test.c(8):错误 C141:“无符号”附近的语法错误,应为“hdata”

第 8 ,49 和 56 行

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
14 浏览

c51 - 如何在 Keil .COD 文件中包含来自 .A51 文件的汇编程序列表?

我正在使用 Simplicity Studio 版本 4,它内置在 Keil 工具集中来构建 8051 项目。我的源代码包括 C 和汇编 (.A51) 文件。我的设置创建了一个 .COD 文件,其中包括所有 C 代码的汇编列表,但不包括 .A51 代码。

有没有办法将所有代码都包含在 .COD 文件中?