问题标签 [microchip]
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 - 如何在 c 编程的 pic 中连接变量?
我在 hitech C 中编写了一个 16f84a pic 来驱动 hd44780 lcd。到目前为止,我已经初始化了液晶显示器,并且可以将单个字符和字符串写入液晶显示器。现在我需要做这样的事情:
变量 = 250;
lcd_write_string
("MyVar 有值:" + var);
所以液晶显示器应该显示“MyVar has value: 250”
首先我应该如何连接一个var和一个字符串?其次,变量 var 包含一个 8 位二进制数(十进制 0-255)。如果 var = 23; 8 位数字必须分成 2 以表示 ascii 中的 2 和 3,然后由 lcd 显示。我怎样才能做到这一点?看来我必须进行基数 10 转换或 if 树来拆分所有 2 位数字,然后显示在 lcd 中。有没有更简单的方法解决这个问题?
谢谢!
assembly - 学习 PIC 单片机的汇编语言的最佳资源是什么
我将开始一个项目,我需要对 PIC 单片机的汇编语言有一个很好的理解。我对 C/C++ 非常熟悉,所以我大部分时间都知道如何编写代码,而且我已经为 PIC 做过很多项目,所以我了解架构,但我已经在“C”中完成了所有的编程。
是否有一本好书或网站可以很好地解释所有汇编命令的含义以及如何为 PIC 微控制器执行相当简单的任务(闪烁 LED、基本数学等)?
编辑:这篇文章的主要目的是请求学习汇编的资源,而不是讨论 PIC 中 C 与汇编的优点,或者 PIC 是否是一个“好”的微控制器。如果这有什么不同,我正在使用 PIC18 微控制器。
ide - 如何让 MPLAB 导入带有注释的 HEX 文件或导入在命令行中指定的 HEX 文件?
我正在使用 CCS c 编译器,它以 Intel 32 位 HEX 格式(即 INHX32)生成其目标文件。这个编译器有一个指令,可以让它在这些文件中添加注释。注释行位于文件的开头,并以分号开头,如下所示:
我想使用这个指令,因为这些注释对于那些后来将十六进制文件导入 MPLAB 的人来说非常有用。但是,MPLAB 不会导入带有注释的文件。当我尝试时,我收到“文件格式无效,信息不可用”错误。
我意识到这些注释行不是原始英特尔规范的一部分,但其他一些编译器和开发工具接受它们。有没有办法让 MPLAB 这样做?
我可以编写一个脚本,将这些行去掉,然后将生成的文件传递给 MPLAB,但据我所知,MPLAB 无法通过命令行导入文件。
c - 指示使用的 I/O 引脚的宏
我正在使用 HiTech PICC32 为 PIC32MX 编写固件。我要避免的一个问题是,由于大多数管脚都有多个名称(例如 AN0 = RB0 = CN2 = PGED1),我或其他人可能会不小心使用 RB0 而没有意识到 AN0 已被使用。(这实际上可能是灾难性的,因为不正确地配置模拟/数字引脚会导致电流消耗过大并释放必要的烟雾。)
除了全面记录使用的每个引脚外,我想知道是否有一种快速的方法可以在编码级别解决这个问题。我想要一个人们(主要是我自己)可以使用的宏,比如说CLAIM_PIN(58)
,如果它运行两次就会发出警告或错误。
(我不惜一切代价想要这个,如果唯一可能的解决方案太可怕或无法维护,那么我会忘记它,只会因泪流满面或着火之类的而声名鹊起。我也看到了这个问题关于生成宏的宏,排除了这种情况。)
我应该澄清一下:代码是用多个编译单元编写的(至少,我认为这就是这个短语的意思)。我的 A2D 代码有一个 .h/.c 文件,对于 SPI 类似,对于只使用某些 I/O 端口的各种外围设备也是如此。空间不是问题,我的代码在 PIC32MX 上留下了足够的空间;我也可以使用另一个 __DEBUG 标志来删除引脚检查代码以供最终使用。
embedded - 在 MPLAB 观察窗口中查看结构
我想在 MPLAB 监视窗口中查看一个结构,但是当我从“添加符号”下拉菜单中选择它时,我得到“不支持的结构”。我希望在微芯片的论坛上寻找答案,但该网站似乎已关闭,所以我想我会测试这个社区。为什么结构“不受支持”?我怎样才能得到它的支持?这是我试图看到的结构。它来自 mchip 的 TCP/IP 堆栈。
在此先感谢您的帮助。布伦特
c - 显示之前收到的 UART 值
对于熟悉 C 的任何人来说,这应该很容易回答。我想在 LCD 上显示变量的先前值(微控制器上的 UART (RS-232) 接收寄存器)。这是我当前的实现,它工作正常。但我想知道是否有办法在我的中断程序中花费更少的时间。目前,外设配置为在接收到 UART 馈送中的一个新字符后立即跳转到中断例程。建议任何人?
pointers - 循环缓冲区指针异常
这是对这个问题的跟进:显示以前收到的 UART 值。
在微控制器上实现循环缓冲区后,指针似乎有问题。
在 RS-232 上发送:ADE1234
接收(缓冲区 = 8):E24AE2 / E2AE24(在两者之间翻转) 接收(缓冲区 = 16):D234E1(跳过 A,因为它是一个同步字节)
接收(RX_BufSize = 32):DE1223 / DEE123 / DE1234 / DE12E1(随机翻转)
预期接收:DE1234
初始化
LCD 上显示的调试值
接收中断
来自源的函数
Detect_Cmd_RXD 每 1/256 秒调用一次。在此期间,UART 接收缓冲区中将至少发送 7 个值。
写入过程是否可能如此之快以至于它赶上了读取指针?除了更频繁地调用 Detect_Cmd_RXD 之外,我还能做些什么来解决这个问题?
.net - .Net 中的数据类型与摩托罗拉 PLC 中的数据类型?
任何人都可以帮助获取摩托罗拉 PLC 的所有数据类型的列表。
谢谢,
汗
assembly - PIC 16F684 微控制器中断处理
几周前,我刚刚完成了大学的微处理器课程,在那里我们只用汇编编程。我们学到了很多关于中断的知识(恕我直言)。
这是我的问题:我正在使用 16F684 的 HiTech 编译器用 C 语言编程,在讨论中断的数据表部分(PIC 16F684 数据表第 12.4 节)中,它说程序将转到中断向量 0x0004。使用我的微处理器类中的程序集,我们只需设置一个指向该地址的 .org 语句并在下面编写所需的程序集,以便在发生中断时跳转到那里并运行。我可以在汇编中弄清楚这一点,但是当我在 CI 中编程时,我不相信我可以控制程序片段在内存中的位置,这会带来问题。我不知道如何在 C 中的中断处放置命令。
如果我需要澄清,请告诉我!
c - 在 8 位寄存器的中间存储一个 4 位值
我需要从 0 数到 10 并将这些值以二进制格式存储在 ADCON0(5:2) 中。我如何指向该寄存器的第 5 位?位 5 命名为 ADCON0bits.CHS3。如果我将一个 4 位变量存储到 ADCON0bits.CHS3,位 1 - 3 是否会写入寄存器的位 4 - 2?
另外,我可以使用任何 4 位数据类型吗?
这一切都在 PIC 微控制器上。
编辑:我需要在寄存器中存储 4 位,如下所示:
这与下面的假设一致,但我想我会稍微澄清一下我的问题。