问题标签 [xc8]

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 回答
597 浏览

random - 编程前xc8随机数

我使用 pic16f1823 生产 100 个遥控器,我需要每个遥控器的唯一 ID,但它应该随着时间的推移保持不变,所以我认为最好在 mplab 编译器中编程之前生成一个随机数,然后编译这 100 个遥控器我不想手动更改 remote_id

请帮我解决这个问题

0 投票
2 回答
297 浏览

c - XC8:无法定义自动数组

我定义了一个自动字符数组如下:

当我编译它时,编译器返回以下错误:

但是当我将其更改为:

程序编译成功。

注1:

我的目标设备是 16f1829。

笔记2 :

编译器版本为 1.30。

0 投票
1 回答
187 浏览

c - XC8:不使用定义的变量

我定义一个结构如下:

并在“sprintf”函数中使用 WIFI_connection_info_g[0] 变量:

当我编译上面的代码时,编译器会产生以下错误:

wifi_tempalte.h:290: 错误: (1402) 指向 eeprom 的指针也不能指向其他数据类型

但是当我更改“sprintf”函数并使用“zz”变量时,如下所示:

它编译成功。

注 1:我的目标设备是 16f1829

注2:编译器版本为1.30

0 投票
1 回答
242 浏览

warnings - Microchip XC8,奇怪的标志警告

我正在使用 Microchip XC8 并且有点困惑。我有那个代码:

我收到警告:

我发现所有文字都是默认签名的,所以我把所有的 u 都放在了。它在任何地方都有效,除了我指出的那条线。也不会产生非警告结果的是:

警告仍然存在。

这条线发生了什么?:D

此致!

0 投票
2 回答
112 浏览

c - 在 XC8 V1.44 中按位 OR'ing 文字时出现间歇性转换警告

在 XC8 (v1.44) 项目中编写一些位掩码值时,我发现了这种相当奇怪的行为:

第 3 行和第 5 行发出警告:

警告:(752)转换为更短的数据类型

虽然第 4 行没有。我知道在执行 OR 操作之前操作数被提升为 int ,这就是缩小警告的来源。但是,为什么它只在某些行上发出警告而不在其他行上发出警告?

是否有某种晦涩的 C 规则在起作用,或者这只是一个编译器错误?

0 投票
1 回答
397 浏览

c - 来自 UART 的数据以更新数组

希望有人可以在这里帮助我。对 C 语言相当陌生(来自 PHP 背景),几天前就被困在这个问题上。仍在尝试获得头部圆指针等,这是 PHP 所没有的乐趣。

所以基本上,我希望能够将数组中的特定值更新为通过 UART 给出的值。UART 一切正常。只是无法让代码工作以更新数组。来自 UART 的数据将位于下面代码中的字符串“uart”中,并将具有值“0430”(前 2 位是指数组键,第二位是要更新到的值)。

新数组现在应该是:{05,76,33,02,30,07,34,32,65,04,09,32,90,03,44};

任何建议都会很棒,即使是简短的解释也能很好地帮助我理解。

提前致谢

0 投票
1 回答
137 浏览

pic - CAN通信在不同的PIC之间不起作用

我正在做项目,我们需要在 4 个节点之间建立 CAN 通信,2 个使用 PIC 18F4580,2 个使用 18F25K80。在所有这些电路中,我使用的是 20MHz 的晶体振荡器。问题是当我测试相同 PIC 之间的通信时,它可以正常工作,但是当我尝试使用两个不同的 PIC 时,它无法正常工作。

我用来测试的代码:对于发射 PIC 18F4580:每 1 秒发射一条 CAN 消息:

对于接收节点 PIC 18F25K80:收到任何 CAN 消息后闪烁(应每 1 秒闪烁一次):

任何帮助将不胜感激,谢谢。

0 投票
1 回答
216 浏览

c - USART 在 PIC18F2550 上崩溃,我该怎么办?

我正在使用一对 xBEE S2C 与 PIC18F4550 和 PC 进行通信。我正在使用 xc8 来编译代码。

我用 Xbee 从 PC 向 PIC 发送一些字符,然后我发送一个“/r”,而 PIC 必须将我发送的字符返回给我。它工作了 9 次迭代,然后它崩溃了。图像显示
串行控制台(红色字符是 PIC 的响应)。

我试过重置 EUSART,但这似乎不起作用。在第 9 次迭代时总是失败。我已经阅读了 OERR 的一些帖子,我尝试了很多东西,但都没有解决我的问题。

编辑:***注意:如果包的传输间隔小于 1500 毫秒,则会出现此错误。我需要至少每 300 毫秒传输一次。

有人知道它可能是什么?谢谢

0 投票
2 回答
983 浏览

pic - MPLAB X + XC8 在错误的行中断

我遇到了一个非常烦人的问题,现在已经花费了几个月的时间。

我在 MPLAB X 中有一个项目。当我使用行断点时,它在调试我的项目时根本不会在正确的行上中断。

我正在使用 MPLAB X v4.15

这是我有断点的地方,我什至添加了 __nop() 操作,但也尝试了没有它

这就是实际发生的情况: 调试器在非常非常错误的地方中断。 每次都会发生这种情况,无论实际断点在哪里。

无论断点在哪里,调试器都不会在正确的位置中断。

  • 如果我在某处放置断点,它总是在错误的位置中断
  • 如果我然后重新启动调试它会在相同的错误位置中断
  • 如果我更改断点位置,程序实际中断的位置会有所不同,但当我重新启动程序时,它会再次保持不变。

更多信息:

项目信息

为什么会这样?

遇到这个问题的人多吗?

我该如何解决这个问题?

编辑

可悲的是,K_Trenholm 建议的解决方案对我不起作用。我在一个函数中放置了 3 个“NOP”,但它没有按照您的建议工作。见下图:

在一个函数中插入 3 个 NOP

但我得到的是:

错误的断点

我想补充一点,我为 NOP 尝试了各种断点组合。无论我做什么,对于这种情况,程序总是在同一台 PC 上停止,如上图所示。

感谢您的回复,甚至对如何解决它有任何想法都非常有帮助。如果您有任何其他想法,如果您能分享,我将不胜感激!

0 投票
1 回答
1039 浏览

c - MPLAB XC8 编译器 PIC18F452 多路复用七段显示代码正常工作

我目前正在编写涉及 MPLAB XC8 编译器、带有多路复用七段显示器的 PIC18F452 的代码。我想使用连接到 PIC18F452 的 PORTB 的引脚 RB2 和 RB3 的两个按钮来增加和减少变量“计数”,并在此显示器上显示从 0 到 99 的数字。原理图和代码如下所示。

这段代码的功能相对来说是这样,我不认为原理图是我看到的问题的罪魁祸首,字节数组也不是不正确的,因为在使用带有 1 段显示的数组时我能够看到每个数字。

尝试使用下图所示的这种多路复用方案时会出现问题。我可以在七段显示器上成功显示两个数字,但是执行此代码时出现奇怪的异常。一方面,我似乎无法在任一显示器上显示数字 1、4 和偶尔 7,但是当这个数字没有显示时,显示器是空白的,当再次按下按钮时,下一个数字会按预期显示。

例如:

显示屏显示以下数字序列的数字: 9... 1 0... 11 ... 1 2 1 3... 14 ... 等...

或者

3 4 .... 35... 36... 3 7 ....

不确定问题出在哪里,调试进展不顺利......任何帮助将不胜感激。

多路 7 段显示器示意图

主要代码

用于索引阵列中的最高有效数字和最低有效数字的功能,这些数字将被发送到端口以吸收低电流以进行公共阳极显示。

按钮按下代码

将数组中的字节向左旋转两个位置以显示在端口上的函数

将索引数组字符输出到 PORTC 和 PORTB 引脚的函数

延迟功能

初始化要使用的引脚(0 输出,1 输入)