Delphi控制并行端口位操作

http://tech.ddvip.com   2006年07月30日    社区交流

本文详细介绍Delphi控制并行端口位操作

  使用or运算符可以对指定的位置1,例如:十六进制84H的第二位为0,若要将第二位置为1,且其它位不变,可以使用:$84 or $02 = $86,86H的二进制值为10000110。

  例子:

  1、将数据端口378H的D2位的电位设置为低,即置0:

  B:=ReadPort($378);
B:=B and $FB;
WritePort($378,B);

  2、将数据端口378H的D2位的电位设置为高,即置1:

  B:=ReadPort($378);
B:=B or $04;
WritePort($378,B);

  3、判断数据端口378H的D2位的电位高低:

  B:=ReadPort($378);
if ((B and $04)=$04) then
//电位为高时的代码
else
//电位为低时的代码
或:
B:=ReadPort($378);
if ((B or $FB)=$FF) then
//电位为高时的代码
else
//电位为低时的代码

  三、具体实现

  下面的例子是控制并口的数据端口378H的各个位的电位高低。数据端口的8个位:D0~D7分别对应并行接口的2~9脚,关于并行接口其它的引脚的说明就查看相关资料,这里就不多说了。

  首先运行 Delphi,新建一个工程,按一下F12在Form1的单元文件Unit1中加入读写端口的代码:

  function ReadPort(Port:WORD):BYTE;
procedure WritePort(Port:WORD;ConByte:BYTE);
function ReadPort(Port:WORD):BYTE;
var
B:BYTE;
begin
ASM
MOV DX, Port;
IN AL, DX;
MOV B, AL;
END;
Result:=B;
end;
procedure WritePort(Port:WORD;ConByte:BYTE);
begin
ASM
MOV DX, Port;
MOV AL, ConByte;
OUT DX, AL;
END;
end;

作者:东亮    责编:豆豆技术应用

正在加载评论...