问题标签 [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.
pic - 将对数值转换为线性 (xc8)
我打算在 PIC16F 系列设备中使用 ADC 将来自对数输出传感器的输入“转换”为线性刻度,以便我可以在 PIC 的端口上呈现它(作为“线性二进制值”),尽管减少了解析度。
Arduino的传感器手册中有一些示例代码 -
XC8(Microchip 的 C 编译器)中是否有类似的功能?我看过,但似乎只有将线性值转换为对数的函数,还是我很傻?
问候拉尔夫
c - 有符号除数上的 % 运算符需要 C 中的更多程序内存
情况1:
案例2:
使用 Microchip XC8 编译器,我发现案例 1 需要更多指令(使用的程序内存几乎没有增加)。为什么?
注:8 位 CPU。XC8 编译器符合 C89 标准。
部件:
c - 8 位值是否有文字后缀?
我正在使用 xc8 编译器并想告诉他我的文字只有 8 位宽。
123
: 无后缀,默认 int(xc8 中为 16 位)
123U
:unsigned int 也是 16 位宽
对于描述 8 位文字的干净解决方案有什么想法吗?
c - 在 PIC18f87k22 上使用 EUSART 模块时出现问题
我正在尝试在 arduino pro trinket 和我的 PIC18f87k22 之间配置 UART 通信。运行我的代码时,出现以下错误:
这是函数的原型:
这就是我使用它的方式(到目前为止唯一的用途):
我尝试用 unsigned char 或 uint8_t 替换 char 类型,但它没有改变。关于我的代码有什么问题的任何想法?泰
c - 如何使用 PIC18f87k22 定时器作为中断
这是关于如何在 PIC 上使用 timer0 的一般问题。
我正在尝试使用 PIC18f87k22 和 arduino pro trinket 构建直流电机控制系统。
在我的程序中,我有一个名为get_courant()
. 此函数向 trinket 发送请求并读取接收到的答案(通过 uart)并将该值存储在我的一个全局变量中,从而实现它。
我想做的是按如下方式使用计时器:
如果get_courant()
需要超过 10us 才能继续,则跳过它,直接转到我的 main.js 中的其余说明。
我知道我应该在调用函数之前启动一个计时器,并以某种方式读取计时器值来决定是否跳过它。
但是,如果我在调用函数后检查计时器值,那么如果 `get_courant() 的执行超过 10us,我的时间可能会被浪费,在这种情况下,计时器是无用的。
任何提示可以帮助我实现我想要实现的目标(如果我的英语不好的话,IDK)?这是get_courant()
如果可以提供任何帮助的代码:
这是我调用 get_courant() 的主要功能的一部分:
c - 初始化联合/结构的正确方法是什么?
我有以下工会:
知道我想使用我的类型并初始化变量。扫描后(我想)我找到了解决方案:
但是我的编译器给了我一条错误消息:
“@”所需的简单类型
通常,xc8 编译器使用“@”将变量带到特定地址。
c - PC-Lint 如何忽略表达式或宏
我有一个 xc8 程序,我在其中预定义了 EEPROM:
知道我喜欢 PC-Lint 在我的所有文件中忽略这样的表达式。
c - 带有 XC8 v1.43 的 PIC16F1717,可用于键盘按键
我有一个 4x3 矩阵键盘连接到 PIC16F1717 的端口 B (RB1-RB7)。我通过依次将每一行设置为高并读取列值来扫描键盘按键。按下的键可以通过匹配行和列来解码。我正在以短暂的延迟去抖动:
两个变量 key 和 keyCount 分别记录按下了哪个键,以及按下了多少个键。当按下 4 个键时,我想执行以下代码:
这也在 main 函数内的 while(1) 循环中。我遇到的问题是增加 keyCount 不起作用。以前,我尝试过 keyCount++ 并且它有效,但在此之前这也不起作用。我尝试通过设置 keyCount = 4 而不是将其递增一来进行调试,并且它起作用了。
这两个变量都在 main 函数内声明(并初始化),但在 while(1) 循环之外。另外,我定义了以下内容:
c - 使用带有 gpio 引脚的 xc8 编译器在 C 中初始化驱动程序
假设我有一个驱动程序“foo.h”和“foo.c”实现。驱动程序与微控制器上的 gpio 引脚交互。
在 Arduino 中,每个 GPIO 引脚都有自己的引脚号(只是一个整数)。然后您可以使用函数 initFoo(1) 或 initFoo(2) 初始化 foo,以选择您要使用的引脚。
在 Mbed 在线 c++ 编译器中,每个 GPIO 都可以通过 DigitalIn 或 DigitalOut 对象进行控制。
在我也熟悉的 JAL(另一种语言)中,他们使用 alias 关键字。
如何使用 Microchip xc8 c 编译器实现类似的功能?我尝试了使用 define 关键字的 JAL 方法,但编译器不知道“x”是什么。它说未定义的标识符'x'......?
pic - PIC MCC i2c HT16K33 问题
有没有人使用 MCC i2c 生成的代码成功驱动了 HT16K33?
使用我自己的基本 i2c 代码,我可以让 HT16K33(下面的链接)正常工作,但无论我尝试什么,MCC i2c 代码都无法正常工作。作为健全性检查,我的 MCC 代码与 PCF8574 io 扩展器一起工作正常。我在面包板上用 16F18877 进行测试,没有原理图,HT16K33 在 Adafruit 板上(下面的链接),一切都经过验证,可以使用我的 i2c 代码和 io 扩展器。
HT16K33 是一款 LED 控制器。需要三个 i2c 命令来测试、打开振荡器、打开显示并将数据发送到显示内存。Holtek 建议在程序入口处有 100ms 的延迟,以允许芯片在任何 i2c 命令之前启动。通过使用我的工作代码来显示和 ram 数据,我将其归结为 MCC 代码的最简单测试,仅使用 MCC 代码启动振荡器,这是第一步。
http://www.holtek.com/documents/10179/116711/HT16K33v120.pdf https://learn.adafruit.com/assets/32012
有任何想法吗?