问题标签 [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.
c - XC16 编译器将汇编语句加倍
如果我输入的内联汇编语句是 C,XC8 编译器会在代码中插入两次。例如
结果是
在代码中。
编辑:不只是 NOP;每个语句都加倍
结果是
优化已关闭。该代码适用于 PIC16F1934 微处理器。我们正在使用 MPLAB X。
我该如何防止呢?
c - 用微芯片 xc8 编译器声明一个类
我试图在自由模式下使用 xc8 编译器和 pic16f876a 为项目声明一个库中的类。但似乎 xc8 编译器不接受或编译类......
这是真的?如果没有,有人可以发布一个例子吗?
谢谢!!
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”,因为它有错误,所以你知道定义有什么问题吗?
谢谢和我最好的问候
microcontroller - 在 PIC16F1455 中使用 RA5 作为 XC8 编译器的数字输出
我正在尝试将 RA5 作为数字输出。但这似乎不起作用。我浏览了数据表,发现 RA0、RA1 和 RA3 只是输入。这意味着RA5同时支持输入和输出,对吗?为什么我不能让 RA5 输出数字 1?
preprocessor - XC8 警告:(107) 非法 # 指令“foo”
我编写了相当多的代码,可以在各种构建系统(例如 CCS、Visual C、Embarcadero CBuilder、Microchip XCn)下编译。由于各种编译器在定义内联或中断例程等内容的方式上有所不同,因此我使用#if/#elif/#else 构造来满足它们的要求。GCC 预处理器文档甚至建议将此作为#if 等的一个很好的用途。
对于我的微处理器构建工具,CCS 系列编译器和 XC16(基于 gcc)处理得很好,但 XC8 坚持查看非活动的 #if 块并生成警告。
例如,代码
生成警告
生成了数百个这样的警告,因此很难看到合法的警告和/或错误。
有没有人有关于如何让 XC8 对它甚至不应该解析的事情闭嘴的建议?我找不到关闭此警告的标志。
microcontroller - Pic18F2520 复位
我正在尝试通过 I2C 协议控制 BMP180。问题是 Pic 一直在重置。我改变了图片,它是一样的。
配置代码如下:
和主要代码:
我通过串行将数据发送到 Arduino,然后将其打印在计算机上。几乎总是当我尝试打印它时,它只打印“2”,有时,他会写句子并打印来自包含 BMP180 的模块的数据。但大多数时候,Arduino 显示给我的是:22222222...我已经测试过设置 MCLR = OFF,但它仍然是一样的。
通道 SDA 和 SCL 的电阻为 4.7k 至 3.5V。该模块采用 3.5V 供电,但图片采用 5V 供电。我不认为这个模块的问题是强度太高。我可能忘记了什么吗?
奇怪的是,当我触摸图片时(当我尝试更换一些电线或其他东西时)它会自动重置。
非常感谢。
曼努埃尔。
microcontroller - 顺序读取后 EEPROM 停止响应
我正在使用带有 PIC18F4550 微控制器和 xc8 i2c 库函数的 24C256 eeprom。我可以随机读取任何给定的地址,但是当我尝试进行顺序读取时,它只能在地址 0x0000 和 0x0031 之间工作。
如果尝试从 0x0032 到 0x003F 进行顺序读取,则 eeprom 在我完成读取后会停止响应,并且如果微控制器尝试进行任何其他读取操作,则会挂起。我正在使用的顺序读取功能的代码如下
function - PWM功能不断重复我不知道为什么
所以我在 MPLABX 中创建了这个程序,我主要使用它来学习用 C 语言编写未来的项目。我想将一些硬件/寄存器的东西放入函数中,以保持整洁和易于阅读。出于某种原因,我的 PWM 功能不断重复,尽管我做了什么,但我无法让它运行然后停止。
这是我所拥有的:
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