1、第4章 单片机系统,本章要点 1.了解数制及转换,门电路知识 2.了解AT89S51单片机系统结构,组成原理,搭建简单系统。 3. 掌握 AT89S51单片机基本指令系统,编写简单应用程序。,第4章目录,4.1 单片机基础知识 4.2 单片机基本组成与工作原理 4.3单片机汇编语言及内部RAM操作指令 4.4单片机IO端口与应用实例 4.5单片机指令与汇编语言程序设计,4.3.2、寻址方式系统,4.3.3、51系列单片机汇编语言指令中常用符号,4.3.1、MCS-51单片机指令系统,目录,第4.3节单片机汇编语言与内部RAM操作指令,本节要点 1.掌握51单片机指令格式与寻址方式 2.掌握RA
2、M操作指令 3. 了解单片机运行过程,4.3.4、内部RAM的操作指令,4.3.5、单片机工作过程,4.3.1 MCS-51单片机指令系统,指令是指挥计算机工作的命令,一种计算机所能执行的指令集合称之为该种计算机的指令系统。,指 令,机器指令0010 0100 0000 1010B (二进制数表示) 24 0A(十六进制数表示) 汇编指令ADD A,#0AH,一、指令,MCS-51单片机用42种操作码助记符来描述33种操作功能。又因为该指令系统中的一种操作可以使用多种寻址方式,因此操作功能助记符与寻址方式组合可得到111条指令 数据传送类指令 算数运算类指令 逻辑操作类指令 控制转移类指令 位
3、操作类指令,二、51汇编语言指令的基本格式 指令的表示形式称指令格式。编写程序时必须严格按指令格式书写。,51系列单片机汇编语言指令格式由4部分构成: 标号:操作码 目的操作数,源操作数 ;注释。 LOOP:MOV A, 20H ;将20H单元内容送累加器A (1)标号:为该指令的符号地址,根据需要设置。标号以字母开头,由字母、数字和下画线组成的字符串,字符串的最后必须有“:” ,系统的保留字不能作为标号 。标号是该指令的符号地址,它的实质是反映该指令在ROM中的地址(存放位置),因此在同一个程序中标号不可重复。 标号在程序中主要是作为其它转移类指令的目的地址,或子程序的名称。 (2)操作码操
4、作码是每条汇编语言指令都必须有的,它是51系列单片机指令系统规定的助记符,规定某条指令的操作功能。 (3)操作数操作数是参与操作的数据或地址。不同功能的指令,操作数的个数是不同的,在03个之间。在书写时操作数和操作码之间要留有空格,当有多个操作数时,操作数之间要用“,”隔开,前面的操作数称为目的操作数,后面的称为源操作数。 (4)注释。是对该条指令的说明,便于阅读和理解程序功能。必须以“;”开始。,4.3.2、寻址方式系统,4.3.3、51系列单片机汇编语言指令中常用符号,4.3.1、MCS-51单片机指令系统,目录,第4.3节单片机汇编语言与内部RAM操作指令,4.3.4、内部RAM的操作指
5、令,4.3.5、单片机工作过程,4.3.2寻址方式,指令中,操作数可能是具体的数据,也可能是具体的存放数据的地址或符号,无论何种情况,都可由操作数取得参与指令运行的二进制数据。这个过程叫作寻址。,1 立即寻址方式,所谓立即寻址就是操作数在指令中直接给出。立即寻址方式的操作数称立即数,立即数只能是源操作数,不能作为目的操作数。立即数有8位立即数和16位立即数。使用时在立即数前加“#”标志。,例:MOV A, #20H ;将数20H送入累加器MOV DPTR, #20D8H;将数20D8H送入地址指针DPTR,;即20H送入DPTH,D8H送入DPTL,2 直接寻址方式,直接寻址就是操作数直接以单
6、元地址的形式给出。直接地址以存贮单元形式出现。例如指令: MOV A, 20H,3 寄存器寻址方式,寄存器寻址就是操作数在寄存器中。例如指令:MOV A, R2,4 寄存器间接寻址方式,寄存器间接寻址使用的寄存器为Ri和DPTR,使用时寄存器前面加“标志。即以下形式: MOV A,Ri MOVX A,DPTR 例如:(R1)80H、(80H)=33H,则执行指令MOV A,Ri后,累加器A的内容为33H而不是80H。,寄存器间接寻址是以寄存器中的内容为地址取得操作数的方法。和寄存器寻址相比,寄存器寻址时,寄存器中存放的是操作数,而寄存器间接寻址中时,寄存器中存放的是操作数的地址。,5 基址加变
7、址寻址方式,基址加变址寻址就是以DPTR或PC为基址寄存器,以A为变址寄存器,以两者内容相加形成16位地址作为操作数地址。 例如指令:MOVC A,A+DPTR,6 位寻址方式,位寻址方式就是以位为操作数。MCS-51单片机有相当强的位处理功能,可以对位进行直接操作。 例如指令:MOV C, 4AH,位寻址范围 1)内部RAM的位寻址区 2)可供位寻址的11个专用寄存器,7 相对寻址方式,相对寻址是在相对转移指令中,根据地址相对当前PC的偏移量得到操作数的方式。如:JZ rel,偏移量rel是一带符号8位二进数的补码数,范围为-128+127。实际书写程序时往往先用地址标号代替,在汇编为机器指
8、令时再计算出来。,例 指出下列每一条指令的寻址方式。MOV 2FH,#40HMOV A,R0MOV DPTR,#2020HMOV 45H,P0MOV A,R1MOVC A,A+PCJC LOOP,中的源操作数为立即寻址,目的操作数为直接寻址。 中的源操作数为寄存器间接寻址,目的操作数为寄存器寻址。 中的源操作数为16位立即寻址,目的操作数为寄存器寻址。 中的源操作数和目的操作数都是直接寻址。 中的源操作数和目的操作数都为寄存器寻址。 中的源操作数为基址加变址寻址,目的操作数为寄存器寻址。 中的操作数为相对寻址。,例 判断下列指令是否正确,若不正确请指出错误:MOV A,DPTRMOV DPTR
9、,#03HMOV #80H,R7MOV B,C,解不正确。A是8位寄存器,DPTR为16位寄存器,不匹配。正确。不正确。#80H为立即数,不能作为目的地址。不正确。B为8位字节寄存器,C为1位位累加器,不匹配。,4.2.2、寻址方式系统,4.2.3、51系列单片机汇编语言指令中常用符号,4.3.1、MCS-51单片机指令系统,目录,第4.3节单片机汇编语言与内部RAM操作指令,4.2.4、内部RAM的操作指令,4.2.5、单片机工作过程,4.3.3、51系列单片机汇编语言指令中常用符号 即操作数的符号。 (1)Rn:当前工作寄存器区的8个工作寄存器R0R7,n=07。 (2)Ri:当前工作寄存
10、器R0和R1,i=0,1。 (3)direct:8位的直接地址,代表内部RAM 00H7FH单元,以及特殊功能寄存器的字节地址或名称。 (4)Ri:8位的间接地址,也代表内部RAM 00H7FH的某一单元,此时工作寄存器Ri的内容是多少,就代表相应的单元。用间址寻址的优点之一是循环方便。 (5)#data:8位的立即数,所谓立即数就是指令中直接参与操作的数据。 (6)#data16:16位的立即数。 (7)bit:位地址。代表内部RAM 位寻址区 (20H2FH)中可寻址位以及SFR中的可寻址位。具体的形式可以是位地址、位编号以及位定义。 (8)addr16:十六位的目的地址。 (9)addr
11、11:11位的目的地址。 (10)rel:带符号的8位偏移地址。范围是 +127 128。 X:某寄存器或某单元(X):某寄存器或某单元中的内容。:指令执行后数据传送的方向。,操作数在具体程序中是数字形式或标号,direct、data、bit可以用二进制数、十进制数或十六进制数书写,用十六进制数时,如果高位是A、B、C、D、E、F时,必须在数的前面加0,以便和标号区别开来。addr16、addr11、rel在程序中的形式就是编程者所起的标号名称。,4.3.2、寻址方式系统,4.3.3、51系列单片机汇编语言指令中常用符号,4.3.1、MCS-51单片机指令系统,目录,第4.3节单片机汇编语言与
12、内部RAM操作指令,4.3.4、内部RAM的操作指令,4.3.5、单片机工作过程,4.3.4、内部RAM的操作指令 1、内RAM间的数据传送指令 MOV 目的操作数,源操作数“MOV”是操作码,英语MOVE的简写,功能就是把源操作数传送到目的操作数,源操作数保持不变,操作数就是我们前面讲的A、Rn、direct、Ri、data。 (1)以累加器A为目的地址传送指令 1) MOV A,Rn ;ARn,Rn里的内容送;到累加器A 2) MOV A,direct;A(direct),direct;单元里的内容送A 3) MOV A,Ri ;A(Ri),内部RAM;某一单元里(以Ri里的;内容为地址的
13、单元);的内容送到累加器A 4) MOV A,#data ;Adata 8位的立即;数送到累加器A,(2)以工作寄存器Rn 为目的地址传送指令1) MOV Rn,A ;RnA2) MOV Rn,direct ;Rn(direct)3) MOV Rn,#data ;Rndata 注意:工作寄存器相互间、Rn与Ri之间、R0与R1之间没有传送指令。 (3)以direct为目的地址传送指令 1)MOV direct,A ;(direct)A2)MOV direct,Rn ;(direct)Rn3)MOV direct1,direct2 ;(direct1);(direct2)4)MOV direct
14、,Ri ;(direct);(Ri)5)MOV direct,#data ;(direct)data,(4)以Ri为目的地址传送指令 1)MOV Ri,A ;(Ri)A 2)MOV Ri,direct ;(Ri)(direct) 3)MOV Ri,#data ;(Ri)data,2、累加器A的清零与取反指令 CLR A ;A0,将累加器A的内容;清为0CPL A ;将累加器A的内容按位;取反 3 16位数据传送指令MOV DPTR,#data16 ;data16DPTR,例 分析下面程序运行的结果MOV A,#30H ;A30H,即A=30HMOV R0,A ;R0A,即R0=30HMOV 7
15、0H,R0 ;(70H)R0,;即(70H)=30HMOV R0, #55H ;(R0)55H,;即(30H)=55HMOV R1,30H ;R1(30H),;即R1=(30H)=55HMOV 55H,#0AAH ;(55H)AAH,;即(55H)=AAHMOV 40H,R1 ;(40H)(R1),;即(40H)=(55H)=AAH,4、位操作指令 1)位置1指令SETB bit ;bit1SETB C ;C1 2)位清0指令CLR bit ;bit0CLR C ;C0 3)位取反指令CPL bit ;bitbitCPL C ;CC 4)位传送指令MOV bit,C ;bitCMOV C,bi
16、t ;Cbit,CLR 0D4H SETB 0D3H,CLR PSW.4 SETB PSW.3,CLR RS1 SETB RS0,三组指令的功能是一致的,都是选择工作寄存器1区作为当前工作寄存器。,注意:以字母为开头的地址前要加零,以和整个程序中转移的标号相区别。,位操作指令中bit的形式可以是位地址、位编号和位定义,例如:,4.3.2、寻址方式系统,4.3.3、51系列单片机汇编语言指令中常用符号,4.3.1、MCS-51单片机指令系统,目录,第4.3节单片机汇编语言与内部RAM操作指令,4.3.4、内部RAM的操作指令,4.3.5、单片机工作过程,4.3.5 单片机工作过程,单片机的工作过
17、程实质上是执行用户编制程序的过程,程序由一条条指令组成,所有指令的集合称为指令系统,厂商为每一条指令都给出助记符(英文缩写,便于记忆),助记符经便宜成为机器码,程序的机器码都已固化到存储器中,因此开机复位后,就可以执行指令。执行指令又是取指令和执行指令的周而复始的过程。MSC-51单片机用42种操作码助记符来描述33种操作功能。又因为该指令系统中的一种操作可以使用多种寻址方式,因此操作功能助记符与寻址方式组合可得到111条指令。 例:程序:MOV A,#E0H; 机器码 74H、E0H假设机器码74H、E0H 已存在0000H开始的单元中,则此表示把E0H这个值送入A累加器。下面我们来说明单片
18、机的工作过程。,接通电源开机后,PC =0000H,取指令过程如下: (1) PC中的0000H 送到片内的地址寄存器; (2)PC的内容自动加1变为0001H,指向下一个指令字 (3) 地址寄存器中的内容0000H通过地址总线送到存储器,经存储器中的地址译码选中0000H单元; (4)CPU通过控制总线发出读命令; (5)被选中单元的内容74H送内部数据总线上,该内容过内部数据总线送到单片机内部的指令寄存器。到此,取 指令过程结束,进入执行指令过程。执行指令的过程: (1) 指令寄存器中的内容经指令译码器译码后,说明这条指令是取数命令,即把一个立即数送A中;(2)PC的内容为0001H,送地
19、址寄存器,译码后选中0001H单元,同时PC的内容自动加1变为0002H;(3)CPU同样通过控制总线发出读命令;(4)0001H单元的内容E0H读出经内部数据总线送至A。至此,本指令执行结束。PC=0002H,机器又进入下一条指令的取指令过程。机器一直重复上述过程直到程序中的所有指令执行完毕,这就是单片机的基本工作过程。,4.3节 小结,本节介绍了51单片机的指令与寻址方式,介绍了内RAM操作指令,同时总结了单片机的运行过程。,实验一,1 实验目的与要求 目的:通过本实验,熟悉伟福单片机开发实验系统软、硬件的基本操作,同时学习简单的8051汇编语言程序的编写和调试方法。 要求:熟悉伟福LAB2000P单片机开发实验系统软、硬件,掌握伟福集成调试环境WAV6000的使用方法。 2 实验内容 1了解LAB2000仿真试验系统 查看实验仪电路布局,连接实验仪和PC机,按第一章介绍安装配置实验系统,通讯正常。 2存储器块清零程序,BLOCK EQU 6000H ;伪指令,将一个数值或寄存器名赋给一个指定的符号名MOV DPTR, #BLOCK ; 起始地址MOV R0, #256 ; 清零 256 字节MOV A, #0 LOOP: MOVX DPTR, AINC DPTRDJNZ R0, LOOP ; 记数减一,RO不为零跳转到LOOPLJMP $ ;原地跳转,没有会怎么样?END,