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

c - 为什么这个简单的 PWM 在 xc8 中不起作用

我知道互联网上有很多例子,但是这段代码需要什么才能工作?

频率振荡器 = 4mhz

周期 = 0.25us

duty_cicle = 250

预分频 = 16

PR2 = 124

我想看看 :

PWM 周期 = 2ms

任务周期 = 1ms

真诚的宁

0 投票
0 回答
645 浏览

c - 传递结构时 XC8 编译器错误,499

我一直在尝试编译代码。我对 XC8 编译器很陌生。我有以下代码。

主程序

bmp280.h

bmp280.c

执行此代码后,我收到错误消息

如我所见,没有错字。命名是正确的。我也希望结构被正确传递。

在 XC8 编译器中我需要注意什么新东西吗?

这是针对pic16f1618微控制器的。

Makefile-impl.mk

0 投票
1 回答
644 浏览

c - 如何在#define 中评估逗号

我正在使用 XC8 编译器开发一个带有 PIC 的小型嵌入式应用程序。在 XC8 中设置引脚的使用(输出或输入),程序员应该执行如下指令:

尤其是:

  • 寄存器前缀中的 TRIS(常量)
  • A是端口
  • bits 是后缀(常量)
  • RA0 是引脚的名称

我想要做的是用人类可读的名称定义所有引脚,例如:

并以这种方式定义一些类似SET_OUTPUT或使用的宏: .SET_INPUTSET_OUTPUT(LED_1)

我试图做的是这两个宏:

但是,先前定义的常量内的逗号不会扩展并解释为单个参数。我也试过:

没有成功。

本质上与这个问题相反:Comma in C/C++ macro

它是否存在解决方案或更方便的方法来做到这一点?

0 投票
1 回答
1744 浏览

c - 错误:(195) 表达式语法

我有一个为 PIC18 和 PIC24 编译的代码库。

在为 PIC24 上的新传感器编写驱动程序时,我为 PIC18 重新编译并且压力计算失败:

在编译时,会抛出错误i2c.c:546: error: (195) expression syntax(第 546 行是该filter_pressure_left =行)。

我看不出任何语法错误来抛出这个错误,这是由使用 xc16-gcc 编译时没有抛出的支持。

编译器版本:

  • XC16-GCC V1.23
  • XC8 V1.33

要求的附加信息周围使用的值:

0 投票
2 回答
580 浏览

pic - 需要使用 mplab 和 xc8 编译器读取 pic16f688 的模拟输入

我正在使用 PIC16f688 尝试读取模拟输入并根据读取的电压打开或关闭灯。使用这张图片,我已经成功地让灯闪烁使用开和关。这是我用于此的代码。

在阅读了不同的内容后,我最终得到了这段代码来尝试读取模拟输入。

当我运行它时,无论输入是什么,灯都会亮起,包括输入接地时。

我在 MPLab 中使用 XC8 编译器。

0 投票
2 回答
348 浏览

pic - MPLAB xc8 pic16f688 pragma for WDTE Ignored

使用 #pragma 时,CONFIG = WDTE OFF
我收到一条消息:

WDTE 设置为 ON 我要更改它吗?

我确实回答是的。
我担心的是其他配置语句被忽略了吗?我说不出来。新话题。尝试用 PIC16F688 使 LED 闪烁。

我让它工作,有点。我确保#pragma 语句在#include 和#define 之前。接下来是#pragma不起作用的语句块。

我采用十六进制方法来避免定义 ON 和 OFF 我在 RUN 下拉菜单下使用 MPBLAB 的“设置配置位”来设置位,将它们更改为十六进制。这仍然给出了WDTE,然后错误消失了,我发现了一个 PWRTE CP 错误。我发现我已将 MCLRE 设置为 1,因此将其设置为 0 我仍然收到配置错误消息,但程序运行了。
然后,我只使用了语句#pragma config CONFIG 0xFF5。我没有收到配置错误,但警告说 0xFF5 将自动截断为0xFFF.
现在一切都运行了,但是,我无法运行调试。

现在有这个问题,我想这是一个不同的线程。然而,问题出现了,配置字是如何形成的,哪些位构成了字的一部分。我试图从一些寄存器中猜测,但一无所获。很高兴知道。此外,注意 0xFFF 将字中的每个位设置为 1 意味着所有 my #pragma config statements (bits) = 1,这是没有意义的。

我使用其他故障排除方法使我的程序和电路运行。我想在将来使用调试。我已经在 PICkit 3 指南中阅读并重新阅读了PGD关于PGC在芯片上运行时钟的信息。我的示波器说我有一个运行时钟(内部 4 MHZ)。PIC16F688 不使用术语PGDPGC,但引脚分别标有ICSPDATICSPCLK。为什么调试不起作用?

0 投票
0 回答
286 浏览

c - 宏定义的 C typedef

我这里有一点复制/粘贴问题。我有一些数据类型,我根据我需要的位数来定义类型。我使用的是 8 位 MCU,因此使用数据适合的最小类型很重要。

代码最终看起来像这样:

我不喜欢这些行:

因为 int16_t 和 MY_TYPE_T 是复制粘贴的。此外,由于我在多个变量上使用它,因此存在复制/粘贴问题,因为我在 MY_TYPE_2_T 和 MY_TYPE_3_t 中重复相同的代码(注意:实际上并未在项目中命名这些“MY_TYPE”)。

我正在寻找一种方法来根据位数对类型进行 typedef 并输出有关该类型的消息,或者如果类型变得太大则给出错误。

0 投票
1 回答
98 浏览

xc8 - XC8 从顶层 ROM 构建字体表

我在 XC8 (1.37) 中编写了一个准系统程序模板,用于为 18F 系列开发和测试新的 GLCD 功能。编程通过 PICkit3 完成。由于我需要快速重新编程几次代码,因此尽可能快地编程非常重要。通常,代码大小约为 2K,编程时间不到 10 秒,一切都很好,直到我必须使用字体表,定义为:

现在,只添加了 400 美元的字节,编译器将表放在 ROM 的末尾,64K 内存的编程需要超过 1 分钟。
有没有办法避免这种情况?

我试图手动限制 MPLABX 选项中的内存范围,但这很烦人并且有点不安全(有时部分代码被截断)。

0 投票
1 回答
1987 浏览

compilation - 微芯片 xc8 编译器 (908) 退出状态 = 1

我正在使用开发板提供的微芯片源代码为 16F1947 开发 dali 代码。

感谢我的公司,我有专业版的编译器,所以我能够使用 PRO 模式构建以前的项目,以及构建工具提供的所有优化。

当我从 microchip 站点下载 dali 项目并尝试使用 xc8 [在 PRO 模式下] 编译它时,构建失败并显示错误消息:

aspic 是他们的汇编程序,从 XC8 上的微芯片用户手册中不清楚信号 11 指的是什么。进一步的测试表明,这与他们的许可证管理器 xclm 有关,因为如果我尝试在没有任何优化的情况下构建他们的代码,并且在自由模式下,它构建得很好。众所周知,这会导致臃肿的代码充满不必要的循环和变量被来回复制。

我在做傻事吗?还是我只需要花更多的钱购买最新最好的编译器版本。

提前谢谢,wb

0 投票
1 回答
940 浏览

performance - PIC 16f1827 ADC 转换太慢 XC8

我按照本教程更改了我的微控制器 16f1827 的代码。我还更改了代码的功能。如果 ADC 值超过最大值的一半,它应该打开一个 LED。ADC 值,如果小于一半,则关闭 LED。

代码在 XC8 中编译没有错误。问题是 PIC 检测到 ADC 变化太慢。如果我将输入引脚连接到正参考值,它会以大约 2 秒的延迟打开 LED。当我将 ADC 输入更改为 0v 时也会发生同样的情况。检测到所有变化都非常缓慢。为什么ADC工作这么慢?