<meta name="keywords" content="必胜时时彩开户,keywords" /> 15课:单片机位操作指令 联系我们

15课:单片机位操作指令

    前面那些流水灯的例程,我们曾经习气了“位”一名就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来简介的:字节的移动、加法、减法、逻辑运算、移位等等。用字节来处置赏罚赏罚一些数学效果,好比说:控制冰箱的温度、电视的音量等等很直不雅不雅,能直接用数值来表在。可是假定用它来控制一些开关的掀开和合上,灯的亮和灭,就有些不直接了,记得我们上次课上的流水灯的例程吗?我们知道送往P1口的数值后着实不克不及立时知道哪个灯亮和来灭,而是要化成二进制才知道。工业中有许多场所须要处置赏罚赏罚这类开关输入,继电器吸合,用字节来处置赏罚赏罚就显示有些费事,以是在8031单片机中专程引入一个位处置赏罚赏罚机制。

位寻址区

在8031中,有一部门RAM和一部门SFR是具有位寻址功效的,也就是说这些RAM的每个位都有自已的地址,能直接用这个地址来对此阻拦操作。

外部RAM的20H-2FH这16个字节,就是8031的位寻址区。看图1。可见这外面的每个RAM中的每个位我们都能够直接用位地址来找到它们,而不用用字节地址,然后再用逻辑指令的要领。

能位寻址的特殊功效存放器

8031中有一些SFR是能阻拦位寻址的,这些SFR的特点是其字节地址都可被8整除,如A累加器,B存放器、PSW、IP(中止优先级控制存放器)、IE(中止允许控制存放器)、SCON(串行口控制存放器)、TCON(准时器/计数器控制存放器)、P0-P3(I/O端口锁存器)。以上的一些SFR我们还不熟,等我们解说相关内容时再作详细诠释。

位操作指令

MCS-51单片机的硬件结构中,有一个位处置赏罚赏罚器(又称布尔处置赏罚赏罚器),它有一套位变量处置赏罚赏罚的指令集。在阻拦位处置赏罚赏罚时,CY(就是我们前面讲的进位位)称“位累加器”。有自已的位RAM,也就是我们刚讲的外部RAM的20H-2FH这16个字节单元即128个位单元,尚有自已的位I/O空间(即P0.0…..P0.7,P1.0…….P1.7,P2.0……..P2.7,P3.0……..P3.7)。虽然在物理实体上它们与原来的以字节寻址用的RAM,及端口是完全类似的,或许说这些RAM及端口都能有两种应用措施。

位传送指令

MOV C,BIT

MOV BIT,C

这组指令的功效是完成位累加器(CY)和其它位地址之间的数据转达。

例:MOV P1.0,CY ;将CY中的状态送到P1.0管脚上去(假定是做算术运算,我们便可以经由历程不雅不雅察知道现在CY是若干啦)。

MOV P1.0,CY ;将P1.0的状态送给CY。

位修改指令

位清0指令

CLR C ;使CY=0

CLR bit ;使指令的位地址即是0。例:CLR P1.0 ;纵然P1.0酿成0

职位1指令

SETB C ;使CY=1

SETB bit ;使指定的位地址即是1。例:SETB P1.0 ;使P.0酿成1

位取反指令

CPL C ;使CY即是原来的相反的值,由1酿成0,由0酿成1。

CPL bit ;使指定的位的值即是原来相反的值,由0酿成1,由1酿成0。

例:CPL P1.0

以我们做过的实验为例,假定原来灯是亮的,则推行本指令后灯灭,反之原来灯是灭的,推行本指令后灯亮。

位逻辑运算指令

位与指令

ANL C,bit ;CY与指定的位地址的值相与,效果送回CY

ANL C,/bit ;先将指定的位地址中的值取出后取反,再和CY相与,效果送回CY,但重视,指定的位地址中的值自己着实不发生变换。

例:ANL C,/P1.0

设推行本指令前,CY=1,P1.0即是1(灯灭),则推行完本指令后CY=0,而P1.0也是即是1。

可用以下法式模范模范验证:

ORG 0000H

AJMP START

ORG 30H

START: MOV SP,#5FH

MOV P1,#0FFH

SETB C

ANL C,/P1.0

MOV P1.1,C ;将做完的效果送P1.1,效果应当是P1.1上的灯亮,而P1.0上的灯还是不亮

位或指令

ORL C,bit

ORL C,/bit

这个的功效年夜家自行剖析吧,然后较量下面的例程,编一个验证法式模范模范,看看你相得对吗?

位条件转移指令

判CY转移指令

JC rel

JNC rel

第一条指令的功效是假定CY即是1就转移,假定不即是1就序次推行。那么转移到甚么地方去呢?我们能这样明确:JC 标号,假定即是1就转到标号处推行。这条指令我们在上节课中已讲到,不再重复。

第二条指令则和第一条指令相反,即假定CY=0就转移,不即是0就序次推行,虽然,我们也异常明确: JNC 标号

判位变量转移指令

JB bit,rel

JNB bit,rel

第一条指令是假定指定的bit位中的值是1,则转移,否则序次推行。异常,我们能这样明确这条指令:JB bit,标号

第二条指令请年夜家先自行剖析

下面我们举个例程诠释:

ORG 0000H

LJMP START

ORG 30H

START:MOV SP,#5FH

MOV P1,#0FFH

MOV P3,#0FFH

L1: JNB P3.2,L2 ;P3.2上接有一只按钮,它按下时,P3.2=0

JNB P3.3,L3 ;P3.3上接有一只按钮,它按下时,P3.3=0

LJM P L1

L2: MOV P1,#00H

LJMP L1

L3: MOV P1,#0FFH

LJMP L1

END

把下面的例程写入片子,看看有甚么情形………

按下接在P3.2上的按钮,P1口的灯全亮了,松开或再按,灯着实不熄灭,然后按下接在P3.3上的按钮,灯就全灭了。这像甚么?这不就是工业现场经常常应用到的“启动”、“阻拦”的功效吗?

怎样做到的呢?一泉源,将0FFH送入P3口,这样,P3的一切引线都处于高电平,然后推行L1,假定P3.2是高电平(键没有按下),则序次推行JNB P3.3,L3语句,异常,假定P3.3是高电平(键没有按下),则序次推行LJMP L1语句。这样就一直地检测P3.2、P3.3,假定有一次P3.2上的按钮按下去了,则转移到L2,推行MOV P1,#00H,使灯全亮,然后又转去L1,再次循环,直到检测到P3.3为0,则转L3,推行MOV P1,#0FFH,例灯全灭,再转去L1,云云循环不已。年夜家能否略加修改,将本法式模范模范用JB指令改写?