问题标签 [8051]

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 投票
3 回答
1409 浏览

c - 使用 SDCC (Little Endian) 编译器时这个算法有什么问题?

我是 C 编程的新手,我正在为我的 MCU 开发固件应用程序。当我使用 KEIL 编译器(Big Endian)时,此方法工作正常,但当我切换到 SDCC 编译器(Little Endian)时,它无法正常工作。有人可以解释我做错了什么吗???

目标设备是基于 8051 架构的 Silicon Labs C8051F320。

添加:首先,我现在将 MotorSteps 和 MotorSpeed 更改为无符号整数。 在我的调试器中,由于某种原因,如果我在 if 语句行设置断点,在此函数 MotorSteps = 00 的第一个入口处,因此 t 也应该分配为 0,但调试器显示 t=0.031497(十进制)。如果我将调试器切换为以十六进制显示,t = 0x3d010300。这就像 t 永远不会被分配......

0 投票
3 回答
3877 浏览

sleep - 如何在 8051 微控制器上等待一秒钟?

我应该编写一个程序,将一些值发送到寄存器,然后等待一秒钟,然后更改值。问题是,我找不到将停止操作一秒钟的指令。

0 投票
4 回答
4926 浏览

c - 是否所有 C 编译器都允许函数返回结构?

我正在使用 C 语言编写程序,并将 SDCC 编译器用于 8051 架构设备。我正在尝试编写一个名为 GetName 的函数,该函数将从闪存中读取 8 个字符并以某种形式返回字符数组。我知道不可能在 C 中返回一个数组,所以我尝试使用这样的结构来完成它:

我还没有对这个函数的任何引用,但由于某种原因,我收到一个编译器错误,上面写着“函数无法返回聚合”。这是否意味着我的编译器不支持返回结构的函数?还是我只是做错了什么?

0 投票
3 回答
1342 浏览

linker - 为什么在C程序中使用结构会导致链接错误

我正在为 8051 架构芯片和 SDCC 编译器编写 C 程序。

我有一个名为 FilterStructure 的结构;

我的代码看起来像这样......

出于某种原因,我收到链接错误“?ASlink-Error-Could not get 29 Continuous bytes in internal RAM for area DSEG”

如果我注释掉表明FilterStructure testStruct;错误消失的行。

这个错误是什么意思?完成后是否需要丢弃结构?

0 投票
1 回答
7267 浏览

embedded - AT89C51 和 AT89S51 有什么区别?

您如何将这些连接到您的计算机?哪个更容易燃烧?

0 投票
7 回答
2139 浏览

c - 8位处理器必须面对字节序问题吗?

如果我在 8 位处理器的内存中有一个 int32 类型的整数,比如 8051,我如何识别该整数的字节序?它是编译器特定的吗?我认为这在通过串行线路等发送多字节数据时很重要。

0 投票
4 回答
15005 浏览

c - 从 16 位地址中划分高/低字节的方法?

我正在 8051 处理器上开发软件。一个常见的工作是划分一个 16 位地址的高字节和低字节。我想看看有多少种方法可以实现它。到目前为止我提出的方法是:(说 ptr 是一个 16 位指针,而 int 是 16 位 int)[注意 rn 和 arn 是寄存器]

按位运算

SDCC 给出以下汇编代码

Keil C51 给了我: 其中有许多无用的代码恕我直言。

指针技巧

SDCC 给了我: Keil C51 给了我: 这与 SDCC 版本相同。

安德烈的数学方法

p>

SDCC 给出:

我不知道为什么 sdcc 使用 r7 寄存器... Keil C51 给了我: 我不知道为什么 Keil 也不使用 R2 寄存器...

semaj 的联合方法

p>

SDCC 给了我

Keil C51 给了我: 这对指针技巧非常微笑。但是,这种方法需要多两个字节的内存来存储联合。

有没有人有任何其他好的想法?;)

任何人都可以告诉我哪种方式更有效?

如果有人感兴趣,这里是测试用例:

}

0 投票
3 回答
1740 浏览

c - 对于 8 位 MCU,用 C 语言进行除法的最快方法是什么?

我正在为使用 8 位 mcu(8051 架构)的设备开发固件。我正在使用 SDCC(小型设备 C 编译器)。我有一个功能,用于设置我的电路驱动的步进电机的速度。通过将所需值加载到定时器的重载寄存器中来设置速度。我有一个变量 MotorSpeed,它在 0 到 1200 的范围内,表示电机每秒的脉冲数。我将 MotorSpeed 转换为正确的 16 位重载值的函数如下所示。我知道浮点运算非常慢,我想知道是否有更快的方法来做到这一点......

0 投票
2 回答
7399 浏览

c - 8051 外部中断

如何开启8051的外部中断?

0 投票
3 回答
9253 浏览

c - 需要帮助配置端口以输入 8051

连接如下 红外传感器电路产生 0 或 5v 取决于闭合或开路输出线到微控制器 8051 philips 的端口 2_0 引脚。问题是当我这样做时,电路值被端口 2_0 LED 上的当前值覆盖总是继续。这是我的代码(在 keil c 中)我想我没有正确配置 P 2_0 作为输入

编辑:我遇到了一个问题,因为我使用的 8086 处理器有故障。建议任何人在编程时尝试这个以获得一些备件。