问题标签 [mplab]
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 - MPLab 中的 inline 关键字是否相关?
它似乎没有像其他公认的关键字那样突出显示,但我没有收到编译器错误。
有没有办法检查组装?我不在 unix 环境中,所以我不能做 objdump,但是有没有其他方法可以查看相应的文件?
谢谢!
c - 为什么这个 PIC 代码不能点亮我的 LED?
以下代码不会将我的 PIC18F14K50 上的任何引脚设置为高电平,但它再简单不过了!
我正在使用 MPLAB v8.43 和 Hi-Tech ANSI C 编译器。
逻辑探头显示除 VUSB 和 MCLR 外没有任何引脚为高电平。
有任何想法吗?
microcontroller - 读取 PIC18 上输入引脚的状态
我已经能够让输出在我的 PIC 上工作,并且可以在我将各种输出锁存器设置为高/低时使一堆 LED 闪烁。但是,我在大头针状态下阅读时遇到了很多困难。
请参阅下面的代码。我设置了我的配置,并将 TRISC 定义为输入,将 TRISB 定义为输出。在一个无限循环中,我检查 RC6 是高还是低,并根据结果将整个 B 锁存器设置为高或低。
代码编译良好,没有警告或错误。如果我的代码逻辑只是将锁存器设置为高电平和低电平,那么效果很好,但我无法成功读取引脚的状态。
有任何想法吗?
我正在使用 PIC18F14K50 和 MPLAB v8.43 以及 HiTech ANSI C 编译器。
我的连接是 +5V 到 VDD(引脚 1),VSS(引脚 20)到地。我有 +5V 到 C6(引脚 8),以及从 B7(引脚 10)到地的 100K 电阻和 LED。要切换 RC6,我将电线连接/断开连接到 C6。
c - PIC18F 延迟
我正在使用带有 HiTech ANSI C 编译器和 MPLAB v8.43 的 PIC18F14K50。我的 PIC 代码终于启动并运行和工作,除了延迟功能。这对我的应用程序至关重要——我需要它在给定的毫秒、秒或分钟数内处于某些状态。
我一直试图为此找到解决方案大约 2 周,但到目前为止还没有成功。我放弃并asm("nop");
在循环中编写了自己的延迟函数,但这会产生非常不可预测的结果。如果我告诉它等待半秒或 5 秒,它就足够准确了。但是,一旦我告诉它等待更长的时间——比如 10 分钟,延迟只会持续大约 10 到 20 秒,而 2 分钟以上是比 500 毫秒延迟更短的眨眼。
这是我的配置保险丝和wait()
功能:
就像我说的那样,如果我打电话wait(500)
到那wait(30000)
我会得到半秒到 30 秒的延迟到我感兴趣的容差范围内 - 但是如果我打电话wait(600000)
那么我不会像我期望的那样延迟 10 分钟,而是大约 10-15 秒,wait(120000)
不会延迟 2 分钟,而是快速眨眼。
理想情况下,我想让内置__delay_ms()
函数工作并从我的内部调用wait()
,但是我没有取得任何成功。如果我尝试这样做,#include <delay.h>
那么我的 MPLAB 会抱怨没有这样的文件或目录。如果我查看 HiTech 示例中的 delay.h ,有一个已DelayUs(unsigned char)
定义的和一个extern void DelayMs(unsigned char)
我没有尝试过的,但是当我尝试将 extern 直接放入我的 C 代码中时,在链接时出现未定义的符号错误。
中短延迟和长延迟之间的差异是没有意义的。我唯一的解释是编译器已经优化了 NOP 或其他东西。
就像我说的,它是带有上述配置保险丝的 PIC18F14K50。我对 PIC 没有太多经验,但我认为它在这种设置下运行在 4MHz。
我对来自库或宏的外部函数或带有 NOP 的手写函数感到满意。我所需要的只是让它精确到每分钟几秒钟左右。
assembly - 从子程序返回在 PIC18 上不起作用
我正在编写一个子程序来计算 wreg 中设置的位数,但是在到达子程序末尾的 return 语句时,它只是无休止地重复 return 语句。我是 PIC 和组装的新手,所以我确信我刚刚做了一些愚蠢的事情,但我还没有能够解决它。任何帮助将不胜感激。
这是我的代码:
variables - MPLab / C prg / 变量
我安装了 MPLab V8.43 并且刚刚安装了 C18 编译器进行编程。每当我尝试构建一个小的测试代码时,它都会在第一个变量声明处停止。它说有一个语法。
在我看来并没有错……甚至将其作为 unsigned char counter[1]; 它仍然向我抛出了一个语法错误。是什么赋予了?有任何想法吗?
header-files - MPLab C18 v3.41 头文件
我是新手,所以很容易。
我正在“尝试”构建一个 LCD 测试程序,该程序由一位使用 XLCD.h 和 Delays.h 标头的讲师提供给我。问题是在构建过程中似乎没有链接头文件,因为编译器不断向我抛出一个关于未定义函数的错误。
MPLINK 4.42,链接器设备数据库版本 1.7 版权所有 (c) 1998-2011 Microchip Technology Inc. 错误 - 在文件“./LCD_Main.o”中找不到符号“SetDDRamAddr”的定义。错误:1
我使用项目向导并选择了我的芯片...为我的芯片添加了 .lnk 文件,为 xlcd 和延迟添加了 .h 文件,添加了 p18cxxx.h 文件。
测试代码是经过验证的。我已经完成了顶部的#include,我什至将文件放在同一个目录中,然后使用了#include“xlcd.h”,但似乎没有什么对我有用。
是的,我已经两次检查了语法是否有错误,最终只是从头文件复制并粘贴到 main.c,所以不是这样。
看着错误,在我看来,只有原型可能被看到,而不是定义的函数。我认为这一切都是在后台使用魔法完成的,所以我不知道如何检查路径,或者即使它正在发生。
由于整个事情有点简单,我认为它应该是直截了当的,但事实并非如此。
我确信它一定只是一个简单的修复,但我已经为此工作了几个小时,我正准备将愚蠢的原型板和 PIC 扔到房间的另一头。
有人知道我做错了什么吗?
谢谢
c - 如何使用 MPLAB X IDE 在库项目中创建全局变量
我想使用 MPLAB X IDE(用于 PIC 开发的 IDE)在 C 中创建一个库。
我的图书馆 ABCLib 有一个简单的源文件,如下所示:
文件 abc.c
要在 MyProject 中使用这个库,我必须在 MyProject 头文件夹中创建 abc.h:
文件 abc.h
文件 MyProject.c(主文件)
现在,我想将 n 存储为全局变量,因此,在调用 abcTest() 之后,我可以在任何我想要的地方检索 n 的值。
我正在开发一个库,打算在我的所有项目中重用它。
usb - Microchip PIC (MPLAB/C18) 的 USB HID 代码中的链接器错误
我正在尝试为基本的 USB HID 功能编译一些代码。我正在使用带有 MPLAB 8.43 和 Microchip C18 编译器的 PIC18F14K50。
我正在使用 Microchip 网站上的一些标准文件。这是我的 C 文件,这是我的头文件。
构建时出现以下错误:
执行:"C:\Program Files\Microchip\mplabc18\v3.40\bin\mplink.exe" /p18F14K50 /l"C:\MCC18\lib" /k"C:\MCC18\bin\LKR" "usb_function_hid. o" "usb_device.o" "enumeration.o" "usb_descriptors.o" /u_CRUNTIME /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.cof" /M" C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.map" /W
MPLINK 4.40,链接器
设备数据库版本 1.3
版权所有 (c) 1998-2011 Microchip Technology Inc.
错误 - 在文件“./usb_function_hid.o”中找不到符号“HIDDescriptor1”的定义。
错误:1
链接步骤失败。
该HIDDescriptor1
符号出现在代码中的 2 个位置:C 文件的 PasteBin 行 173 和头文件的 PasteBin 行 356。
此代码直接来自 Microchip。我不确定为什么它不会链接。我认为要么它是为另一个版本的编译器设计的,要么我缺少一些外部依赖项,或者我缺少一些编译器/链接器开关。
关于我需要做什么来构建它的任何想法?
include - 在 MPLAB X IDE 中使用外部头文件
我有一个包含一些 .h 和 .c 文件的文件夹,我想在我的项目中使用头文件。
我已经使用“添加现有项目”将它们包含在我的项目的“头文件”文件夹中,但是当我尝试“#include”它们时,编译器(mplabc18\v3.41)说“无法找到文件 xyz.h”
那么,我应该怎么做才能使用这些文件而不将它们复制到项目文件夹中?