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

assembly - 4x4 开关面板检测

我正在 MPLAB 中编程 PIC16f877(使用汇编)。我有 4x4 开关面板。我可以接受输入,但我无法检测到它来自哪个开关。我正在使用 portb,首先 RB4 到 RB7 输入和 RB0 到 RB3 输出,但是例如 SW0、SW4、SW8、SW12 的功能是否相同?我怎样才能严格确定它们?

这是我的代码的相关部分

0 投票
3 回答
239 浏览

c# - 使 Pic Port 浮动

我有一张照片 18f87j50。在我的一个数字 I/O 上,比如说 RH7,我想用它来给我一个 0-3,3V 信号。我将其配置为输出并产生 PWM,因此我在示波器上读取 2V。然后我尝试“释放”端口,使其在这个 2V 电平上浮动。当“释放”时,我将端口作为输入,并确保禁用内部上拉。

但我真的没有成功,看起来它很快就回到了 3.3V,几乎就像上拉仍然会启用一样。我在港口没有负载。

下一步是在此处放置一个运算放大器以产生 0-10V 信号。

我这样做对吗?-> 端口输出,pwm 信号达到所需电平,禁用内部上拉,使端口输入浮空可以启动。

0 投票
1 回答
1947 浏览

c - C中的高级预处理器标记化

我在为我的 PIC构建C宏时遇到问题。其他基于 C 的系统也是如此,因此也非常欢迎非 PIC C专家。

假设我已经定义了我的 LED_1 引脚:

所以如果我想点亮一个 LED,我会写:

如果我想使用我的 LED_1 定义来完成它,我必须再添加两个宏:

并使用它:

它就像一个魅力。但问题是在上面的定义中我有

端口A位。##var

那么如果我想改变 PORTB 的值呢?我将不得不为端口 A 和 B 构建单独的宏。但它甚至不是一个强大的解决方案。我想出了一个主意,我不知道为什么,它不起作用。

当我尝试运行它时:

编译器将__##var更改为___A1但它永远不会将__A1更改为A,因此此 MACRO 无法按预期工作。

我花了很多时间试图修复它,所以我很感激任何帮助:)


编辑::


我可能已经找到解决问题的方法:
(LAT 只是另一个寄存器名称,但它与 PORT 的工作方式相同,因此此名称更改无关紧要)

但我得到一个编译器错误:

100:PORTAbits.RA0 = 1;
^ (374) 缺少基本类型;int 假定(警告)
^(983)存储类重新声明
^(984)类型重新声明
^(239)标识符“PORTAbits”重新定义(从第3900行)
^(314)“;” 预期的

所以不,它确实正确地替换了它,但我收到一个编译器警告,告诉我我重新定义了我无法理解的 PORTAbits。我只是想让预处理器将PORTchange(var)更改为PORTxbits.Rvar,其中 x 是 A 或 B。但似乎我正在重新声明一些东西。

我不明白。

0 投票
1 回答
241 浏览

serial-port - 使用 bitbanging 方法发送“A”字符

我正在尝试使用 bitbanging 方法发送“A”字符。谁能帮我在 send_serial() 函数中编写这段代码

0 投票
1 回答
1942 浏览

debugging - 无法调试 pic32 微控制器或更新配置位

我有一个 PIC32MX460L512 微控制器(Digilent 的 Cerebot MX4 板),在做了一些项目之后,我不能再对其进行编程了。

这发生在我测试板乘法器和除法器以查看板如何使用#pragma pll ....

我无法编写新的十六进制或更改配置位,并且出现以下错误

  1. PIC32 入门工具包硬件初始化失败。错误= -1004,详细信息=0x80004005,(LID:29) 或第二个错误
  2. 设备重置失败/确保配置位正确。

我认为该板仍然可以工作,因为 Windows 可以在设备和打印机中看到它。

我该怎么办?我可以从一些位重置内存吗?我仍然是微控制器的菜鸟。

提前致谢

0 投票
2 回答
3456 浏览

c - 将 if 语句转换为 for 循环?

我在 mikroC 中编写了一个函数,可以扫描 4x4 键盘中的按键

有没有办法将此算法转换为循环?

0 投票
3 回答
306 浏览

c - 根据 pic 18f4550 的位值发音颜色

更新 2

我想制作一个可以在我的 pic 18f4550 上播放声音(可以说是红色、绿色和蓝色)的程序,有一个扬声器连接到 picdem,这部分工作正常,我用微芯片版本 6.83 用 C 编写了以下程序编译器。

当我说红色时(这有一个位模式),我需要检索 .wav 文件的位值。我的正确问题是,如何获取 .wav 文件的位值。

0 投票
5 回答
309 浏览

c - C 中的 char[] 操作

假设我定义以下内容:

将为此分配什么默认值char[]?是这样{'', '', '', ... , ''}吗?

在我的程序(计算器)中,我有operand[2][13](第一个操作数是operand[0],第二个操作数是operand[1])并且我有 OperationResult[15]并且它们都是unsigned char. 首先,用户将输入 Operand1 和 Operand2(一次一个字符)并将其存储在operand[2][13]然后程序将结果作为字符存储在Result[15]. 现在我想要的是,在下一次迭代中,我想清除operand[2][13], 操作等,Result[15]以便用户可以输入下一个操作数,程序执行下一个操作并将结果保存在Result[15].

如何清除这些数组?

0 投票
3 回答
345 浏览

c - 为什么奇数 * 偶数不返回 C 中的精确值?

完成我的项目(使用 PIC18 和键盘 4x4、LCD 和 4 个 LED 的计算器)后,我在乘法运算中遇到了奇怪的问题

当乘以奇数 (> 1) * 偶数 (> 0) 时,结果并不完全正确,例如 3 * 4 = 11.99999

=====================

在这里,我将尝试描述这种情况:

用户按下键盘的一个按钮,然后程序从键盘获取字符并将其存储到 char[](一次一个字符),所以最后我们有两个 char[] Operand[13] 和 Operand[13]。输入 Operand1 和 Operand2 后,程序使用 atof() 函数将其转换为浮点数,然后应用一些操作('+'、'-'、'*' 或 '/')并将结果存储在 int Result 中。最后,程序使用 FloatToStr() 函数将此 int 转换为 char[] 并显示在 LCD 上。

======================

这是我的代码:(对不起,它有点长,但我希望你帮我解决这个问题)

0 投票
4 回答
1076 浏览

c - 在 Linux 上模拟电路和编程微控制器

我即将完成一个控制机械臂的微控制器项目。我的问题是@MS Windows 有 MikroElectronica (IDE: MicroC) 将 .c 编译为 Hex 将十六进制放入 Proteus 并进行模拟。然后使用带有CD(携带Windows软件)的特殊(PCB)套件,我会放置微芯片并安装十六进制文件或其他任何东西。

首先是对女士的尊重,但我只是讨厌它!我喜欢 Ubuntu/linux 和开源,我需要专家在“步骤”中告诉我如何以最小的复杂性完成前面提到的 linux。

和我一起的机电工程师总是吹嘘女士很容易。我想向他们展示计算机科学专家如何使用开源技术以及它的强大和可靠性。

请帮忙 !