您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 第三讲_51单片机存储器及寻址方式
第三讲51单片机存储器及寻址方式本讲要求:掌握51单片机引脚定义掌握51单片机的时序概念、复位电路了解存储器的分类、掌握存储器相关概念掌握51单片机存储器配置结构掌握片内数据存储器的分配一、程序存储器程序存储器的入口地址:0000H:复位后,程序将自动从0000H开始执行中断入口:0003H:外部中断0入口。000BH:定时器0溢出中断入口。0013H:外部中断1入口。001BH:定时器1溢出中断入口。0023H:串行口中断入口。002BH:定时器2溢出中断入口。只有AT89S52/C52有)作用:存储程序和重要的数据29RAM(I/O)(64KB)FFFFH0000H~片内数据存储器片外数据存储器数据存储器片内RAM(128B)7FH00H~片内SFR(128B)FFH80H~二、数据存储器数据存储器有2个地址空间:片内256B(00H~FFH)片外64KB(0000H~FFFFH)片内外独立编址片内RAM分为2个部分:低128字节:通用数据存储器高128字节:特殊功能寄存器SFR用户RAM区位寻址区(位地址00H~7FH)用户RAM区(仅89S52有)第3组工作寄存器区R0~R7第2组工作寄存器区R0~R7第1组工作寄存器区R0~R7第0组工作寄存器区R0~R7FFH80H7FH30H2FH20H1FH18H17H10H0FH08H07H00HFFHF0HE0HD0HCDHCCHCBHCAHC9HC8HB8HB0HA8HA6HA0H99H98H90H8DH8CH8BH8AH89H88H87H85H84H83H82H81H80HBACCPSWTH2*TL2*RCAP2H*RCAP2L*T2MOD*T2CON*IPP3IEWDTRSTP2SBUFSCONP1TH1TH0TL1TL0TMODTCONPCONDP1HDP1LDPHDPLSPP0专用寄存器区SFR低128字节RAM工作寄存器区:00H~1FH位寻址区:20H~2FH用户RAM区:30H~7FH二、数据存储器工作寄存器区地址:00H~1FH,32B;4组:每组为8个8位寄存器R0~R7;由PSW中的RS1,RS0选择当前工作寄存器。RS1RS0与工作寄存器的关系二、数据存储器工作寄存器选择组RS1RS0R0R1R2R3R4R5R6R700000H01H02H03H04H05H06H07H10108H09H0AH0BH0CH0DH0EH0FH21010H11H12H13H14H15H16H17H31118H19H1AH1BH1CH1DH1EH1FH用户RAM区位寻址区(位地址00H~7FH)用户RAM区(仅89S52有)第3组工作寄存器区R0~R7第2组工作寄存器区R0~R7第1组工作寄存器区R0~R7第0组工作寄存器区R0~R7FFH80H7FH30H2FH20H1FH18H17H10H0FH08H07H00HFFHF0HE0HD0HCDHCCHCBHCAHC9HC8HB8HB0HA8HA6HA0H99H98H90H8DH8CH8BH8AH89H88H87H85H84H83H82H81H80HBACCPSWTH2*TL2*RCAP2H*RCAP2L*T2MOD*T2CON*IPP3IEWDTRSTP2SBUFSCONP1TH1TH0TL1TL0TMODTCONPCONDP1HDP1LDPHDPLSPP0专用寄存器区SFR位寻址区位寻址:寻找某一位字节地址空间:20H~2FH,16B位地址空间:00H~7FH,128b二、数据存储器位寻址区位地址编址用户RAM区位寻址区(位地址00H~7FH)用户RAM区(仅89S52有)第3组工作寄存器区R0~R7第2组工作寄存器区R0~R7第1组工作寄存器区R0~R7第0组工作寄存器区R0~R7FFH80H7FH30H2FH20H1FH18H17H10H0FH08H07H00HFFHF0HE0HD0HCDHCCHCBHCAHC9HC8HB8HB0HA8HA6HA0H99H98H90H8DH8CH8BH8AH89H88H87H85H84H83H82H81H80HBACCPSWTH2*TL2*RCAP2H*RCAP2L*T2MOD*T2CON*IPP3IEWDTRSTP2SBUFSCONP1TH1TH0TL1TL0TMODTCONPCONDP1HDP1LDPHDPLSPP0专用寄存器区SFR用户RAM区:字节地址空间:30H~7FH,80B二、数据存储器用户RAM区二、数据存储器用户RAM区位寻址区(位地址00H~7FH)用户RAM区(仅89S52有)第3组工作寄存器区R0~R7第2组工作寄存器区R0~R7第1组工作寄存器区R0~R7第0组工作寄存器区R0~R7FFH80H7FH30H2FH20H1FH18H17H10H0FH08H07H00HFFHF0HE0HD0HCDHCCHCBHCAHC9HC8HB8HB0HA8HA6HA0H99H98H90H8DH8CH8BH8AH89H88H87H85H84H83H82H81H80HBACCPSWTH2*TL2*RCAP2H*RCAP2L*T2MOD*T2CON*IPP3IEWDTRSTP2SBUFSCONP1TH1TH0TL1TL0TMODTCONPCONDP1HDP1LDPHDPLSPP0专用寄存器区SFRSFR区特殊功能寄存器区:简写为SFR(SpecialFunctionRegister)功能:管理各功能器件,如定时器、串行口、中断系统、外围芯片等;用户通过对SFR编程可方便地管理所有功能部件。字节地址空间:80H~FFH,80B,离散分布,AT89S51有21个,S52有27个*表示可以位寻址的寄存器(其地址可被8整除)离散分布标识符名称地址*ACC累加器E0H*BB寄存器F0H*PSW程序状态字D0HSP堆栈指针81HDPH数据指针寄存器(DPTR)82HDPL83H*P0口080H*P1口190H*P2口2A0H*P3口3B0H*IP中断优先级寄存器B8H*IE中断控制寄存器A8HTMOD定时器方式寄存器89H标识符名称地址*TCON定时器控制寄存器88HTH0计数器0高位8CHTL0计数器0低位8AHTH1计数器1高位8DHTL1计数器1低位8BH*SCON串行口控制98HSBUF串行数据缓冲器99HPCON电源控制97H高128字节特殊功能寄存器(SFR)部分专用寄存器介绍2)ACC:累加器3)DPTR:地址寄存器1)程序状态字寄存器PSWCACF0RS1RS0OVF1PC:为进位标志,AC:半进位标志,F0、F1为用户标志,RS1和RS0为当前工作寄存器组的选择位,OV是溢出标志位,P是奇偶标志位。堆栈和堆栈指针示意图4)SP堆栈指针堆栈:是个特殊的存储区,主要功能是暂时存放数据和地址,通常用于保护断点和现场;堆栈指针SP:用来存放栈顶的地址;部分专用寄存器介绍1、指令分类共111条指令按功能可分为五大类:数据传送类指令(28条);算术运算类指令(24条);逻辑运算类指令(25条);控制转移类指令(17条);布尔操作(位)类指令(17条)。三、51单片机指令编码按字长分类可分为三类:单字节指令(49条)双字节指令(45条)三字节(17条)2、指令格式51单片机指令格式:操作码(操作数1),(操作数2)操作码:规定指令所完成的操作操作数:操作的对象Rn当前寄存器组的8个通用寄存器R0~R7,所以n=0~7Ri可用作间接寻址的寄存器,只能是R0、R1两个寄存器,所以i=0,1。direct内部的8位地址,既可以指片内RAM的低128个单元地址,也可以指特殊功能寄存器的地址或符号名称,因此direct表示直接寻址方式。data8位立即数。#data1616位立即数。addr1616位目的地址,只限于在LCALL和LJMP指令中使用。addr1111位目的地址,只限于在ACALL和AJMP指令中使用。rel相对转移指令中的偏移量,为8位带符号数。DPTR地址寄存器,16位。bit片内RAM(包括特殊功能寄存器)中的直接寻址位。3、指令系统中使用的符号执行任何一条指令都需要使用操作数。寻址方式就是在指令中用于说明操作数所在地址的方法。寻址方式越多,计算机的功能就越强,灵活性越大,指令系统也就愈加复杂。因此在设定寻址方式时,应考虑到需要和可能。80C51系列单片机指令系统中共有以下7种寻址方式。二、寻址方式和寻址空间立即寻址是指在指令中直接给出操作数。出现在指令中的操作数称为立即数,将这种寻址方式称为立即寻址,在立即数前面加前缀“#”。例如:指令MOVA,#3AH其中3AH就是立即数,功能是把8位立即数3AH送入累加器。1、立即寻址此外,在51系列指令系统中还有一条16位立即数指令:MOVDPTR,#data16其功能是把16位立即数送入数据指针寄存器。例如:MOVDPTR,#1556H,执行结果如图所示。1、立即寻址直接寻址是指在指令中直接给出操作数单元的地址。例如:指令MOVA,3AH,其功能是把片内RAM中3AH单元内的数据传送给累加器A。2、直接寻址直接寻址方式只能给出8位地址,因此,这种寻址方式的寻址范围只限于片内RAM,具体地说:(1)低128单元,在指令中直接以单元地址形式给出。(2)特殊功能寄存器,这时除可以单元地址形式给出外,还可以寄存器符号形式给出。虽然特殊功能寄存器可以使用符号标志,但在指令代码中还是按地址进行编码的。应当说明的是,直接寻址是访问特殊功能寄存器的惟一方法。2、直接寻址寄存器寻址是指在指令中将指定寄存器的内容作为操作数。因此指定了寄存器就能得到了操作数。寄存器寻址方式中,用符号名称来表示寄存器。例如:指令INCR0,其功能是把寄存器R0的内容加1,再送回R0中。3、寄存器寻址寄存器寻址方式的寻址范围包括:(1)四个寄存器组共32个通用寄存器。但在指令中只能使用当前寄存器组。因此在使用前要通过指定PSW中的RS1、RS0,以选择使用的当前寄存器组。(2)部分特殊功能寄存器。例如累加器A、B寄存器以及数据指针DPTR。3、寄存器寻址寄存器间接寻址是指在指令中要到寄存器的内容所指的地址去取操作数。这就是说,指令的操作数是通过寄存器间接得到的,因此,称为寄存器间接寻址。寄存器间接寻址也需以寄存器符号名称的形式表示。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“@”。例:ANLA,@R1假定R1寄存器的内容是60H,则其功能是以R1寄存器的内容60H为地址,将60H地址单元的内容与累加器A中的数相“与”,其结果仍存放在A中。4、寄存器间接寻址寄存器间接寻址的寻址范围:(1)片内RAM低128单元:这里只能使用R0或R1为间址寄存器,其通用形式写为@Ri(i=0,1)。(2)片外RAM64KB:使用DPTR作为间址寄存器,其形式为@DPTR,例如:MOVXA,@DPTR,其功能是把DPTR指定的片外RAM单元的内容送累加器A。(3)片外RAM低256单元:除可使用DPTR作为间址寄存器外,也可使用R0或R1作间址寄存器。例如:MOVXA,@R0,即把R0指定的片外RAM单元的内容送累加器A。(4)堆栈区:堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针(SP)作间址寄存器的间接寻址方式。4、寄存器间接寻址相对寻址方式是为实现程序的相对转移而设立的,为相对转移指令所采用。目的地址=转移指令所在地址+转移指令字节数+rel其中,转移指令所在地址+转移指令字节数称为PC当前值。偏移量rel是一个带符号的8位二进制补码数,所能表示的数的范围是-128~+127。因此相对转移指令以PC当前值为基点,向前最大可转移127个单元地址,向后最大可转移128个单元地址。5、相对寻址例如:指令JC80H表示若进位位C为0,则程序计数器PC中的内容不变,即不转移;若进位位C为1,则以程序计数器PC中当前值为基地址,加上偏移量80H后所得结果作为该转移
本文标题:第三讲_51单片机存储器及寻址方式
链接地址:https://www.777doc.com/doc-3393006 .html