单片机的内部结构、外部引脚存储器的基本知识及8051系列单片机的存储器系统并行IO端口的工作原理8051的各特殊功能寄存器单片机的4种工作方式8051单片机指令系统汇编语言程序设计.ppt
单片机的内部结构、外部引脚 存储器的基本知识及8051系列单片机的存储 器系统 并行IO端口的工作原理 8051的各特殊功能寄存器 单片机的4种工作方式 8051单片机指令系统 汇编语言程序设计 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望3.1 8051系列单片机的基本结构系列单片机的基本结构3.2 8051系列单片机存储空间配置和功能系列单片机存储空间配置和功能3.3 并行并行I/O端口端口3.4 时钟电路及时钟电路及CPU时序时序3.5 8051系列单片机的工作方式系列单片机的工作方式本章大纲本章大纲 3.6 8051系列单片机指令系统系列单片机指令系统 思考与练习思考与练习 3.7 汇编语言程序设计汇编语言程序设计 3.8 实践训练实践训练输入输出信号控制输入输出信号控制8051系列单片机的类型很多,但其内部结构与外部引脚功能基本相同。3.1 8051系列单片机的基本结构系列单片机的基本结构3.1.1内部结构框图图3-1 8051系列单片机内部结构框图3.1.2外部引脚功能图3-2 引脚存储器是计算机的重要组成部分,由大量缓冲寄存器组成,其用途是存放程序和数据,使计算机具有记忆功能。这些程序和数据在存储器中以二进制代码表示,根据计算机的命令,按照指定地址,可以把代码取出来或存入新代码。3.2 8051系列单片机存储空间配置和功能系列单片机存储空间配置和功能3.2.1存储器的基本概念图3-3 8051系列单片机存储空间配置图3.2.28051的程序存储器(ROM)单片机启动复位后,程序计数器PC的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有两组特殊的单元,这在使用中应加以注意。其中一组特殊单元是0000H0002H,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。另一组特殊单元是0003H002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下。l0003H000AH外部中断0中断地址区。l000BH0012H定时/计数器0中断地址区。l0013H001AH外部中断1中断地址区。l001BH0022H定时/计数器1中断地址区。l0023H002AH串行中断地址区。3.2.38051的数据序存储器(RAM)图3-4 内RAM分区3.2.38051的数据序存储器(RAM)3.2.38051的数据序存储器(RAM)3.2.38051的数据序存储器(RAM)3.2.38051的数据序存储器(RAM)3.2.38051的数据序存储器(RAM)8051系列单片机有P0、P1、P2、P3四个8位的双向并行端口,每个I/O端口都有一个8位数据锁存器,数据锁存器与P0、P1、P2、P3同名,属于21个特殊功能寄存器,对应内部RAM地址分别为80H、90H、A0H、B0H,对I/O端口的控制就是对相应的锁存器的控制。访问并行I/O端口除了可以用字节地址访问外,还可以按位寻址。当单片机复位时,P0P3锁存器的内容均为1。P0P3四个并行口在结构和功能上各不相同,下面分别叙述各端口的结构、功能和使用方法。3.3 并行并行I/O端口端口3.3.1P0口图3-5 P0口结构原理图3.3.2P1口图3-6 PI口结构原理图3.3.3P2口图3-7 P2口结构原理图3.3.4P3口图3-8 P3口结构原理图3.3.4P3口单片机执行指令的过程就是从ROM中取出指令一条一条地顺序执行,然后进行一系列的微操作控制,来完成各种指定的动作。这一系列微操作控制信号在时间上要有一个严格的先后次序,这种次序就是单片机的时序。时钟是时序的时间基础,单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路就要在唯一的时钟信号控制下按时序进行工作。3.4 时钟电路及时钟电路及CPU时序时序3.4.1时钟电路单片机的时钟可以采用内部产生也可以外部引进。图3-9 采用内部时钟电路 图3-10 外部时钟引入3.4.2CPU时序图3-11 单片机取指/执行时序8051系列单片机有4种工作方式:复位方式、程序执行方式、低功耗方式和内ROM编程及加密方式。程序执行是单片机的基本工作方式,CPU总是按照PC所指的地址从ROM中取指并执行。每取一个字节,PC自动加1,只有当调用子程序、中断或执行转移指令时,PC会相应产生新地址,CPU仍然按照PC所指的地址取指并执行。单片机的编程与加密由专门的编程器或烧录器来完成,类似的产品有很多,功能也不尽相同,用户只需了解其使用方法即可。3.5 8051系列单片机的工作方式系列单片机的工作方式3.5.1复位方式单片机执行程序时总是从地址0000H开始的,所以在进入系统时必须对CPU进行复位。另外,由于程序运行中的错误或操作失误使系统处于死锁状态时,为了摆脱这种状态,也需要进行复位。图3-12 复位电路3.5.1复位方式3.5.2低功耗方式在以电池供电的系统中,有时为了降低电池的功耗,在程序不运行时就要采用低功耗方式,低功耗方式有两种:待机(休闲)方式和掉电方式。掉电保护方式时电流约为75A。低功耗方式由电源控制寄存器PCON来控制。PCON字节地址为87H,不能位寻址,其每一位定义的见表3-8。指令是指挥计算机执行某种操作的命令,一台计算机所有指令的集合称为指令系统。不同类型的计算机有不同的指令系统,一般来说是互不兼容的。指令系统反映了计算机的主要功能,是在设计计算机时确定下来的。计算机只能识别和执行机器语言的指令,机器语言指令采用二进制编码,称为指令的机器码或指令码。每一条指令在存放时都是以其机器码的形式存储的,各条指令的机器码以字节为单位存放,不同指令的字节数不一样。指令字越长,所占用内存单元越多。3.6 8051系列单片机指令系统系列单片机指令系统3.6.1指令系统概述8051系列单片机的指令系统共有111条指令,从不同的角度看具有不同的分类方式。根据功能不同分为5种类型:数据传送类29条,算术运算类和逻辑运算类各24条,控制转移类和位操作类各17条;根据寻址方式方式的不同可分为立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、相对寻址方式、基址寄存器加变址寻址方式、位寻址方式;从指令的执行时间看,单周期64条,双周期指令45条,4周期指令2条;从指令机器码字的节数来看,单字节指令有49条,双字节指令45条,3字节指令17条;根据汇编时功能不同可分为汇编指令和伪指令。3.6.1指令系统概述1、指令的表达形式每条指令有两种不同的表达形式:二进制代码(机器码)指令和助记符(汇编语言)指令。助记符指令必须转换成二进制代码指令才能存入存储器。2、汇编语言指令格式操作码第一操作数,第二操作数,第三操作数操作码:用来规定指令进行何种操作,是指令中不能空缺的部分。操作数:表示参与指令操作的数据或数据所在的地址。为可选项。有两个操作数时,前一个为目的操作数,后一个为源操作数。3.6.2寻址方式寻址方式是指在指令中提供操作数的方式,就是确定参与操作的参数的实际地址。指令系统中的一种操作可以使用多种寻址方式。寻址方式越多,则计算机的功能就越强,灵活性亦越大,能更有效地处理各种数据。8051系列单片机的寻址方式主要有7种:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址加变址寻址、相对寻址和位寻址。应当注意的是,寻址方式在各种计算机的指令系统中具有重要的意义,透彻理解各种寻址方式对于学习和掌握指令系统极为重要。3.6.2寻址方式1、立即寻址立即寻址是在指令中直接给出操作数的寻址方式,操作数前有标志符“#”,即操作数直接包含在指令中,和操作码一起构成机器码,位于操作码之后,存放在程序存储器中。操作数就是存放在程序存储器的常数,这样的操作数一般就称为立即数。2、直接寻址直接寻址是在指令中直接给出操作数地址的寻址方式,操作数位于操作码之后,存放在程序存储器中,而实际参数则存放在该地址所指向的存储单元中。3、寄存器寻址寄存器寻址是指通过寄存器提供操作数的寻址方式,即参与运算的操作数在某一寄存器中,能实现这种寻址的寄存器有R0R7及累加器A,其中工作寄存器(R0R7)由指令码的低三位表示,累加器A则隐含在指令码中。3.6.2寻址方式4、寄存器间接寻址寄存器间接寻址是指通过寄存器来间接提供操作数的寻址方式,一般简称寄存器间址,即在指令中给出存放操作数地址的寄存器,而操作数本身则存放在该地址所指向的存储单元中。为了区别于寄存器寻址,当寄存器作为间接寻址时,在间址寄存器前面加上“”。5、基址加变址寻址这种寻址方式的全称是基址寄存器加变址寄存器间接寻址,一般简称变址寻址,类似于寄存器间址。指令中给出的也是操作数的地址,不同的其地址由两部分组成,以16位的数据指针DPTR或程序计数器PC作为基址寄存器,以累加器A作为变址寄存器,基址寄存器的内容与变址寄存器的内容之和作为操作数地址。3.6.2寻址方式6、相对寻址相对寻址方式是为了实现程序的相对转移而设计的。相对寻址方式是以PC的当前值作为基地址,加上指令中给定的偏移量rel所得结果作为转移地址。PC的当前值是指执行完这条相对转移指令时PC中的地址值,即该转移指令的下一条指令的地址。偏移量rel是8位的符号数,以补码形式置于操作码之后存放。转移时以下一条指令的PC值为起点,转移范围是128127。7、位寻址方式位寻址方式是对片内RAM的位寻址空间进行位操作的寻址方式。在进行位寻址时,借助于进位标志位CY作为位操作的累加器,操作数直接给出该位的地址,然后根据操作码的性质对其进行位操作。位寻址的位地址与直接寻址的字节地址形式完全一样,二者主要由操作码区分,使用时应特别注意分清是直接寻址还是位寻址。3.6.38051单片机指令系统8051的指令按功能分为五大类:数据传送、算术运算、逻辑运算、控制转移和位操作指令。1、数据传送类指令(1)内部数据传送指令MOVA,Rn;A(Rn)MOVA,direct;A(direct)MOVA,Ri;A(Ri)MOVA,#data;A#dataMOVRn,A;Rn(A)MOVRn,direct;Rn(direct)3.6.38051单片机指令系统(1)内部数据传送指令MOVRn,#data;Rn#dataMOVdirect,A;direct(A)MOVdirect,Rn;direct(Rn)MOVdirect,Ri;direct(Ri)MOVdirect1,direct2;direct1(direct2)MOVdirect,#data;direct#dataMOVRi,A;(Ri)(A)MOVRi,direct;(Ri)(direct)MOVRi,#data;(Ri)#dataMOVDPTR,#data16;DPTR#data16)3.6.38051单片机指令系统(2)外部数据传送指令读指令如下所示:MOVXA,DPTR;A(DPTR)MOVXA,Ri;A(Ri)写指令如下所示:MOVXDPTR,A;(DPTR)(A)MOVXRi,A;(Ri)(A)(3)访问程序存储器的传送指令(查表指令)MOVCA,A+PC;PC(PC)+1,A(A)+(PC)MOVCA,A+DPTR;A(A)+(DPTR)3.6.38051单片机指令系统(4)数据交换指令XCHA,Rn;(A)(Rn)XCHA,direct;(A)(direct)XCHA,Ri;(A)(Ri)XCHDA,Ri;(A)30(Ri)(5)堆栈操作指令进栈指令如下所示:PUSHdirect;SP(SP)+1;(SP)(direct);出栈指令如下所示:POPdirect;direct(SP);SP(SP)1;3.6.38051单片机指令系统2、算术运算类指令注意大部分指令的执行结果将影响程序状态字PSW的有关标志位。(1)加法指令ADDA,Rn;A(A)+(Rn)ADDA,direct;A(A)+(direct)ADDA,Ri;A(A)+((Ri))ADDA,#data;A(A)+dataADDCA,Rn;A(A)+(Rn)+(CY)ADDCA,direct;A(A)+(direct)+(CY)ADDCA,Ri;A(A)+((Ri))+(CY)ADDCA,#data;A(A)+data+(CY)3.6.38051单片机指令系统(2)加1指令INCA;A(A)+1INCRn;Rn(Rn)+1INCdirect;direct(direct)+1INCRi;(Ri)(Ri)+1INCDPTR;DPTR(DPTR)+1(3)带借位减法指令减法指令SUBBA,Rn;A(A)(Rn)(CY)SUBBA,direct;A(A)(direct)(CY)SUBBA,Ri;A(A)(Ri)(CY)SUBBA,#data;A(A)data(CY)3.6.38051单片机指令系统(4)减1指令DECA;A(A)-1DECRn;Rn(Rn)-1DECdirect;direct(direct)-1DECRi;(Ri)(Ri)-1(5)十进制调整指令DAA(6)乘法指令MULAB;BA(A)(B)(7)除法指令DIVAB;A商,B余(A)(B)3.6.38051单片机指令系统3、逻辑运算类指令在8051指令系统中,逻辑运算类指令有25条,可实现与、或、异或等逻辑运算操作。这类指令有可能会影响CY和P标志位的状态。(1)累加器A的逻辑操作指令CLRA;A00HCPLA;A()RLARLCARRARRCASWAPA3.6.38051单片机指令系统(2)逻辑与指令ANLA,Rn;A(A)(Rn)ANLA,direct;A(A)(direct)ANLA,Ri;A(A)(Ri)ANLA,#data;A(A)#dataANLdirect,A;direct(direct)(A)ANLdirect,#data;direct(direct)#data(3)逻辑或指令ORLA,Rn;A(A)(Rn)ORLA,direct;A(A)(direct)ORLA,Ri;A(A)(Ri)ORLA,#data;A(A)#dataORLdirect,A;direct(direct)(A)ORLdirect,#data;direct(direct)#data3.6.38051单片机指令系统(4)逻辑异或指令XRLA,Rn;A(A)(Rn)XRLA,direct;A(A)(direct)XRLA,Ri;A(A)(Ri)XRLA,#data;A(A)#dataXRLdirect,A;direct(direct)(A)XRLdirect,#data;direct(direct)#data3.6.38051单片机指令系统4、控制转移类指令转移指令的功能是通过修改程序计数器PC的值,使程序执行的顺序发生变化,从而改变程序执行的方向。(1)无条件转移指令LJMPaddr16;PCaddr16AJMPaddr11;PC(PC)+2PC100addr11JMPA+DPTR;PC(A)+(DPTR)SJMPrel;PC(PC)+2+rel3.6.38051单片机指令系统(2)条件转移指令累加器A的判零转移指令JZrel;若(A)=0则PC(PC)+2+rel,若(A)0则PC(PC)+2JNZrel;若(A)0则PC(PC)+2+rel,若(A)=0则PC(PC)+2循环转移指令DJNZRn,rel;若(Rn)10,则PC(PC)+2+rel,若(Rn)1=0,则PC(PC)+2DJNZdirect,rel;若(direct)10,则PC(PC)+3+rel,若(direct)1=0,则PC(PC)+33.6.38051单片机指令系统(2)条件转移指令比较转移指令CJNEA,#data,rel;若(A)data,则PC(PC)+3+rel,若(A)=data,则PC(PC)+3CJNEA,direct,rel;若(A)(direct),则PC(PC)+3+rel,若(A)=(direct),则PC(PC)+3CJNERn,#data,rel;若(Rn)data,则PC(PC)+3+rel,若(Rn)=data,则PC(PC)+3CJNERi,#data,rel;若(Ri)data,则PC(PC)+3+rel,若(Ri)=data,则PC(PC)+33.6.38051单片机指令系统(3)子程序调用和返回指令长调用指令:LCALLaddr16ddr16:子程序入口地址绝对调用指令:ACALLaddr11addr11:子程序入口地址的低11位(高5位由PC定)子程序返回指令:RET中断返回指令RETI(4)空操作指令NOP;PC(PC)+13.6.38051单片机指令系统5、位操作指令在8051存储器中有两个可位寻址的区域,可利用位操作指令对这些位进行单独的操作。存储器中的两个位寻址区的分布是:l片内RAM的20H2FH区域;l特殊功能寄存器中地址可被8整除的单元。位操作指令中,bit是位变量的位地址,可使用四种不同的表示方法,下面以CY位为例进行说明。l位地址(如:D7H)l位定义名(如:CY)l寄存器名.位(如:PSW.7)l注意:累加器必须表示成:ACC.0ACC.7。l字节地址.位(如:D0H.7)标志位CY在位操作指令中称作位累加器,用符号C表示。3.6.38051单片机指令系统(1)位传送指令MOVC,bit;CY(bit)MOVbit,C;bit(CY)(2)置位和清零指令CLRC;CY0CLRbit;bit0SETBC;CY1SETBbit;bit1(3)位逻辑运算指令ANLC,bit;CY(CY)(bit)ANLC,/bit;CY(CY)()ORLC,bit;CY(CY)(bit)ORLC,/bit;CY(CY)()CPLC;CY()CPLbit;bit()3.6.38051单片机指令系统(4)位条件转移指令判CY的条件转移指令JCrelJNCrel判位变量的条件转移JBbit,relJNBbit,relJBCbit,rel程序设计语言包括机器语言、汇编语言、高级语言等。(1)机器语言机器语言是用机器码编写程序。能被计算机直接识别和执行。(2)汇编语言汇编语言是用助记符编写程序。汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。汇编有人工汇编和计算机汇编两种方法。反汇编:有时需要根据已有的机器语言程序,将其转化为相应的汇编语言程序,这个过程称为反汇编。(3)高级语言高级语言是一种面向算法和过程并独立于机器的通用程序设计语言。如BASIC、C语言等。在8051系列单片机开发应用中,单片机C语言,C51正得到越来越广泛的应用。3.7 汇编语言程序设计汇编语言程序设计3.7.1汇编语言概述汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。1、MCS51单片机汇编语言语句格式标号:操作符操作数;注释例如:START:MOVA,30H;A(30H)(1)标号标号用来标明语句地址,它代表该语句指令机器码的第一个字节的存储单元地址。标号一般规定由18个英文字母或数字组成,但第一个符号必须是英文字母。(2)注释注释只是对语句或程序段的含义进行解释说明,以方便程序的编写、阅读和交流,简化软件的维护,一般只在关键处加注释。3.7.1汇编语言概述2、伪指令伪指令只用于汇编语言源程序中,对汇编过程起控制和指导的作用,不生成机器码。汇编结束,自动消失。8051单片机主要有8条伪指令。(1)定义起始地址伪指令ORGORG16位地址或标号功能:定义以下程序段的起始地址。(2)汇编语言结束伪指令ENDEND伪指令放在源程序的末尾,用来指示源程序到此全部结束。(3)赋值伪指令EQUEQU用于给它左边的“字符名称”赋值,其格式为:字符EQU操作数操作数可以是8位或16位二进制数,也可以是事先定义的标号或表达式。3.7.1汇编语言概述(4)数据地址赋值伪指令DATA其格式为:字符名称DATA表达式DATA伪指令功能和EQU相类似,它把右边“表达式”的值赋给左边的”字符名称”。(5)定义字节伪指令DB其格式为:标号:DB项或项表项或项表:可以是一个8位二进制数或一串8位二进制数(用逗号分开)。标号:表格的起始地址(表头地址)。指令的功能是把“项或项表”的数据依次定义到程序存储器的单元中,形成一张数据表(只是一张定义表,数据并未真正存入这些单元)。3.7.1汇编语言概述(6)定义字伪指令DW其格式为标号:DW项或项表DW伪指令的功能和DB伪指令相似,其区别在于DB定义的是一个字节,而DW定义的是一个字(即两个字节),因此DW伪指令主要用来定义16位地址(高8位在前,低8位在后)。(7)定义存储空间伪指令DS其格式为:标号:DS表达式DS伪指令指示汇编程序从它的标号地址开始预留一定数量的存储单元作为备用,预留数量由DS语句中“表达式”的值决定。(8)位地址赋值伪指令BIT其格式为:字符名称BIT位地址将位地址赋值给指定的字符。3.7.1汇编语言概述3、汇编语言程序设计步骤和基本程序结构流线程序执行顺序流向线表示处理功能端点符号程序的开始和结束符号表示判断功能判断符号处理符号连接符号用来实现流程图之间的连接图3-16 流程图符号3.7.1汇编语言概述3、汇编语言程序设计步骤和基本程序结构(a)顺序结构 (b)分支结构 (c)循环结构图3-17 三种基本程序结构流程图3.7.2顺序结构程序设计【例3-1】编写运算程序。设数a存放在R1中,数b存放在R2中,计算y=a2-b,并将结果放入R4和R5中。ORG0000HMOVA,R1MOVB,AMULABCLRCSUBBA,R2MOVR4,AMOVA,BSUBBA,#00HMOVR5,ASJMP$END3.7.2顺序结构程序设计【例3-2】编写查表程序。将十六进制数转换为ASCII码。设1位十六进制数存在R0寄存器的低4位,转换后的ASCII码仍送回R0中。ORG0000HMOVDPTR,#ASCTABMOVA,R0ANLA,#0FHMOVCA,ADPTR;A中为表格中数据的序号,DPTR中放表头地址MOVR0,ASJMPASCTAB:DB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39HDB41H,42H,43H,44H,45H,46HEND3.7.3分支结构程序设计1、单分支程序【例3-3】在片内RAM30H单元中存有一个带符号数,试判断该数的正负性,若为正数,将6EH位清0;若为负数,将6EH位置1。SUB1:MOVA,30H;30H单元中的数送AJBACC.7,LOOP;符号位等于1,是负数,转移CLR6EH;符号位等于0,是正数,清标志位RET;返回LOOP:SETB6EH;标志位置1RET;返回3.7.3分支结构程序设计2、多分支程序【例3-4】比较片内RAM的50H和51H单元中两个8位无符号数的大小,把大数存入60H单元,若两数相等则把标志位70H置1。SUB:MOVA,50HCJNEA,51H,LOOPSETB70HRETLOOP:JCLOOP1MOV60H,ARETLOOP1:MOV60H,51HRET3.7.4循环结构程序设计循环程序设计不仅可以大大缩短所编程序的长度,使程序所占内存单元数最少,也能使程序结构紧凑和可读性变好。循环程序的基本结构如图3-18所示。图3-18 循环程序的结构3.7.4循环结构程序设计【例3-5】求一组单字节无符号数中最大值。设内部RAM20H单元为数据块的起始地址,块长度为10,试编程求数据块中的最大值并存入30H单元中。图3-19 找最大值程序流程图单片机除了能够输出事先规定好的信号形式之外,还可以实现按键控制式的信号输出,这使得单片机的应用更加广泛,这时,我们可以把单片机看成是一个具有输入/输出通道的控制系统,在这里,键盘是信号输入,LED灯是信号输出,按下不同的按钮就会产生不同的信号输出。3.8 实践训练实践训练输入输出信号控制输入输出信号控制图3-20 硬件连接图3.8 实践训练实践训练输入输出信号控制输入输出信号控制图3-21 软件流程1.概念题1)8051系列单片机片内总体结构的9个部件分别是什么?起什么作用?2)指出下列指令中划线的操作数的寻址方式。(1)MOVR0,#30H(2)MOVA,30H(3)MOVA,R0(4)MOVR0,A(5)MOVCA,A+DPTR(6)CJNEA,#00H,30H(7)MOVC,30H(8)MULAB2.操作题1)用汇编语言编程将片内30H39H单元中内容送到以3000H为首的存储区中。2)用汇编编程延时1min子程序(fosc6MHz)思考与练习思考与练习