第4章 80C51单片机指课件.ppt





《第4章 80C51单片机指课件.ppt》由会员分享,可在线阅读,更多相关《第4章 80C51单片机指课件.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 80C51单片机指令系统 上海电子信息职业技术学院上海电子信息职业技术学院 何永艳主编何永艳主编4.1 位及位操作指令位及位操作指令LEDVCCVCCNOTR1200R3200C310uF/16VR210KS?SBVCCXTAL6MHZC133pFC233pFEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN2
2、9ALE/P30TXD11RXD1080C51图2.1 用单片机控制单个LED的电路原理图接在P1.0上的二极管要么亮,要么不亮,只有两种状态,我们可以用0和1来代替这两种状态,规定亮为1,不亮为0。二极管的亮和灭只是一种物理现象,可告诉单片机时,二极管的亮和灭就代表数字了。实际上这就是一个二进制位,因此把一根线(P1.0)称之为一“位”,用BIT表示。 4.1.1 位寻址区位寻址区位地址位地址:00H7FH :00H7FH 分布在分布在:20H2FH:20H2FH单元单元 这些可位寻址的空间,可通过执行指令直接对某一位进行操作,这些可位寻址的空间,可通过执行指令直接对某一位进行操作,如置如置
3、1、清、清0或判或判1、判、判0等,可用作软件标志位或用于位(布等,可用作软件标志位或用于位(布尔)处理。尔)处理。这是一般微机所不具备的,这种位寻址能力是这是一般微机所不具备的,这种位寻址能力是8051所独有的。所独有的。 20H2FH:既可以字节操作,又可以位操作,但是要用不同:既可以字节操作,又可以位操作,但是要用不同的指令来区分;的指令来区分; 位地址位地址3AH的另一种表达形式为的另一种表达形式为27H.2 mov 20h,a setb 00h setb 20.04.1.2 可以位寻址的特殊功能寄存器可以位寻址的特殊功能寄存器 80C51中有一些SFR是可以进行位寻址的,这些SFR的
4、特点是其字节地址均可被8整除, 1.累加器累加器ACC(E0H) 累加器ACC是8051最常用、最繁忙的8位特殊功能寄存器,许多指令的操作数取自于ACC,许多运算结果也存放于ACC中。在指令系统中采用A作为累加器ACC的助记符。2.寄存器寄存器B(F0H) 在乘、除指令中,用到了8位B寄存器。乘法指令的两个操作数分别取自A和B,乘积存于B、A两个8位寄存器中。除法指令中,A中存放被除数,B中放除数,商存放于A中,B中存放余数。在其它指令中,B可作为一般通用寄存器或一个RAM单元使用3.程序状态寄存器程序状态寄存器PSW(D0H)PSW是一个8位特殊功能寄存器,它的各位包含了程序执行后的状态信息
5、,供程序查询或判别之用。1)CY(PSW.7) 进位标志位。2)AC(PSW.6) 半进位标志位,也称辅助进位标志。3)F0、F1(PSW.5,PSW.1) 用户标志位。4)RSO和RSl(PSW.4和PSW.5) 工作寄存器组选择控制位。 5)OV(PSW.2) 溢出标志位。6)P(PSW.0) 奇偶检验标志位。4.1.3 位操作指令位操作指令 1.位传送指令 MOV C,BITMOV BIT,C这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。如: MOV P1.0,CY ;将CY中的状态送到P1.0引脚上去(如果是做算术运算,就可以通过观察知道现在CY是多少)。 MOV C
6、Y , P1.0;将P1.0的状态送给CY。 2.位修正指令 1)位清0指令 CLR C ;使CY=0CLR bit ;使指令的位地址等于0。如: CLR P1.0 ;即使P1.0变为0 2)位置1指令 SETB C ;使CY=1SETB bit ;使指定的位地址等于1。如: SETB P1.0 ;使P.0变为1 3)位取反指令 CPL C ;使CY等于原来的相反的值,由1变为0,由0变为1。CPL bit ;使指定位的值等于原来相反的值,由0变为1,由1变为0。如:CPL P1.0;如图2.1所示,如果原来灯是亮的,则执行本指令后灯灭,反之原来灯是灭的,执行本指令后灯亮。3.位逻辑运算指令
7、1)位“与”指令 ANL C,bit ;CY与指定的位地址的值相与,结果送回CYANL C,/bit ;先将指定的位地址中的值取出后取反,再和CY相与,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。 可用下列程序验证图2.1的程序:ORG 0000HAJMP STARTORG 0030H START:MOV SP,#5FH ;指出堆栈首地址MOV P1,#0FFH; P1口的8位初始状态全为1SETB C ;C置1ANL C,/P1.0;(C)=0MOV P1.0,C ;(P1.0)0,结果应当是P1.0上的灯亮END 2)位“或”指令 ORL C,bit;CY与指定的位地址的值相
8、或,结果送回CYORL C,/bit;先将指定的位地址中的值取出后取反,再和CY相或,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。 4.位条件转移指令 1)判CY转移指令 JC relJNC rel 2)判位变量转移指令 JB bit,relJNB bit,rel 3)判位变量且清0转移指令JBC bit,rel这组指令的功能是分别判进位CY或直接寻址位是1还是0,条件符合则转移;否则继续执行程序。当直接位地址是端口的某一位时,作“读改写”操作。一般采用标号来表示待转移的位置。用开关控制LED的电路如图4.1所示。接通电源,LED灭,当开关往上拨时,LED亮,开关往下拨LED即灭
9、。+5V30P30PC1R2LED+5VNOTR1200XTAL+5VVCCEAX1X2RSTVSSP1.080C51K1+5VP1.7图图4.1 用开关控制用开关控制LED的电路原理图的电路原理图4.1.4 用开关控制用开关控制LED 源程序文件如下:ORG 0040H ;该源程序从0040H地址开始存放。SETB P1.7 ;P1.7作为输入口,应先写入“1”。 L2:JB P1.7,L1 ;判P1.7等于“1”即开关往上拨了吗?是的,转向标 号为L1的指令执行;否则继续往下执行程序。CLR P1.0 ;P1.7等于“0”即开关往下拨时,P1.0等于“0”,即 LED灭。AJMP L2 ;
10、循环上去再判别P1.7的状态。 L1:SETB P1.0 ;P1.7等于“1”即开关往上拨时,P1.0等于“1”,即 LED亮。AJMP L2 ;循环上去再判别P1.7的状态。END ;程序结束。4.1.5 用位操作指令实现交流电机控制用位操作指令实现交流电机控制1.用位操作指令实现电机控制的特点程序设计简单:将电气控制图转化为逻辑图,以指令的形式实现。串联使用“ANL C,bit”指令,并联使用“ORL C,bit”指令,类似于PLC的写法。容易除错:所使用的指令少,因而便于除错速度较快:程序较短,占用的字节较少,所有执行速度比较快。效率高:使用的位操作指令采用直接寻址方式,执行效率较高2.
11、电动机起动与停止的基本控制1)控制功能(1)接上电源时,电动机无动作。(2)按下起动按钮SB2时,电动机开始运转。(3)超载时,热继电器FR跳脱,电动机停止运转,此时需将FR复位后,按下按钮SB2才有效图4.2 电动机起停电气控制图(4)按下停止按钮SB1时,电动机立刻停止运转(5)输入/输出口的控制2)电气控制图电动机起动与停止的电气控制图如图4.2所示。3)单片机引脚功能分配(1)P1.0:接起动按钮SB2,当按钮按下时P1.0=1(2)P1.1:接停止按钮SB1, 当按钮按下时P1.1=0(3)P1.2:接热继电器FR的常闭触点,当电机超载时FR断开,P1.2=0(4)P2.0:接交流接
12、触器KM的线圈,当线圈KM有电时,P2.0=0图4.2 电动机起停电气控制图3.程序设计此电气控制图的等效逻辑电路如图4.3所示,源程序如下。ORG 0000HCLR P2.0;先把P2.0口初始化为“0”START: MOV C,P1.0;暂存输入信号P1.0ORL C,/P2.0;P1.0和/P2.0的内容相或,结果暂存C中ANL C,/P1.1;或完的结果C与/P1.1相与,结果暂存C中ANL C,/P1.2 ;再次把与完的结果C与/P1.2相与,结果暂存C中MOV P2.0 ,C;把最终的结果存放到P2.0AJMP START;不断循环,采集输入信号,及时在P2.0上更新结果END 4
13、.2 数据传送指令及应用数据传送指令及应用上一节中让P1.0的LED亮灭,用位操作的方法实现,那能不能在P1口上接8个LED让它们同时亮灭呢。如图4.4所示,如果根据以前所学的知识,8个LED亮,就要用8条位操作指令实现,如表4.3所示。而如果用数据传送指令只需一条即可实现,方便简单很多。+5V30P30PC1R2LED1+5VR1200XTAL+5VVCCEAX1X2RSTVSSP1.080C51LED2R2200P1.1LED8R8200P1.7.图4.4 8个LED亮灭电路原理图4.2.1 8个个LED亮灭亮灭 表4.3 8个LED亮的指令对照表一根线可以表示0和1,两根线可以表达00,
14、01,10,11四种状态,也就是可以表于0到3,而三根可以表达07,单片机中通常用8根线(P1.0P1.7)放在一起,表示一个8位的并行口P1,同时计数,就可以表达0255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。4.2.2 内部内部RAM数据传送指令数据传送指令MOV P1,#0FFH;指令功能指令功能:把数据0FFH送给P1,P1中的值是0FFH,即把111111118位二进制数分别送入到P1.0,P1.1, P1.2, P1.3, P1.4, P1.5, P1.6, P1.7 8根线上,也就是让8个LED亮。 传送指令通用格式为: MOV ,1.立即数传送指令(5条
15、) 1) 8位立即数传送指令位立即数传送指令MOV A,#data ;dataA ,(A)=dataMOV direct,#data ;datadirect,(direct)=dataMOV Rn,#data;dataRn,(Rn)=data (n=07)MOV Ri,#data;data(Ri),( Ri)=data(i=01) 说明:说明:箭头左边是要传送的数,箭头右边是送达的目的地。等号左边是地址或寄存器,等号右边是一个具体的数。A, Rn代表寄存器名;direct代表地;()代表寄存器或地址中地内容。(4)(Ri)代表以Ri中的内容为地址,再去找这地址中的数。这4条指令均是立即寻址方式
16、。 2) 16位立即数传送指令位立即数传送指令MOV DPTR,#data16 ;data16DPTR ,(DPTR)=data1680C51是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的地址数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。 如:MOV DPTR,#1234H;则执行完了之后DPH中的值为12H,DPL中的值为34H。反之,如果我们分别向DPH,DPL送数,则结果也一样。如:MOV DPH,#35H MOV DPL,#12H;则就相当于执行了MOV DPTR,#3512H。 2.内部内部RAM单元之间的数据传送指令单元之间的数据传送指令 内
17、部内部RAM单元之间的数据传送指令共有单元之间的数据传送指令共有5条:条:MOV direct2,direct1;(direct2)=(direct1),直接寻址方式MOV direct,Rn; (direct)=(Rn),寄存器寻址方式MOV Rn,direct; (Rn)=(direct),直接寻址方式MOV direct,Ri ; (direct)= (Ri),寄存器间接寻址方式MOV Ri,direct ; (Ri)=(direct),直接寻址方式 3.通过累加器的数据传送指令通过累加器的数据传送指令与累加器有关的数据传送指令共有与累加器有关的数据传送指令共有6条条:MOV A,Rn;
18、(A)=(Rn)MOV Rn, A;(Rn)= (A) MOV A,direct;(A)=(direct)MOV direct, A;(direct)=(A)MOV A,Ri;(A)= (Ri)MOV Ri,A;(Ri) =(A) 这6条指令用于实现累加器与不同寻址方式的内部RAM单元之间的数据传送。 4.2.3 外部外部RAM 数据传送指令数据传送指令 单片机有内部RAM数据传送指令了,为什么还要有外部RAM 数据传送指令呢?因为当单片机的内部RAM不够用时,就要扩充RAM空间,而80C51单片机能扩展64K的外部RAM,即从0000HFFFFH。那么,CPU是如何区分内外、部RAM的?已知
19、的内部RAM的操作码是MOV,而外部RAM的操作码则是MOVX,CPU就是根据不同的指令来自动区分读写内、外部RAM的。内部RAM间可以直接进行数据的传递,而外部RAM单元只能使用间接寻址方法,可以分别使用DPTR和Ri作间址寄存器。 1.使用Ri进行间接寻址 MOVX A,Ri;(Ri)A,(A)= (Ri) MOVX Ri,A;( A)(Ri),(Ri) =(A) 2.使用DPTR进行间接寻址 MOVX A,DPTR; (DPTR)A,(A)= (DPTR) MOVX DPTR,A;( A)(DPTR),(DPTR) =(A) 要读写或写入外部RAM,还必须知道外部RAM的地址,如果外部R
20、AM的地址是8位的,一般使用Ri进行间接寻址,如果外部RAM的地址是16位的,则只能使用DPTR进行间接寻址。所以不同的应用场合就要使用不同的读写指令。 【例4.5】按下列要求分别写出传送数据 1.将内部RAM中20H单元中的内容送入外部RAM中30H单元中MOV A,20HMOV R0,#30HMOVX R0,A4.2.4 程序存储器数据传送指令程序存储器数据传送指令MOVC A,A+PC;(A)+(PC)A,(A)= (A)+(PC)MOVC A,A+DPTR;(A)+(DPTR)A,(A)= (A)+(DPTR)本组指令也被称为查表指令,常用来查一个已做好在ROM中的表格 .此条指令的寻
21、址方式是变址寻址 【例4.6】 有一个数在R0中,要求用查表的方法确定它的平方值(此数的取值范围是05)MOV DPTR,#TABLEMOV A,R0MOVC A,A+DPTR . . TABLE: DB 0,1,4,9,16,25 如(R0)=2,则执行指令MOVC A,A+DPTR后,(A)+(DPTR)=TABLE+2,查表得44.2.5 堆栈指令堆栈指令PUSH direct ;SP(SP)+1,(SP)(direct)POP direct ;(direct) ( (SP), SP(SP)-1 第一条为压入指令,就是将direct中的内容送入堆栈中, 第二条为弹出指令,就是将堆栈中的内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 80C51单片机指课件 80 C51 单片机 课件

限制150内