1

我进入新项目,应该使用微控制器。最简单的编程方法是使用并行端口。但是,有几件事我希望你能帮助我。哦,首选语言是 C 和平台 Windows。

所以,我对 LPT 端口和 Windows 进行了一些研究,从中学到的最重要的一点是:由于基于 Windows NT 的系统,您不能使用指令来直接操作端口。应该是这样,因为现在程序运行在不同的特权模式下,不支持outport()函数使用的那种指令。

但在这一点上,我不明白一些事情。首先,我认为 Windows 自第一个保护模式版本以来实际上使用了特权级别,但这是错误的假设。

但更重要的是,我认为 Windows 包含了几乎所有硬件通信的功能。我的意思是,这些天你在 Windows 中所做的任何事情,你只需要调用进一步调用内核服务的 Windows 函数。我假设它outport()不使用任何 Windows 功能,只是进行通信本身,现在是禁止的。但令我震惊的是,在现代 Windows 系统中没有控制并行端口的系统功能。至少我是这么读的。

但是即使我可以控制并口,我的第二个问题也随之而来。为了对控制器进行编程,我需要遵循特殊的协议,尤其是时序。但由于 Windows 是多任务的,我担心如果调度程序切换到另一个应用程序会怎样,因此何时是在 LPT 上切换信号的正确时间,我的程序将无法运行。

哦,顺便说一句,我知道我可以使用任何 3rd-party 应用程序,但我只是希望自己能够做到,或者至少在我使用一些 3rd-party 应用程序之前,我想知道它是如何工作的。是的,你可以通过带有一些电阻的并行端口对一些微控制器进行编程,我肯定知道这一点。

谢谢。

4

1 回答 1

3

对于 Windows,您需要安装一个包含驱动程序的 DLL,该驱动程序以提升的权限运行以访问硬件端口。

您可以在以下位置找到这样的库:

http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html

还有一些示例代码的链接。

我不知道您使用的是哪个 uController,但我过去曾编写过各种 uController,并且从来没有遇到过时间问题,至少对于编程来说很好。编程协议通常足够健壮,可以处理由多任务处理引起的抖动。只要保持时钟边缘和信号边缘分开就可以了。

于 2010-05-26T22:30:50.440 回答