问题标签 [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 投票
2 回答
1571 浏览

c - Keil uVision(C51编译器),一元运算符“!”是什么意思?

我正在使用 Keil uVision 4 进行编程。

我有一些这样的代码:

我可以控制`P3^3通用输入引脚,因为在这个引脚上我有一个 PIR(脉冲红外传感器)。它在闪烁时给我 1 在那条线上,在它睡觉时给我 0。

P3^3被上拉到 时1,输出为(如预期的那样)10101010101010..

当它仍然为0时,输出为(如预期的那样)0000000000000..

我得到的行为是我上面描述的,考虑到这sbit X是由 PIR 设置/取消设置的。

那么问题来了,!Keil C51编译器中的操作符是什么意思呢?

0 投票
2 回答
1289 浏览

assembly - C51 C 编译器内联汇编到 SDCC 内联汇编

我不是很喜欢汇编,但对于一个项目,我必须将 C51 C 编译器的几行汇编代码修改为 SDCC。

这是 C51 的代码

其中,用 SDCC 编译产生

作为编译器错误/警告。

  • 我知道$- 符号被汇编器替换为指令的实际地址 - 但是 SDCC 等价物是什么?
  • 如何解决T0Run等的警告?
0 投票
1 回答
510 浏览

assembly - SDCC/C51:重新定义 SDCC 符号

我想在SDCC下编译一个我以前在C51下编译的程序..

这将被翻译成75A800(十六进制)

当我在 SDCC 下编译这个

在我看来,SDCC 忽略了我对 TCON 寄存器的定义,如下所示:

所以这是我的问题:

如何告诉 SDCC 使用我在另一个头文件中定义的地址?

整个事情当然是这样的:

0 投票
1 回答
886 浏览

c - printf() 导致乱码

我有这个代码:

它使用这个功能:

这是结果:

这是在 Keil C51 编译器上,在 AT89C55WD 上,printf()通过串行端口。

到底是怎么回事?

编辑

我将 printf 行更改为

所以它看起来像一个错误printf。程序员们,请永远不要制作一个说谎的调试工具。我祈求你。

0 投票
1 回答
659 浏览

c - 为什么使用 data 而不是 xdata 会显着减少代码空间

我曾尝试寻找答案,但找不到明确的原因。

我正在尝试优化一些 8051 C 代码以减少代码空间。我做了以下更改..

...并看到我的代码大小减少了 39 字节(感觉像圣诞节)。

来自:程序大小:data=9.0 ...code=10509

to:程序大小:数据=11.0 ...代码=10468

问题:为什么代码空间因如此微小的变化而减少了这么多?

0 投票
2 回答
1073 浏览

c - 我想在 c51 (Keil) 的液晶显示器上打印一个多维字符数组

(数组用一堆字符初始化)

当我使数组更大时,我也会收到一条错误消息“数据段太大”。如何将数组从“CODE”复制到“XDATA”?或者这不是问题吗?

编辑:另外,当我以这种方式调用函数时,lcd 会跳过数组中的元素 [i] [] 并打印下一个元素 [i]。

任何帮助我都会非常感激。

0 投票
0 回答
368 浏览

c - 为 GCC 适配 sbit

我正在为一些 C 模块编写测试工具,其中一个包含“sbit”关键字。该代码最初是为 Keil C51 编译器编写的,其中 sbit 用于定义 sfr 中的位,更多信息请参见此处。但是,我正在使用 GCC 编写测试工具,其中未定义 sbit。我尝试了静态、const、int 和 bool 的所有组合,但似乎没有一个能满足编译器的要求。#define 也不起作用,因为这些变量在代码的更下方被赋值。

这个站点上有一个类似的问题,表明 sbit 对 GCC 来说可能太低了。无论如何,我能做些什么来解决这个问题吗?

0 投票
1 回答
664 浏览

8051 - 绝对函数地址keil 8051

C51 Keil如何定位和调用具有绝对地址的函数?后台 ROM 有一些实用功能。我想调用这些函数以优化闪存的代码空间。

0 投票
1 回答
105 浏览

microcontroller - keil c51 奇怪的掩蔽行为

我正在尝试从 c8051f040 控制器读取两个引脚。

直接读取端口可以工作,但是即使调试器显示正确的值,将相同的端口值保存到变量也不起作用。

这是一个 KEIL c51 错误还是正在优化的东西。

0 投票
1 回答
253 浏览

8051 - 8051句词计数器

我在互联网上找到了下面的这段代码,假设它可以计算 8051 MCU 上的句子。有人可以向我解释一下有问号的地方到底发生了什么。任何形式的帮助将不胜感激。