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

c - XC16 编译器将汇编语句加倍

如果我输入的内联汇编语句是 C,XC8 编译器会在代码中插入两次。例如

结果是

在代码中。

编辑:不只是 NOP;每个语句都加倍

结果是

优化已关闭。该代码适用于 PIC16F1934 微处理器。我们正在使用 MPLAB X。

我该如何防止呢?

0 投票
1 回答
3098 浏览

c - 用微芯片 xc8 编译器声明一个类

我试图在自由模式下使用 xc8 编译器和 pic16f876a 为项目声明一个库中的类。但似乎 xc8 编译器不接受或编译类......

这是真的?如果没有,有人可以发布一个例子吗?

谢谢!!

0 投票
0 回答
1015 浏览

modbus - 带有 MPLAB X XC8 的 PIC18F 上的 Freemodbus

我正在尝试在 MPLAB X ide 和 XC8 编译器上将 freemodbus 库从 microchip 改编为微控制器 PIC18F。

我已经尽可能多地纠正了,目前我遇到的问题是关于 sintaxis,

我想知道是否有人可以帮助我解决下一个问题,在我的文件上,我已经完成了与编译器匹配的类型声明,例如 UCHAR = uint8...

在文件mbframe.h

我收到错误:

modbus/functions/../includes/mbframe.h:77:错误:(194)“)”预期

正在那里定义参数(pucRcvAddress、pucFrame、pusLength)好吗?

关于 peMBFrameReceive 我认为它在文件mb.c中声明:

它没有错误,而是警告

modbus/mb.c:65:警告:(374)缺少基本类型;int 假定

在 mb.h

我的理解是“typedef eMBErrorCode(...”是定义,“static ...”是声明。

而且它找不到类型“peMBFrameReceive”,因为它有错误,所以你知道定义有什么问题吗?

谢谢和我最好的问候

0 投票
1 回答
920 浏览

microcontroller - 在 PIC16F1455 中使用 RA5 作为 XC8 编译器的数字输出

我正在尝试将 RA5 作为数字输出。但这似乎不起作用。我浏览了数据表,发现 RA0、RA1 和 RA3 只是输入。这意味着RA5同时支持输入和输出,对吗?为什么我不能让 RA5 输出数字 1?

0 投票
1 回答
404 浏览

preprocessor - XC8 警告:(107) 非法 # 指令“foo”

我编写了相当多的代码,可以在各种构建系统(例如 CCS、Visual C、Embarcadero CBuilder、Microchip XCn)下编译。由于各种编译器在定义内联或中断例程等内容的方式上有所不同,因此我使用#if/#elif/#else 构造来满足它们的要求。GCC 预处理器文档甚至建议将此作为#if 等的一个很好的用途。

对于我的微处理器构建工具,CCS 系列编译器和 XC16(基于 gcc)处理得很好,但 XC8 坚持查看非活动的 #if 块并生成警告。

例如,代码

生成警告

生成了数百个这样的警告,因此很难看到合法的警告和/或错误。

有没有人有关于如何让 XC8 对它甚至不应该解析的事情闭嘴的建议?我找不到关闭此警告的标志。

0 投票
2 回答
2144 浏览

microchip - 计算机无法识别 PICkit 3

我在 MacBook Pro 和 PIC16F1827 上获得了全新的 PICkit 3、MPLAB X。我用 xc8 编译器建立了一个新项目,据我所知,一切都正确设置。然后我连接了我的 PICkit,并认为它会开始下载和刷新新固件。

相反,它只是将状态 LED 闪烁红色,但什么也没发生。我已打开 PICkit 电源并且连接处于活动状态。

这是我在尝试启动调试会话时得到的:在此处输入图像描述

我尝试重新安装 MPLAB X 并切换 USB 电缆,以防出现故障。有什么建议么?

0 投票
1 回答
441 浏览

microcontroller - Pic18F2520 复位

我正在尝试通过 I2C 协议控制 BMP180。问题是 Pic 一直在重置。我改变了图片,它是一样的。

配置代码如下:

和主要代码:

我通过串行将数据发送到 Arduino,然后将其打印在计算机上。几乎总是当我尝试打印它时,它只打印“2”,有时,他会写句子并打印来自包含 BMP180 的模块的数据。但大多数时候,Arduino 显示给我的是:22222222...我已经测试过设置 MCLR = OFF,但它仍然是一样的。

通道 SDA 和 SCL 的电阻为 4.7k 至 3.5V。该模块采用 3.5V 供电,但图片采用 5V 供电。我不认为这个模块的问题是强度太高。我可能忘记了什么吗?

奇怪的是,当我触摸图片时(当我尝试更换一些电线或其他东西时)它会自动重置。

非常感谢。

曼努埃尔。

0 投票
0 回答
267 浏览

microcontroller - 顺序读取后 EEPROM 停止响应

我正在使用带有 PIC18F4550 微控制器和 xc8 i2c 库函数的 24C256 eeprom。我可以随机读取任何给定的地址,但是当我尝试进行顺序读取时,它只能在地址 0x0000 和 0x0031 之间工作。

如果尝试从 0x0032 到 0x003F 进行顺序读取,则 eeprom 在我完成读取后会停止响应,并且如果微控制器尝试进行任何其他读取操作,则会挂起。我正在使用的顺序读取功能的代码如下

0 投票
1 回答
69 浏览

function - PWM功能不断重复我不知道为什么

所以我在 MPLABX 中创建了这个程序,我主要使用它来学习用 C 语言编写未来的项目。我想将一些硬件/寄存器的东西放入函数中,以保持整洁和易于阅读。出于某种原因,我的 PWM 功能不断重复,尽管我做了什么,但我无法让它运行然后停止。

这是我所拥有的:

0 投票
1 回答
1036 浏览

c - PIC18F45K22内部振荡器频率问题

今天我开始了一个项目,尝试用 PIC18F45K22 做一些事情。我以前为其他控制器编写的代码有一些时间问题。原来是控制器的时钟频率有问题。

正如数据表告诉我的那样,使用内部振荡器时,我的默认时钟频率应该是 1MHz。根据我的示波器,我在 OSC2 (RA6) 引脚上测量了 250kHz 的时钟频率。所以我开始在数据表中四处寻找,并从数据表中找到表 2-3。该表显示当控制器处于睡眠模式时,OSC2 引脚将为“时钟/4”,这可能是我的问题的根源,因为 1MHz/4 = 250kHz。根据第 3.0 章,当设备复位时,控制器将以 PRI_RUN 模式启动,除非启用了双速启动。因此,为了确保我使用以下配置行禁用了此模式:

该行将禁用内部/外部振荡器切换位,这将根据第 2.12.1 段禁用双速启动。

现在我尝试了 OSCCON、OSCCON2、OSCTUNE 寄存器的多种设置,但都失败了。在这一点上,我想不出是什么导致了这个“问题”。我希望有人能发现我的错误,以便我可以在指定的时钟频率上运行设备。

目前我设置了这些配置位:

数据表 (1):http ://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf