问题标签 [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.
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 兼容控制器)验证字符串打印的内容
具有以下功能:
c - const 参数的目的不是避免错误
我正在使用仅支持 C90 的 keil C51 C 编译器对 8051 微控制器进行编程。
我想通过UART发送一个字节的数据,函数如下所示:
使用1:
使用2:
在后一种情况下,发送了 1 个字节,但不是正确的值 (123)。
如果我将代码更改为:
然后一切正常。
根据我的理解和互联网上的几个来源,“const”的唯一目的是防止函数更改其参数(换句话说,防止程序员错误地更改参数)。那为什么我的第二种方法不起作用?
编辑:这是我的完整代码:
UART.h
UART.c
主程序
c - 执行精英 el exe 失败
我正在使用elite el el net 版本。我们从 senselock europa 购买了这个加密狗,但我们的加密狗试用套件中没有 e4nmgr.exe。我可以在哪里找到它。我从这个论坛下载了 sdk,但它不起作用,因为它是 russich。
我在下面的教程中编写代码。并为加密狗编写uvision代码,但是当我想运行它时。它给出一个错误“执行精英 el exe 失败”。这是关于 e4nmgr.exe 还是不同的我使用 mt 库并且我在 64 位下工作。
是网络版加密狗不支持执行。
这是我的主要代码:
这是我的usb代码我使用uvision c51作为下面的代码。
c - 在 Eclipse 中的宏中使用宏粘贴无效
你好我有以下问题:
- IDE:Eclipse 版本:2018-12 (4.10.0),带有 Keil C51 插件(用于语言映射)
- 编译器(外部):Wickenhäuser uc51
这里的问题:Eclipse Bad Character Sequence
Keil 语言映射使用以下语法:
Wickenhäuser 略有不同:
所以我来到了这个工作解决方案:
但是这个解决方案并不完美,(双写等)应该是这样的:
不幸的是 Eclipse 标记了这一点:在宏 AT_ADDRESS 中使用宏粘贴无效
c - 如果按顺序声明可分割变量,它们的地址是否会递增
我们有很多文件的 ac 程序,我们想知道一件具体的事情。
我们正在用 C51 编译它。
如果,假设在其中一个文件中,我声明了一些变量,例如:
他们的地址会以相同的顺序递增吗?正如他们所宣布的那样?
我意识到可以使用数组或结构来增加地址,或者我可以分配选择的固定地址,但这不是问题。
keil - 为什么使用 `^` 来获取 C51 中的特定 sbit?
^
这只是 XOR( ref ) 运算符对吗?不会超载什么的。
我怎么能得到sbit
XOR 运算符?
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
)。
在编译时是否需要一些指令来正确调整这些结构指针的大小?
c51 - 如何在 Keil .COD 文件中包含来自 .A51 文件的汇编程序列表?
我正在使用 Simplicity Studio 版本 4,它内置在 Keil 工具集中来构建 8051 项目。我的源代码包括 C 和汇编 (.A51) 文件。我的设置创建了一个 .COD 文件,其中包括所有 C 代码的汇编列表,但不包括 .A51 代码。
有没有办法将所有代码都包含在 .COD 文件中?