第3章-单片机C51语言基础与开发平台.ppt
《第3章-单片机C51语言基础与开发平台.ppt》由会员分享,可在线阅读,更多相关《第3章-单片机C51语言基础与开发平台.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 单片机单片机C51C51语言基础与开发平台语言基础与开发平台 3.1 3.1 单片机单片机C51C51语言基础语言基础 3.2 Keil 3.2 Keil Vision5Vision5集成开发环境集成开发环境 3.3 STC89C52RC3.3 STC89C52RC系列单片机的系列单片机的ISPISP编程编程 所谓所谓寻址方式寻址方式,就是,就是CPUCPU执行一条指令时如何找执行一条指令时如何找到该指令操作数的方式。操作数总是存放在某一存储到该指令操作数的方式。操作数总是存放在某一存储单元中,寻找操作数最重要的就是找操作数所在的单单元中,寻找操作数最重要的就是找操作数所在的单
2、元地址,所以称之为寻址方式。元地址,所以称之为寻址方式。指令通常由操作码和操作数组成,操作数部分给指令通常由操作码和操作数组成,操作数部分给出的只是操作数的寻址方式。所以寻址方式是指令组出的只是操作数的寻址方式。所以寻址方式是指令组成的重要内容,理解寻址方式对于指令系统的学习及成的重要内容,理解寻址方式对于指令系统的学习及程序编制非常重要。程序编制非常重要。计算机寻址方式的种类是由它的硬件结构决定的,计算机寻址方式的种类是由它的硬件结构决定的,寻址方式越多、越灵活,指令系统将越有效,用户编寻址方式越多、越灵活,指令系统将越有效,用户编程越方便,计算机可处理的功能就越强。程越方便,计算机可处理的
3、功能就越强。补充内容:寻址方式补充内容:寻址方式 立即寻址立即寻址 操作数直接出现在指令中,紧跟在操作码的后面,操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到操作数并执行,故称为立即寻址。汇编可以立即得到操作数并执行,故称为立即寻址。汇编指令中,在一个数的前面冠以指令中,在一个数的前面冠以“#”符号作前缀,就符号作前缀,就表示该数为立即寻址。也称为表示该数为立即寻址。也称为立即数寻址立即数寻址。例如:例如:MOV AMOV A,#30H#30H指令中指令中“30H30H”就是立即数。就是立
4、即数。这一条指令的功能是执行将立即数这一条指令的功能是执行将立即数“30H30H”传送到累传送到累加器加器A A中的操作。该指令操作码的机器代码为中的操作。该指令操作码的机器代码为74H74H,占,占用一个字节存储单元,立即数用一个字节存储单元,立即数30H30H存放在紧跟在其后存放在紧跟在其后的一个字节存储单元,成为指令代码的一部分。整条的一个字节存储单元,成为指令代码的一部分。整条指令的机器码为指令的机器码为74H 30H74H 30H。补充内容:寻址方式补充内容:寻址方式 寄存器寻址寄存器寻址 在指令选定的某寄存器中存放或读取操作数,以在指令选定的某寄存器中存放或读取操作数,以完成指令规
5、定的操作,称为寄存器寻址。完成指令规定的操作,称为寄存器寻址。例如:例如:MOV AMOV A,R0R0指令中源操作数和目的操作数指令中源操作数和目的操作数都是寄存器寻址。该指令的功能是把工作寄存器都是寄存器寻址。该指令的功能是把工作寄存器R0R0中中的内容传送到累加器的内容传送到累加器A A中,如中,如R0R0中的内容为中的内容为20H20H,则执,则执行该指令后行该指令后A A的内容也为的内容也为20H20H。寄存器寻址按所选定的工作寄存器寄存器寻址按所选定的工作寄存器R0R0R7R7进行操进行操作,指令机器码的低作,指令机器码的低3 3位用于指示所用的工作寄存器位用于指示所用的工作寄存器
6、R0R0R7R7。如:。如:MOV AMOV A,Rn(n=0Rn(n=07)7),这,这8 8条指令对应的条指令对应的机器码分别为机器码分别为E8HE8HEFHEFH。补充内容:寻址方式补充内容:寻址方式寄存器间接寻址寄存器间接寻址由某寄存器内容作为操作数地址的寻址方法称为由某寄存器内容作为操作数地址的寻址方法称为寄存器间接寻址。需要强调的是:寄存器中的内容不寄存器间接寻址。需要强调的是:寄存器中的内容不是操作数本身,而是操作数的地址,到该地址中才能是操作数本身,而是操作数的地址,到该地址中才能得到操作数。寄存器在此起得到操作数。寄存器在此起地址指针地址指针的作用。的作用。例如:例如:MOV
7、A,R0指令的源操作数是寄存器指令的源操作数是寄存器间接寻址。该指令的功能是将以工作寄存器间接寻址。该指令的功能是将以工作寄存器R0中的内中的内容为地址的片内容为地址的片内RAM单元的数据传送到累加器单元的数据传送到累加器A中去。中去。例如:若例如:若R0中的内容为中的内容为78H,片内,片内RAM地址为地址为78H的的单元中的内容为单元中的内容为2FH,则执行该指令后,片内,则执行该指令后,片内RAM78H单元的内容单元的内容2FH将被送到累加器将被送到累加器A中。符号中。符号“”可理解为可理解为取地址取地址。补充内容:寻址方式补充内容:寻址方式 寄存器间接寻址寄存器间接寻址 寄存器间接寻址
8、示例如下:寄存器间接寻址示例如下:可用作寄存器间接寻址的寄存器只有可用作寄存器间接寻址的寄存器只有R0R0、R1R1和和DPTRDPTR。用。用R0R0、R1R1作地址指针时,可寻址片内或片外作地址指针时,可寻址片内或片外RAMRAM的的256256个单元,但不能访问个单元,但不能访问SFRSFR;DPTRDPTR作地址指针作地址指针时,可访问片外时,可访问片外RAMRAM的的64KB64KB地址范围。地址范围。补充内容:寻址方式补充内容:寻址方式 直接寻址直接寻址 在指令中直接给出操作数所在存储器地址的寻址在指令中直接给出操作数所在存储器地址的寻址方式称为直接寻址方式。方式称为直接寻址方式。
9、例如:例如:MOV AMOV A,40H40H指令中的源操作数就是直接寻指令中的源操作数就是直接寻址,址,40H40H为操作数的地址。该指令的功能是把片内为操作数的地址。该指令的功能是把片内RAMRAM地址为地址为40H40H单元的内容送到单元的内容送到A A中。该指令的机器码为中。该指令的机器码为E5H 40HE5H 40H,8 8位直接地址在指令操作码中占一个字节。位直接地址在指令操作码中占一个字节。MCS-51MCS-51系列单片机的直接寻址可用于访问片内、系列单片机的直接寻址可用于访问片内、片外数据存储器,也可用于访问程序存储器。片外数据存储器,也可用于访问程序存储器。补充内容:寻址方
10、式补充内容:寻址方式 直接寻址直接寻址 直接寻址可访问片内直接寻址可访问片内RAMRAM的低的低128128个单元,同时也个单元,同时也是访问片内是访问片内RAMRAM高高128128个单元特殊功能寄存器个单元特殊功能寄存器SFRSFR的唯的唯一方法。由于一方法。由于5252子系列的片内子系列的片内RAMRAM有有256256个单元,其高个单元,其高128128个单元与个单元与SFRSFR的地址是重叠的。为了避免混乱,的地址是重叠的。为了避免混乱,5151单片机规定:单片机规定:直接寻址的指令不能访问片内直接寻址的指令不能访问片内RAMRAM的高的高128128个单元个单元(80H(80HFF
11、H)FFH),若要访问这些单元只能用寄,若要访问这些单元只能用寄存器间接寻址指令,而要访问存器间接寻址指令,而要访问SFRSFR只能用直接寻址指只能用直接寻址指令。另外,访问令。另外,访问SFRSFR可在指令中直接使用该寄存器的可在指令中直接使用该寄存器的名字来代替地址,如名字来代替地址,如MOV AMOV A,80H80H,可以写成,可以写成MOV AMOV A,P0P0,因为,因为P0P0口的地址为口的地址为80H80H。补充内容:寻址方式补充内容:寻址方式 直接寻址直接寻址 直接寻址方式在直接寻址方式在访问程序存储器访问程序存储器时的转移、调用时的转移、调用指令中将直接给出程序存储器的地
12、址,执行这些指令指令中将直接给出程序存储器的地址,执行这些指令后,程序计数器后,程序计数器PCPC的内容将更换为指令直接给出的地的内容将更换为指令直接给出的地址,机器将改为访问以所给地址为起始地址的存储区址,机器将改为访问以所给地址为起始地址的存储区间,取指令间,取指令(或取数或取数),并依次执行。,并依次执行。补充内容:寻址方式补充内容:寻址方式 变址寻址变址寻址 由基址寄存器加上变址寄存器的间接寻址方式称由基址寄存器加上变址寄存器的间接寻址方式称为基址变址寻址,简称变址寻址。它是以数据指针寄为基址变址寻址,简称变址寻址。它是以数据指针寄存器存器DPTRDPTR或者或者PCPC作为基址寄存器
13、,累加器作为基址寄存器,累加器A A作为变址作为变址寄存器,两者内容相加后的和作为程序存储器的地址,寄存器,两者内容相加后的和作为程序存储器的地址,再寻址该单元,读取数据。这种寻址方式常用于访问再寻址该单元,读取数据。这种寻址方式常用于访问程序存储器中的常数表。程序存储器中的常数表。例如:例如:MOVCA,A+DPTRMOVCA,A+PC补充内容:寻址方式补充内容:寻址方式 变址寻址变址寻址 变址寻址方式的示例如下:变址寻址方式的示例如下:补充内容:寻址方式补充内容:寻址方式 相对寻址相对寻址 相对寻址是以相对寻址是以当前程序计数器当前程序计数器PCPC值值加上指令中给加上指令中给出的偏移量出
14、的偏移量relrel,构成实际操作数地址的寻址方法。,构成实际操作数地址的寻址方法。它用于访问程序存储器,常出现在相对转移指令中。它用于访问程序存储器,常出现在相对转移指令中。在使用相对寻址时要注意以下两点:在使用相对寻址时要注意以下两点:(1)(1)当前当前PCPC值是指相对转移指令的存储地址加上该值是指相对转移指令的存储地址加上该指令的字节数。例如:指令的字节数。例如:JZ relJZ rel是一条累加器是一条累加器A A为零就为零就转移的双字节指令。若该指令的存储地址为转移的双字节指令。若该指令的存储地址为2050H2050H,则执行该指令时的当前则执行该指令时的当前PCPC值即为值即为
15、2052H2052H。即当前。即当前PCPC值值是对相对转移指令取指结束时的值。是对相对转移指令取指结束时的值。补充内容:寻址方式补充内容:寻址方式 相对寻址相对寻址 (2)(2)偏移量偏移量relrel是有符号的单字节数,以补码形式是有符号的单字节数,以补码形式表示,取值的范围是表示,取值的范围是-128-128127(00H127(00HFFH)FFH),负数表,负数表示从当前地址向前转移,正数表示从当前地址向后转示从当前地址向前转移,正数表示从当前地址向后转移。所以,相对转移指令满足条件后,转移的目的地移。所以,相对转移指令满足条件后,转移的目的地址为:址为:目的地址目的地址 =当前当前
16、PCPC值值 +rel+rel =当前指令存储地址当前指令存储地址 +指令字节数指令字节数 +rel+rel补充内容:寻址方式补充内容:寻址方式 位寻址位寻址 位寻址是在位操作指令中直接给出位操作数的地位寻址是在位操作指令中直接给出位操作数的地址,可以对片内址,可以对片内RAMRAM中的中的128128位和特殊功能寄存器位和特殊功能寄存器SFRSFR中的中的9393位进行寻址。位进行寻址。位寻址可认为是位寻址可认为是位类型数据的直接寻址位类型数据的直接寻址。例如:例如:MOV CMOV C,30H30H补充内容:寻址方式补充内容:寻址方式 数据类型数据类型 该类指令的功能是实现数据在片内该类指
17、令的功能是实现数据在片内RAMRAM单元之间、单元之间、寄存器之间、寄存器与寄存器之间、寄存器与RAMRAM单元之间的传送。所有指单元之间的传送。所有指令具有统一的格式,其格式如下:令具有统一的格式,其格式如下:MOV目的操作数,源操作数目的操作数,源操作数指令功能:将源操作数指令功能:将源操作数(或单元或单元)的内容存入目的操作的内容存入目的操作数地址单元中。数地址单元中。操作码助记符都是操作码助记符都是“MOVMOV”,目的操作数和源操,目的操作数和源操作数不同寻址方式的组合就派生出该类的全部指令。作数不同寻址方式的组合就派生出该类的全部指令。因此,记忆这类指令的关键在于掌握两个操作数的各
18、因此,记忆这类指令的关键在于掌握两个操作数的各种寻址方式的组合关系。种寻址方式的组合关系。3.1 单片机的单片机的C51语言基础语言基础 特殊功能寄存器特殊功能寄存器 为便于记忆,一般传送指令的关系图如下:为便于记忆,一般传送指令的关系图如下:3.1 单片机的单片机的C51语言基础语言基础 存储类型存储类型 datadata区:区:3.1 单片机的单片机的C51语言基础语言基础 存储类型存储类型 bdatabdata区:区:3.1 单片机的单片机的C51语言基础语言基础 存储类型存储类型 idataidata区:区:3.1 单片机的单片机的C51语言基础语言基础 存储类型存储类型 pdatap
19、data区和区和xdataxdata区:区:3.1 单片机的单片机的C51语言基础语言基础 存储类型存储类型 CodeCode区:区:3.1 单片机的单片机的C51语言基础语言基础 存储模式存储模式 3.1 单片机的单片机的C51语言基础语言基础存储模式存储模式说说 明明SMALL默默认认的的存存储储类类型型是是data,参参数数及及局局部部变变量量放放入入可可直直接接寻寻址址片片内内RAM的的用用户户区区中中(最最大大128字字节节)。另另外外所所有有对对象象(包包括括堆堆栈栈),都都必必须须嵌嵌入入片片内内RAM。栈栈长长很很关关键键,因因为为实际栈长依赖于函数嵌套调用层数实际栈长依赖于函
20、数嵌套调用层数COMPACT默认的存储类型是默认的存储类型是pdata,参数及局部变量放入分页的外,参数及局部变量放入分页的外部数据存储区,通过部数据存储区,通过R0或或R1间接访问,栈空间位于间接访问,栈空间位于片内数据存储区中片内数据存储区中LARGE默默认认的的存存储储类类型型是是xdata,参参数数及及局局部部变变量量直直接接放放入入片片外外数数据据存存储储区区,使使用用数数据据指指针针DPTR来来进进行行寻寻址址。用用此此数数据据指指针针进进行行访访问问效效率率较较低低,尤尤其其对对两两个个或或多多个个字字节节的的变变量,这种数据类型的访问机制直接影响代码的长度量,这种数据类型的访问
21、机制直接影响代码的长度 指针指针 通用指针:通用指针:C51提供了一个提供了一个3个字节个字节的通用存储器指针,其第一个字节的通用存储器指针,其第一个字节表明指针所指的存储区空间,另外两个字节用于存储表明指针所指的存储区空间,另外两个字节用于存储16位位地址地址偏移量。对于偏移量。对于data、idata和和pdata区,只需要区,只需要8位位的偏移量。的偏移量。例如:例如:long*state;是一个指向是一个指向long型整数的指针,而型整数的指针,而state本身本身则根据则根据存储模式存储模式存放在不同的存放在不同的RAM区。区。char*xdataptr;是一个指向是一个指向char
22、型型数据的指针,而数据的指针,而ptr本身存放在外部本身存放在外部RAM区。区。3.1 单片机的单片机的C51语言基础语言基础 指针指针 通用指针:通用指针:通用存储器指针格式:通用存储器指针格式:其中,第一字节代表了指针的其中,第一字节代表了指针的存储器类型存储器类型,其编码如下:,其编码如下:3.1 单片机的单片机的C51语言基础语言基础地址地址+0+1+2内容内容存储器类型存储器类型偏移地址高位字节偏移地址高位字节偏移地址低位字节偏移地址低位字节存储器存储器类型类型idataxdatapdatadatacode值值12345 指针指针 通用指针:通用指针:通用指针指向的数据可存放于通用指
23、针指向的数据可存放于任何类型任何类型的存储器中,其产的存储器中,其产生的代码比具体指针代码的执行速度要慢,因为存储区在运行生的代码比具体指针代码的执行速度要慢,因为存储区在运行前是未知的,编译器不能优化存储区访问,必须产生可以访问前是未知的,编译器不能优化存储区访问,必须产生可以访问任何存储区的通用代码。任何存储区的通用代码。如果需要考虑执行速度,则应该尽可能使用如果需要考虑执行速度,则应该尽可能使用具体指针具体指针,而,而不是通用指针。不是通用指针。3.1 单片机的单片机的C51语言基础语言基础 指针指针 具体指针:具体指针:Keil允许使用者规定指针指向的存储段,这种指针称为具允许使用者规
24、定指针指向的存储段,这种指针称为具体指针。例如:体指针。例如:chardata*str;/str指向指向data区的区的char型数据型数据intxdata*ptr;/ptr指向指向xdata区的区的int型数据型数据 使用具体指针的好处是节省了存储空间。编译器不用为存使用具体指针的好处是节省了存储空间。编译器不用为存储器选择和决定正确的存储器操作指令产生代码,这样就使得储器选择和决定正确的存储器操作指令产生代码,这样就使得代码更加简短。但必须保证指针不指向所声明的存储区以外的代码更加简短。但必须保证指针不指向所声明的存储区以外的地方,否则会产生错误。地方,否则会产生错误。3.1 单片机的单片
25、机的C51语言基础语言基础 指针指针 具体指针:具体指针:具体指针与通用指针对照关系如下:具体指针与通用指针对照关系如下:例:例:charxdata*datapdx;指针;指针pdx位于位于data区,指向区,指向xdata区的区的char类型数据。类型数据。3.1 单片机的单片机的C51语言基础语言基础指针类型通用指针xdata指针code指针idata指针data指针pdata指针存储大小3字节2字节2字节1字节1字节1字节 指针指针例例:#includechar*generic_ptr;chardata*xd_ptr;charmystring=Testoutput;main()gener
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 C51 语言 基础 开发 平台
限制150内