问题标签 [pic18]

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 回答
1175 浏览

c - 程序存储器中的 Hitech C 数据缓冲区

C18 编译器允许在带有 ROM 限定符的程序存储器中使用变量,但 Hi-Tech C 似乎不太愿意充分利用 Havard 架构。那么有没有办法使用 Hi-Tech C 编译器在程序存储器中创建数据缓冲区(我准备妥协访问速度)。

我已经看到了使用 psect 的可能性的迹象,但没有任何可行的实现。

0 投票
2 回答
1108 浏览

microcontroller - 如何在 MPLAB 中拥有多个 C18 源文件?

在许多语言中,例如 C++,有很多不同的源文件是正常的,但 PIC 微控制器程序似乎并不经常出现这种情况——至少在我读过的任何教程或书籍中都不是这样.

我想知道如何拥有一个包含一堆例程、全局变量和定义的源 (.c) 文件,这些文件可以由我的 main.c 文件使用。这甚至可能吗?

谢谢你的建议!

0 投票
1 回答
1475 浏览

timer - Timer1 RD16 位在 PIC18 单片机上有何作用?

我真的很困惑。手册说:

但是,实际上似乎没有任何方法可以通过一个 16 位操作进行 R/W!从数据表后面的内容以及我在网上阅读的内容来看,16位值仍然必须读作:

并写成:

除非我只是没有看到,否则 RD16 没有显示在 Timer1 框图中,并且似乎对任何东西都没有影响!

然而,我知道这不可能是真的,所以我在这里问:Timer1 RD16 位在 PIC18 微控制器上有什么作用?

0 投票
1 回答
1647 浏览

tcp - Microchip TCP/IP 堆栈 PIC18F 无效数据包 seq/ack 数

亲爱的 StackOverflowers 同胞,

我正在做一个项目,使用 Microchip 的 TCP/IP 堆栈在我的定制(和测试)板上实现 PIC18F87J60 上的某些东西。作为测试,我编写了一些代码来建立连接,将其保持 x 秒,然后优雅地关闭它。我已经将它实现为一个有限状态机。我还没有添加发送和接收数据。

但是,我的程序无法建立连接。使用 Wireshark,我注意到我的设备通过 DHCP 成功接收了 IP 地址,并且 ARP 解析正确完成。我暂时忽略了 DNS,因为这也会出错,但我稍后会解决这个问题。我还看到第一个 SYN 数据包由我的设备发送并由服务器按应有的方式响应,但 3 次握手中的 3e 步骤出错了。确认号只是一个随机数,因此服务器会感到困惑并使用 RST 数据包重置连接。然后我的设备使用带有另一个随机序列号的 ACK 数据包确认重置,并且服务器以某种方式接受该数据包。然后服务器尝试使用 SYN 数据包再次建立连接,但我的代码不侦听传入连接,因此连接结束。

这是我的代码:

这是Wireshark 日志的屏幕截图。

在此先感谢,BitJunky

编辑:这是wireshark 转储文件。我过滤了 MAC 地址,因此部分 DHCP 进程未显示在此转储中。

0 投票
1 回答
1787 浏览

c - PIC18F2550 记忆游戏 PIC C18 编程 LED 熄灭

我正在使用 MPLAB C18 编译器为 PIC18F2550 编写用于控制记忆游戏的 c 代码。用户将通过按下相应的按钮重复一系列闪烁的 LED。有点像老式的西蒙游戏,但序列只发生了一次。

到目前为止,我一直在苦苦挣扎,我只设法打开了一些 LED,但这些按钮只会关闭 LED 片刻,然后它们会再次亮起。

到目前为止,这是我的代码:

任何帮助是极大的赞赏!!

0 投票
1 回答
406 浏览

pic18 - PIC 微型计算机 - 使用定时器 3 作为异步计数器 - 上拉

我正在使用 PIC18(L)F1XK22。我正在尝试使用计时器 3 作为同步计数器。

PIC 使用内部振荡器运行。

这应该关闭引脚 RA5 作为外部振荡器的使用。

T1CON 中的 T1OSCEN 为 0,T3CON 中的 TMR3CS 为 1。我已设置 RA5 TRIS 位并清除 RA5 WPU 位。

我的问题是引脚 RA5 (T13CLKI) 看起来像是有源上拉或被某些东西驱动。

我在 RA5 前面有以下电阻网络。

+5---10K-----X-----24K----->RA5

X 点由霍尔效应传感器驱动。当 X 为 0 伏时,RA5 为 2.2 伏。将 24K 电阻减小到 10K 会将 X 减小到 1.1 伏。在计数器工作之前,我必须将电阻减小到大约 4K。

这是我用来设置计时器的代码...

添加最后两行是徒劳的,试图在计时器启动后关闭所有引体向上。

非常感谢任何帮助或想法。

0 投票
1 回答
877 浏览

stack - 替代 ZigBee 堆栈

是否有任何堆栈可以替代 Microchip ZigBee 堆栈?我有一个 PIC18F27J53 微控制器和 MRF24J40MB 收发器。我试图阅读和理解 Microchip ZigBee 堆栈中包含的示例,但我没有运气。我认为这些例子对于像我这样的初学者来说太复杂了。我只打算向传感器节点发送数据和从传感器节点接收数据。此外, PIC18F27J53 不包含在 Zena 配置工具器件列表中。

任何帮助都感激不尽。

0 投票
1 回答
723 浏览

c - PIC18F46J50 EEPROM 读/写

我正在做的项目如下:

我得到了 ADuC7061 的 USART 与 PIC18F46j50 EUSART 连接。aduc7061 不断发送信息,而 pic18f 通过其 eusart0 接收该信息。

现在的问题是我必须将该信息存储在 pic18 的 eeprom 上,然后在对 128x64 图形显示器进行一些操作后显示该信息。

0 投票
0 回答
1252 浏览

c - PIC18F45K22 EUSART1 接收并在超级终端上显示

我没有在超级终端上得到任何东西。我是否需要从代码中添加或删除任何内容。

帮助表示赞赏。

干杯

0 投票
1 回答
456 浏览

c - PIC 上的 Bit-banged 串行停止使用 C 中的嵌套循环

Stackoverflow,你以前帮助过我,我想我再次需要你的帮助。我正在尝试使用 PIC18F2550 上的 GPIO 对我自己的串行进行 bit-bang。这连接到一些移位寄存器 (3x74LS595),其中最后一个连接到标准 HD44780 LCD。到目前为止,我的时钟和闩锁工作正常,经过长时间的战斗,数据现在也被正确吐出(结果桶移位效果不佳,事情会很乐意吐出数据超出范围但我离题了)。

我的问题是,要使用 LCD,我需要将启用引脚切换为数据时钟,因此为了保存代码,我只需嵌套另一个循环,该循环运行两次并切换启用标志,否则会吐出相同的字节。从理论上讲,这应该是从 12 到 24 吐出的字节数的两倍。无论出于何种原因,添加此循环时它都不起作用。它只是吐出两个字节并退出。没有它,它会吐出所有 12 个字节(尽管 LCD 设置不正确,因为启用不存在)。

这是它工作的图片,没有嵌套的启用循环:

链接,因为缺乏代表

D0 是数据,下面的 D1/2 分别是时钟/负载。

这里是 for 循环:

链接,因为缺乏代表

最左边的那个边缘是线的初始重置。我知道它在这两个字节之后完成,因为它会发出我拥有的小蜂鸣器的哔哔声,表明所有有意义的代码都已完成。

这是一个代码转储:

在上面的代码中,我什至禁用了切换以查看它是否会吐出所有字节。可能不会。我正在认真考虑只在汇编中完成这一切,因为对于 C 语言,我在看似简单的东西上遇到了很多问题。感觉就像我无法控制这件事的背景中发生的事情。我正在使用 Pickit 3,但如果我想了解实际情况,我可能只需要挖掘 ICD2。