您当前的位置:五五电子网电子知识电子学习基础知识电路基础知识计算机与微控制器的连接方法 正文
计算机与微控制器的连接方法

计算机与微控制器的连接方法

点击数:7461 次   录入时间:03-04 11:41:32   整理:http://www.55dianzi.com   电路基础知识

  幸运的是,在对低价二进制位进行编程时,数值并不难转换为对应的二进制位,反之亦然。每种编程语言为这些子程序提供不同的实现方法,下面几节讲解使用Visual BasIC的简单方法。

  其他的语言如C语言提供更可靠的位处理操作等。下面的程序码例子更偏重于教基本原理,而不是直接应用于机器人。请掌握好概念,并把它们用于特定的场合。

  1.按二进制格式决定数字串代表的位
  
  把二进制数表示为数字串,是表达半字节或字节信息的一种方便的方法。例如,“0010”是一个半字节,代表数值2:

  另一个例子:数值11表示为4位的二进制数串“0010”

  有许多编程方法可以确定二进制格式各个位的取值。例如,您可能想确定在0至15中的任何一个二进制等效值每个位是O还是1。您可以制作一个速查表,其中列出0到15的16个数和对应的二进制等效值。但是,您可以想采用其他的一些方法,即利用编程语言所提供的命令和语句来完成转换。

  一种方法是使用这里介绍的Mid语句来分析位串的每一位,最后返回字符的二进制值。这个程序是VisualBasic兼容型程序,它把每位的值(0或1)依次放入4单元的数组Bit(0)到Bit(3)中。虽然这个例子只说明4位的二进制串如何找到,这种方法同样可以应用于8位或16位的二进制串。

  这个程序的工作部分是For循环。它与Mid语句配合,把串内的每个字符(本例是“0110”)分解到数组的4个单元中。Val语句把分离出来的串字符变成数字。



www.55dianzi.com

  4.把二进制数变为十进制数
  
  您会有许多机会要把二进制数变为十进制数。为此只需进行一些简单的加法和乘法,具体如下面所示的VisualBasIC兼容型程序。其中规定了4个二进制位DO至D3的值。消息框MsgBox显示出您规定的二进制数的等效十进制数。例如1 001的运算结果为9。

  用OR操作掩蔽数值
  
  对计算机或微控制器端口的各个位进行操作很常见,但单独对个别位进行操作很常见,但单独对个别位进行操作往往是不可能的或不实际的。与此相反,您必须以4位或8位作为一组同时对各位进行控制。我们已经知道,在二进制记数制中,各个位有不同的权重,所心,12这个数是由以下各位组成的:

  设想您的计算机或微控制器有一个4位的端口。您用O至15的任一值对每一位进行设定;0代表0000二进制位,而15代表1111二进制位。您需要有一种方法去单独控制某一位,但不改变其他位的状态。为此可使用Or(或)掩蔽操作,用起来很简单:

  X=当前值Or待置1的位式中,当前值是当前4位的二进制值(只要利用QBasic中的Inp语句,就可以通过查询得到该端口的当前值),而待置1的位是您想把它为变为1的位。例如,假设当前值是7( 0111),而您想把第3位(权重为8)变为1,则可以X=70r8于是X变为15或1111。

  注:在许多情况下,但不是在一切情况下,“或”操作的结果如同两数相加。但这并不总是真的,所以不要养成把“或”操作当成两数相加的坏习惯。

  下面的Visual Basic兼容型程序说明如何利用“或”掩蔽操作对选中的位进行置1,但不改变其他位的状态。

  假设×是您以前从端口读得的当前值,Mask是您想置1所选用的值,具体程序如下:

  按照程序中规定的数值( X=3.Mask=2),结果仍然是3.这是因为“2”所对应的位本来就被置1。实际上,如果把X改为另一值,如4(二进制为0100),则结果变为6,即代表二进制数0110。

  您也很容易把某一位关闭(即变为O).方法是使用Xor(异或)运算时,如下所示:

  若要了解Xor如何操作,请参考以下的真值表:



上一页  [1] [2] [3] [4] 


本文关键字:控制器  计算机  电路基础知识电子学习 - 基础知识 - 电路基础知识