问题标签 [pic]

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 投票
5 回答
2425 浏览

c - 当没有数据类型可以容纳完整数字时将十六进制转换为十进制

我正在使用 C 中的 PIC 微处理器。它是 16F,所以它不能保存大于 32 位的整数(无符号int32是可用的最大数据大小)

从阅读器那里,我收到一个 5 字节的 ID 代码。要传输它,我必须逐位编码为 BCD。我无法将其冲刺成字符串,因为它大于数据大小,并且无法处理它。我不能划分它,因为没有为它定义任何操作。

我想不出任何可能的解决方案,以前有没有人处理过这个问题?

编辑:

我收到一系列 5 个字节的数字:

FF-FF-FF-FF-FF

我需要将其转换为十进制

0123456789012

(13 位,十进制长度为 256^5)通过 RS232 发送。第二个函数(获取 ASCII,然后发送)我已经让它工作了,但我需要完整数字的字符串表示,然后才能对它做任何事情。

0 投票
3 回答
729 浏览

bit-manipulation - 当没有数据类型可以容纳完整数字时将十进制转换为十六进制

这与几周前我自己的问题几乎完全相同。

当没有数据类型可以容纳完整数字时将十六进制转换为十进制

这一次,情况正好相反。我有数字(在一个方便的空终止字符串中),我需要构成这个数字的字节。但是,我正在为微控制器使用 32 位架构,因此我无法使用 atoi,因为该数字大于 32 位。

有没有人知道如何反转第一个链接中提供的算法以取回原始结果?我的模数算术技能让我失望了。

快速示例:155.207.231.1350x[24][23][12][66][9F](括号分隔字节)

0 投票
7 回答
1822 浏览

embedded - 我需要什么微控制器(和其他组件)来创建计时器设备?

作为一个让自己远离麻烦的爱好项目,我想构建一个小的程序员计时器设备。它基本上会接受一个程序,该程序是一个时间列表,然后从每次开始倒计时。

我想使用 C 或 Java 微控制器。过去我使用 BASIC 制作了一个小型自主机器人,所以这次我想要一些不同的东西。

你会推荐什么微控制器和显示器?我希望保持简单,因此程序将通过计算机加载到内存中(串行是可以的,但 USB 会更容易)

0 投票
3 回答
627 浏览

c++ - 帮助将此程序集翻译成 c

我的编译器无法与我拥有的汇编文件一起使用,而我的其他编译器也无法与我拥有的 c 文件一起使用。我不懂组装。我需要把它移过来,但我没有快速到达任何地方。有没有人可以提供帮助?我不敢相信没有可用的翻译。这是文件的开头:

我知道我可以排除前两行,因为设备定义无论如何都在我的 main.c 中。这两个#defines 就是这样,但最简单的方法(我认为)是相应地用 STATUS,2 和 STATUS,0 替换 _Z 和 _C 的实例。接下来的几行(GLOBAL)只是我正在收集的变量声明。与 LSB 和 MSB 相同,除了它们也分配值。下一个块我想我只是声明了一堆具有这些名称(AARGB0 等)的整数,然后后面的块是一个函数。

我什至懒得翻译那个函数,因为我的编译器有 #asm/#end asm 指令,所以我可以把它放在 raw 中(只要它包含在一个函数中)。

我想我已经拥有了一切......直到我构建并且我的编译器尖叫着 STATUS 没有被定义。当然不是。但它是什么?我在网上看到 STATUS 寄存器很特别,但我真的不明白它是如何工作的。

如果您没有注意到,我什至不确定我真正要问的是什么。我只是想让这该死的东西起作用。

0 投票
5 回答
6538 浏览

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 中。有没有更简单的方法解决这个问题?

谢谢!

0 投票
2 回答
309 浏览

communication - 关于基于中断的通信

我们有一个简单的架构:

  1. 主芯片(基于arm9)
  2. PIC控制器

PIC 通过基于中断的 I2C 通信协议与 ARM 通信以传输数据。在中断内部,我们发出一个从 I2C 层(总线)读取数据的任务。

如果数据有限,我们通常不会有太大的问题来读取数据并将其发送到上层。如果这个数据非常大,中断将被捆绑很长时间。

第一个问题是:

  1. 我对吗?

  2. 如果我是对的,如何避免同样的情况?...或者我们可以采取不同的解决方案吗?

0 投票
1 回答
916 浏览

linker - 如何指定 PIC 代码的地址范围?

我想为 PIC16 使用 Claudiu Chiculitas 微型引导加载程序(我已对其进行了修改以适合我的芯片),但由于该引导加载程序不会移动代码以防止覆盖引导加载程序,因此我必须以某种方式手动确保引导加载程序未被覆盖。我曾尝试像这样使用 --rom 选项:

我想要的是:代码内存的前 4 个字中没有代码,因为那是跳转到引导加载程序的位置,而最后 128 个内存字中没有代码,因为那是实际的引导加载程序所在的位置。--rom 就像我使用它一样,什么也没做。我使用的是 HI-TECH PICC STD 编译器(Microchip PICmicro)V9.60PL3,芯片是 pic16f876A。

0 投票
5 回答
19134 浏览

assembly - 学习 PIC 单片机的汇编语言的最佳资源是什么

我将开始一个项目,我需要对 PIC 单片机的汇编语言有一个很好的理解。我对 C/C++ 非常熟悉,所以我大部分时间都知道如何编写代码,而且我已经为 PIC 做过很多项目,所以我了解架构,但我已经在“C”中完成了所有的编程。

是否有一本好书或网站可以很好地解释所有汇编命令的含义以及如何为 PIC 微控制器执行相当简单的任务(闪烁 LED、基本数学等)?

编辑:这篇文章的主要目的是请求学习汇编的资源,而不是讨论 PIC 中 C 与汇编的优点,或者 PIC 是否是一个“好”的微控制器。如果这有什么不同,我正在使用 PIC18 微控制器。

0 投票
3 回答
2307 浏览

ide - 如何让 MPLAB 导入带有注释的 HEX 文件或导入在命令行中指定的 HEX 文件?

我正在使用 CCS c 编译器,它以 Intel 32 位 HEX 格式(即 INHX32)生成其目标文件。这个编译器有一个指令,可以让它在这些文件中添加注释。注释行位于文件的开头,并以分号开头,如下所示:

我想使用这个指令,因为这些注释对于那些后来将十六进制文件导入 MPLAB 的人来说非常有用。但是,MPLAB 不会导入带有注释的文件。当我尝试时,我收到“文件格式无效,信息不可用”错误。

我意识到这些注释行不是原始英特尔规范的一部分,但其他一些编译器和开发工具接受它们。有没有办法让 MPLAB 这样做?

我可以编写一个脚本,将这些行去掉,然后将生成的文件传递给 MPLAB,但据我所知,MPLAB 无法通过命令行导入文件。

0 投票
13 回答
8758 浏览

c - 在 PIC18 上使用 C 进行多线程

由于没有操作系统,如何在编程PIC18时创建并行运行的线程?