Delphi控制并行端口位操作

时间:2010-03-08 12:25:52  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:数、方法可对并口进行读写,幸运的是Delphi可以嵌入汇编程序,通过直接嵌入汇编指令 in、out 可方便地对并口进行读写。我们还可以通过调用 Windows API 函数或第三方提供的DLL、VXD来访问并口,但通过使用嵌入汇编的方法对并口进行读写更方便、快捷。使用下面的 ReadPort 函数和 WritePort 过程可以读写并口,参数 Port 为要操作的端口地址。 
  正文:

并行端口简称并口,它有3个端口:数据端口、状态端口、控制端口,常用的并口为LPT1,它的3个端口的地址分别为:378H、379H和37AH。

一、并口读写

汇编语言中,可以用 in、out 指令操作并口,而在Delphi中并没有相对应的函数、方法可对并口进行读写,幸运的是Delphi可以嵌入汇编程序,通过直接嵌入汇编指令 in、out 可方便地对并口进行读写。我们还可以通过调用 Windows API 函数或第三方提供的DLL、VXD来访问并口,但通过使用嵌入汇编的方法对并口进行读写更方便、快捷。

使用下面的 ReadPort 函数和 WritePort 过程可以读写并口,参数 Port 为要操作的端口地址。
 


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;


二、位操作

要按位来控制并口,可以先读取并口的数据,再进行位操作,最后再重新写入并口,就可以实现对并口的位的控制。

逻辑运算符and对两个要操作的数执行按位的逻辑与运算:即中有1“与”1的结果为1,其它的0“与”1、1“与”0、0“与”0的结果都为0。

逻辑运算符or对两个要操作的数执行按位的逻辑或运算:即只要相“或”的两位有一位是1,结果就为1;否则“或”的结果为0。

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

使用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

//电位为低时的代码


"Delphi控制并行端口位操作"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/13119.html

 1/4    1 2 3 4 下一页 尾页


关键字:

关于《Delphi控制并行端口位操作》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td