www.8951.com

进入论坛

淘宝网店

软件下载

返回主页

单片机教程

单片机软件

电路设计

电子基础

网站产品

购买方式

 进入论坛

软件下载

单片机指令(五)

一.位及位操作指令
位操作指令也叫布尔操作指令。什么是布尔指令?它有什么用呢?这个问题稍微有点复杂,我只能给大家简单的介绍一下。在MCS-51 系列单片机中,有一个功能很强的布尔处理器,它实际上是一个独立的一位处理器,它有一套专门处理布尔变量(布尔变量也叫开关变量,就是以位作为单位的运算和操作)的指令子集,以完成对布尔变量的传送、运算、转移、控制等操作,这个子集的指令就是布尔操作指令。那么为什么要有这样的一套的指令系统?它是如何操作的呢?大家接着往下看:

1.位寻址的概念
为什么要位寻址呢?单片机不是可以有多种寻址方式吗?大家是否还记得,我们第十三课做的那个流水灯实验,用的就是“位”操作,也就是对一盏灯的亮和灭进行控制,而之前我们学的指令却全都是用“字节”来介绍的:字节的移动、加减法、逻辑运算、移位等等,用字节来处理一些数学问题(比如控制空调的温度、电视机的音量等等)非常直观,可以直接用数值来表示;可是如果用它来控制一个开关的打开或者合上,灯的亮或者灭,就有些不直接了。

   比如我们前面课上的那个流水灯的实验,我们把数值送往P1 口之后并不能马上知道是哪个LED 灭了,而是要化成二进制后才能知道。在工业控制中有很多场合需要处理这类单个的开关输出,比如一个继电器的吸合或者释放、一个指示灯的亮或者灭,用字节来处理就显得有些麻烦了,所以在51 系列单片机中就特意引入了一个位处理机制。那么位处理器有多少地址空间?哪些特殊功能寄存器可以直接进行位寻址呢?

2.可位寻址的特殊功能寄存器
在MCS-51 单片机中,位地址的范围在00H-FFH 之间,其中低128 位处于内部RAM 的20H-2FH 字节单元,其位地址从00H-7FH,看下面的表:

   在物理实体上它们与原来的以字节寻址的RAM 及端口是完全一样的,换句话说这些RAM 单元及端口都可以有两种用法。
除此之外,从80H 单元开始除了程序计数器PC 和4 个工作寄存器区外,每8 个字节还安排了21 个特殊功能寄存器(89C52 有26 个),这些SFR 都有一个共同的特点:就是其字节地址均可被8 整除,大家回到前面看一下第九课的表格。这些SFR 都是具有位寻址功能的,也就是说这些RAM 单元的每一个位都可以直接用这个地址来对其直接进行操作。了解了位操作的原理,再来看位操作的指令:

4.位操作指令
(1)位传送指令

A.MOV C,bit

B.MOV bit,C
指令说明:这两条指令的功能是实现进位位和其它位地址之间的数据传递(这里bit 就是位的意思)。

例如:MOV P1.0,CY ;将CY 中的状态送到P1.0 引脚上去(如果是做算术运算,我们就可以通过观察知道现在CY 是多少了)。再如:MOV P1.0,CY;将P1.0 的状态送给CY。


(2)位清零指令

A.CLR C

B.CLR bit
指令说明:第1 条指令使CY=0 ;第2 条指令使指定的位地址等于“0”。例如:CLR P1.0 ,使P1.0 为“0”。


(3)位置1 指令A.SETB C B.SETB bit
指令说明:第1 条使CY=1 ;第2 条使指定的位地址等于“1”,例如:SETB P1.0 ,使P1.0 为“1”。


(4)取反指令A.CPL C B.CPL bit
指令说明:第1 条使CY 等于原来的相反的值,即由“1”变为“0”,由“0”变为“1”;第2 条使指定位的值等于原来相反的值,(相当于做“非”运算)。例如:CPL P1.0 ,以我们做过的实验为例,如果原来灯是亮的,则执行本指令后灯就灭了;反之就是灯亮。


(5)位逻辑“与”指令A.ANL C,bit B.ANL C,/bit
指令说明:第1 条CY 位与指定的位地址的值相“与”,结果送回CY;第2 条先将指定的位地址中的值取出后取反,再和CY 相“与”,结果送回CY,但需注意☺,指定的位地址中的值本身并不发生变化。

例如:ANL C,/P1.0 设:执行本指令前,CY=1,P1.0 等于“1”(灯灭),则执行完本指令后CY=0,而P1.0 仍等于“1”。可用下列程序进行验证:

START:MOV SP,#5FH ;

MOV P1,#0FFH; SETB C ; A

NL C,/P1.0 ;

MOV P1.1,C ;

将做完的结果送P1.1, 结果应当是P1.1 上的灯亮,而P1.0 上的灯还是亮。


(6)位逻辑“或”指令

A.ORL C,bit

B.ORL bit,C
这两条指令的功能大家自行分析吧,然后对照上面的例程,自己编一个验证程序,看看自己想得对不对?


(7)判CY 条件转移指令

A.JC rel
B.JNC rel
指令说明:这两条指令叫做判CY 转移指令,第1 条指令的功能是如果CY 等于“1”就转移;

如果不等于“1”就顺序执行,那么转移到什么地方去呢?我们可以这样理解:JC 标号,即如果等于“1”就转到标号处执行;第2 条指令则和第1 条指令正好相反,即如果CY=0 就转移,不等于“0”则顺序执行,转移到什么地方,我们同样可以这样理解:JNC 标号。


(8)判位变量转移指令

A.JB bit,rel

B.JNB bit,rel
指令说明:第1 条指令是如果指定的bit 位中的值是“1”,则转移;

否则就顺序执行,转移到什么地方,同样我们可以这样理解:JB bit,标号;第2 条指令请大家自行分析一下。


(9)判位变量转移并将该位清零:JBC bit,rel
指令说明:这条指令同JB bit,rel 的区别在于判“1”转移的同时清除该位,为什么要这样做呢?后面我们会讲到。
接下来我们做一个这方面的实验:

把上面的程序下载到实验板上,看看有什么现象⋯⋯⋯按下接在P3.4 上的按键,P1 口的灯全亮了,松开或再按,灯并不熄灭;然后按下接在P3.5 上的按键,灯就全灭了,这像什么?这不就是工业控制中经常用到的启动、停止功能吗?怎么做到的呢?

   

     一开始,将0FFH 送入P3 口,这样,P3 口所有的引线都处于高电平

然后执行L1,如果P3.4 是高电平(键没有按下),则顺序执行JNB P3.5,L3 语句

同样,如果P3.5 是高电平(键没有按下),则顺序执行LJMP L1 语句,这样就不停地检测P3.4 和P3.5

如果有一次P3.4 上的按键按下去了,则转移到L2(执行MOV P1,#00H),使灯全亮

然后又转去L1,再次循环,直到检测到P3.5 为“0”

就转去L3(执行MOV P1,#0FFH),使灯全灭

再转去L1,如此不断地循环就可以了

这里提一个问题,我们这个实验中控制的是一个字节(既整个P1 口),如何来实现一位(比如P1.0)的控制呢?其实很简单,只要把程序改一下就可以了。
程序如下:
ORG 0000H ;

LJMP START ;

ORG 30H ;

START:MOV SP,#5FH ;

尽管实际的程序还要考虑按键的去抖动问题,但程序的基本结构和流程是实用的,这样的程序就能完成我们对工业控制中继电器的控制目的。怎么样,如果现在让您用单片机控制一台电机的正反转应该没有问题了吧,试试看。

 

单片机经典教程

 第一课 单片机的概述和分类

 第二课 单片机引脚功能介绍

 第三课 单片机内部结构(一)

 第四课 单片机内部结构(二)

 第五课 单片机内部结构(三)

 第六课 单片机内部结构(四)

 第七课 单片机内部结构(五)

 第八课 单片机内部结构(六)

 第九课  单片机是如何工作的?

 第十课 寻址是如何实现的

 第十一课 单片机的指令(一)

 第十二课 单片机的指令(二)

 第十三课 单片机的指令(三)

 第十四课 单片机的指令(四)

 第十五课 单片机的指令(五)

 第十六课 单片机程序的设计

 第十七课 单片机定时/计数器

 第十八课 单片机的中断系统

 第十九课 定时与中断实验一

 第二十课 定时与中断实验二

 第二十一课 键盘接口与编程一

 第二十二课 键盘接口与编程二

 第二十三课 数码管接口与编程1

 第二十四课 数码管接口与编程2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XL2000单片机开发板&实验仪

XL600+51mini仿真器

xl400+51mini开发板

XL400单片机学习开发板

XL600编程实验单片机开发板

 

EP3.0支持stc双串口编程器

Ep51 单片机编程器

Top853 usb通用编程器

Top2007多功能编程器

GENIUS UPL800通用编程  

编辑:学林单片机@ 修订1.3 2010-01-25  学林电子,中国单片机学习板和开发板第一品牌   本文8951.com版权所有,未经书面批准转载必究。

当前共1030篇单片机基础入门文章,更多精彩内容请进入学林单片机论坛   联系我们 法律声明  粤ICP备05015330号