(玩电子) 电子技术学习与研讨
当时方位:单片机教程网 >> 基础教程 >> 阅览文章

15课:单片机位操作指令

作者:佚名   来历:本站原创   点击数:x  更新时刻:2007年08月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指令改写?

casino
宣布谈论】【告知老友】【保藏此文】【封闭窗口

文章谈论

m88 188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help