《单片机学习.pptx》由会员分享,可在线阅读,更多相关《单片机学习.pptx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本次课内容1.8051存储器结构2.汇编语言指令3.基本寻址方式8051 存储器结构8051单片机的存储器采用哈佛结构。程序存储器8051片内有4kB的程序存储单元,其地址为0000H0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。其中一组特殊是0000H0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。存储空间分布图 片内外统一寻址的64KB程序存储器空间,地址范围为0000HFFFFH。64KB的片
2、外数据存储器空间,地址范围也为0000HFFFFH。256B的片内数据存储器空间,地址范围为00HFFH。2.2.1 程序存储器ROM程序存储器ROM用来存放程序、常数或表格等。在8051中,其存储空间分布如下:l片内有4KB的ROM存储单元,地址为0000H0FFFH。l片外最多可扩至64KB的ROM,地址为1000HFFFFH。l片内外ROM统一编址。当EA引脚接高电平时,CPU将首先访问片内ROM,当指令地址超过0FFFH时,自动转向片外ROM取指令。当EA引脚接低电平时,CPU只访问片外ROM。片外ROM的地址从0000H开始编址。2.2.1 程序存储器ROM在程序存储器中,以下6个单
3、元具有特殊含义。l0000H:单片机复位后的程序入口地址。l0003H:外部中断0的中断服务程序入口地址。l000BH:定时器0的中断服务程序入口地址。l0013H:外部中断1的中断服务程序入口地址。l001BH:定时器1的中断服务程序入口地址。l0023H:串行口的中断服务程序入口地址。2.2.2 数据存储器RAM 数据存储器RAM主要用来存放运算的中间结果和数据等。在8051中,其存储空间分布如下:l片外RAM最多可扩至64KB存储单元,地址范围为0000HFFFFH。l片内RAM为256B存储单元,地址范围为00HFFH。片内RAM地址空间共有256B,又分为两个部分:l低128B(00
4、H7FH)为真正的RAM区,如下图所示。l高128B(80HFFH)为特殊功能寄存器(SFR)区,如下表所示。片内RAM地址空间 7FH30H2FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H27262524232221202
5、3H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H07060504030201001FH18H第3组工作寄存器(R0R7)17H10H第2组工作寄存器(R0R7)0FH08H第1组工作寄存器(R0R7)07H00H第0组工作寄存器(R0R7)工作寄存器区位寻址区用户RAM区(堆栈、数据缓冲区)SFR中位地址分布表 SFRMSB位地址/位定义LSB字节地址BF7F6F5F4F3F2F1F0F0HACCE7E6E5E4E3E2E1E0E0HPSWD7D6D5D4D3D2D1D0D0HCYACF0RS1RS0OV-PIPBFBEBD
6、BCBBBAB9B8B8H-PSPT1PX1PT0PX0P3B7B6B5B4B3B2B1B0B0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0IEAFAEADACABAAA9A8A8HEA-ESET1EX1ET0EX0P2A7A6A5A4A3A2A1A0A0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0SCON9F9E9D9C9B9A999898HSM0SM1SM2RENTB8RB8TIRIP1979695949392919090HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0TCON8F8E8D8C8B8A898888HTF1TR1T
7、F0TR0IE1IT1IE0IT0P0878685848382818080HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.08051单片机的引脚及功能 MCS-51单片机的封装形式有两种,一种是双列直插式(DIP)封装,另一种是方形封装。8051的40个引脚可分为:l电源引脚2根l时钟引脚2根l控制引脚4根lI/O引脚32根由于8051单片机是高性能的单片机,同时受到引脚数目的限制,所以有部分引脚具有第二功能。8051单片机引脚图 DIP引脚图 逻辑符号 8051引脚的功能描述(一)电源引脚(2根)lVCC(40脚):电源端,接+5V电源。lVSS(20脚):接地端。时钟引脚(
8、2根)lXTAL1(19脚):接外部晶振和微调电容的一端。采用外部时钟电路时,对HMOS型工艺的单片机,此引脚应接地;对CHMOS型而言,此引脚应接外部时钟的输入端。lXTAL2(18脚):接外部晶振和微调电容的另一端。使用外部时钟时,对HMOS型工艺的单片机,此引脚应接外部时钟的输入端;对CHMOS型而言,此引脚悬空。8051引脚的功能描述(二)控制引脚(4根)l RST/VPD(9脚):复位信号/备用电源输入引脚。当RST引脚保持两个机器周期的高电平后,就可以使8051完成复位操作。该引脚的第二功能是VPD,即备用电源的输入端,具有掉电保护功能。若在该引脚接+5V备用电源,在使用中若主电源
9、VCC掉电,可保护片内RAM中的信息不丢失。lALE/PROG(30脚):地址锁存允许信号输出/编程脉冲输入引脚。当CPU访问片外存储器时,ALE输出信号控制锁存P0口输出的低8位地址,从而实现P0口数据与低位地址的分时复用。当8051上电正常工作后,自动在ALE端输出频率为fosc/6的脉冲序列(fosc代表振荡器的频率)。该引脚的第二功能PROG是对8751内部4KB EPROM编程写入时,作为编程脉冲的输入端。l EA/VPP(31脚):外部程序存储器地址允许输入端/编程电压输入端。当EA接高电平时,CPU执行片内ROM指令,但当PC值超过0FFFH时,将自动转去执行片外ROM指令;当E
10、A接低电平时,CPU只执行片外ROM指令。对于8031,由于其无片内ROM,故其EA必须接低电平。该引脚的第二功能VPP是对8751片内EPROM编程写入时,作为21V编程电压的输入端。lPSEN(29脚):片外ROM读选通信号端。在读片外ROM时,PSEN有效,为低电平,以实现对片外ROM的读操作。8051引脚的功能描述(三)I/O引脚(48=32根)lP0.0P0.7(3932脚):P0口的8位双向I/O口线。P0口即可作地址/数据总线使用,又可作通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。lP1.0P
11、1.7(18脚):P1口的8位准双向I/O口线。P1口作为通用的I/O口使用。lP2.0P2.7(2128脚):P2口的8位准双向I/O口线。P2口即可作为通用的I/O口使用,也可作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。lP3.0P3.7(1017脚):P3口的8位准双向I/O口线。P3口除了作为通用的I/O口使用之外,每个引脚还具有第二功能。CPU时序CPU时序就是CPU在执行指令时所需控制信号的时间顺序。单片机的时序定时单位从小到大依次为:时钟周期、状态周期、机器周期和指令周期。MCS-51单片机共有111条指令,按照指令字节数和机器周期数可分为六类,即
12、单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令和三字节双周期指令。典型指令的取指、执行时序 l时钟周期为单片机提供定时信号的振荡源的周期或外部输入时钟信号的周期,也称为振荡周期。l状态周期(或状态S)是振荡周期的两倍,它分为P1节拍和P2节拍。l一条指令的执行过程分作几个基本操作,完成一个基本操作所需的时间称作机器周期。l执行一条指令所需的时间称为指令周期。2.4.2 时钟电路 8051单片机的时钟信号通常由两种方式产生:一是内部振荡方式,二是外部时钟方式。(a)内部方式时钟电路 (b)外部方式时钟电路第2章 MCS-51单片机的指令系统指令系统分类
13、基本概念 指令是CPU根据人的意图来执行某种操作的命令。指令常以其英文名称或者缩写形式作为助记符。一台计算机所能执行的全部指令的集合称为这个CPU的指令系统。采用助记符表示的指令称为汇编语言。使用这种指令编写的程序称为汇编语言程序。指令系统分类(一)按照指令的功能划分,8051指令可分为以下五类:l数据传送类指令(29条)l算术运算类指令(24条)l逻辑运算类指令(24条)l控制转移类指令(17条)l位操作类指令(17条)指令系统分类(二)按照指令占用的存储空间可分为:l单字节指令(49条)l双字节指令(45条)l三字节指令(17条)按照指令的执行时间可分为:l单周期指令(64条)l双周期指令
14、(45条)l四周期指令(2条,乘、除法指令)指令格式 8051汇编语言指令由操作码段和操作数字段两部分组成。汇编语言指令格式 标号:操作码助记符 目的操作数,源操作数;注释 机器语言指令格式 l 双字节指令格式 操作码代码 操作数或者地址 l三字节指令格式 操作码代码 操作数或地址,操作数或地址 寻址方式 基本概念寻址就是寻找指令中操作数或操作数所在地址。寻址方式就是找到存放操作数的地址,并把操作数提取出来的方法,即寻找操作数或者是操作数地址的方法。8051单片机寻址方式共有7种:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。立即寻址 立即寻址就是操作数在指令中
15、直接给出,或者说指令操作码后面立即给出一字节或两字节操作数。指令中给出的操作数是立即数,立即数前加“#”号标志,以区别直接寻址中的直接地址。16位立即数传送指令“MOV DPTR,#datal6”,其中#data16是一个16位立即数。8位立即数传送指令“MOV A,#data8”,其中#data8是一个8位立即数。例如:MOV A,#80HMOV DPTR,#2000H直接寻址 直接寻址方式就是在指令中直接给出操作数所在存储单元的地址。此时,指令中操作数部分是操作数所在地址。直接寻址方式的寻址范围是内部RAM,具体包括:l片内RAM的128个单元在指令中以直接地址给出。l特殊功能寄存器(SF
16、R)既可使用它们的地址,也可使用它们的名字。例如:MOV A,25HMOV P0,#45HMOV 30H,20H寄存器寻址 寄存器寻址就是操作数存放在寄存器中,指令中指定的寄存器的内容就是操作数。在寄存器寻址方式中以符号名称来表示寄存器。寄存器寻址方式的寻址范围包括:l通用工作寄存器有4组共32个通用工作寄存器。l部分专用寄存器累加器A、B寄存器、DPTR寄存器。例如:MOV A,R0MUL ABMOV B,R0PUSH ACCADD A,ACC寄存器间接寻址 寄存器间接寻址是把指定寄存器的内容作为操作数地址,该地址所指定的单元内容作为操作数。为了区分寄存器寻址和寄存器间接寻址,在寄存器间接寻
17、址中,所用到的寄存器的前面要加间接寻址符“”。寄存器R0、R1和数据指针DPTR可以作为间接寻址寄存器。寄存器间接寻址示意图 例如:寄存器R0内容为30H,片内RAM 30H单元的内容为45H。指令“MOV A,R0”的功能是将R0的内容30H传送给累加器A,指令执行结果是累加器A中的内容为30H。指令“MOV A,R0”的功能是将R0的内容30H作为操作数的地址,根据这一地址找到内部RAM 30H单元,将其内容45H传送至累加器A,指令执行结果是累加器A中内容为45H。寄存器寄存器间接寻址间接寻址例如:MOV R0,AMOVX A,R1;需要由P2端口提供外部RAM高8位地址。MOVX DP
18、TR,A变址寻址(基址寄存器+变址寄存器间接寻址)变址寻址是以DPTR或者PC作为基址寄存器,其内容为基地址,以累加器A作为变址寄存器,其内容为变址,并将两个寄存器内容也就是基址和变址相加,形成16位操作数地址。然后在程序存储器中找到该地址所对应的单元,其内容即为操作数。指令符号上,采用MOVC的形式共两条指令:MOVC A,A+DPTR MOVC A,A+PC 变址寻址示意图 例如:指令“MOVC A,A+DPTR”是变址寻址。解:假设DPTR的内容为2030H,累加器A的内容为12H。该指令的功能是将2030H和12H相加,得到2042H作为操作数地址,在程序存储器中找到2042H单元,将
19、其内容送至累加器A。变址变址寻址寻址(基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址)位寻址 位寻址指令中给出的是位地址,即片内RAM某一单元中的一位。位地址在指令中用bit表示。单片机片内RAM有两个区域可以进行位寻址。具体如下:l内部RAM中的位寻址区该区共有16个单元,单元地址是20H2FH,一共有128位,位地址为007FH。l特殊功能寄存器的可操作位有11个单元地址能被8整除的寄存器,它们都可以进行位寻址,实际可寻址位为83个。可寻址位在指令中的表示方式 直接使用位地址。例:PSW寄存器的第5位可表示为D5H。20H单元的第7位可表示为07H。如:SETB 07H 用位名
20、称表示。例:PSW寄存器的第5位可表示为F0。如:CLR F0 单元地址加位号表示。例:PSW寄存器的第5位可表示为D0H.5。20H单元的第7位可表示为20H.7。如:SETB 20H.7 可以用寄存器名称加位号表示。例:PSW寄存器的第5位可表示为PSW.5。如:CLR PSW.5 相对寻址 相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。这里所说的PC的当前值是执行完相对转移指令后的PC值。一般将相对转移指令操作码所在地址称为源地址,转移后的地址称为目的地址。于是有:目的地址=源地址+相对转移指令本身字节数+rel相对寻址只出现在相对转移指令中,以修
21、正PC的方式来控制程序的转移目的。相对转移指令操作示意图 例如:在程序存储器中2000H单元有一条双字节 的 相 对 转 移 指 令“SJMP 75H”。解:程序存储器2000H、2001H单元的内容80H、75H是“SJMP 75H”的机器语言代码。相对寻址相对寻址 寻址空间及符号注释 寻址方式寻址空间直接寻址片内RAM低128字节和特殊功能寄存器(只能采用直接寻址)寄存器寻址工作寄存器R0R7、A、B、DPTR寄存器间接寻址片内RAM低128字节(R0、R1、SP用于PUSH/POP指令时)片外RAM(R0、R1、DPTR)变址寻址程序存储器相对寻址程序存储器(控制转移用)位寻址片内RAM202FH单元的128个可寻址位和特殊功能寄存器中的83个可寻址位