文档详情

第3章 51单片机编程语言.ppt

发布:2017-06-03约2.81万字共110页下载文档
文本预览下载声明
第3章 51单片机编程语言 3.1 单片机编程语言概述 3.2 汇编语言 3.3 C51语言 3.1 单片机编程语言概述 51单片机的编程语言可以是汇编语言,也可以是高级语言,如由C语言演变而成的C51语言等。 汇编语言产生的目标代码短,占用的存储空间小,执行速度快,能充分发挥单片机的硬件功能。但对于复杂的应用来讲使用汇编语言编程复杂,程序的可读性和可移植性不强。 高级语言产生的目标代码长,占用的存储空间大,执行速度慢。但这是相对于汇编语言来讲的,其实C语言在大多数情况下的机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,编程效率也大大高于汇编语言。 3.1 单片机编程语言概述 如果应用系统的存储空间比较小,且对实时性的要求很高,则应选用汇编语言。如果系统的存储空间比较大,且对实时性的要求不是很高,则应选用C51语言。如果系统中有部分模块对实时性的要求很高,而其它模块对实时性的要求不是很高,则可以将两种语言结合,程序的主体部分使用C51编程,对实时性要求高的模块用汇编语言编程,然后将汇编语言程序模块嵌入到C51语言程序当中。 无论是高级语言还是汇编语言写的源程序都必须转换成目标程序,单片机才能执行。目前很多公司都将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成了软件包,称为集成开发环境,如Keil uVision、Silicon Laboratories IDE等。 3.2 汇编语言 3.2.1 汇编语言的伪指令 用汇编语言写的源程序必须翻译成机器语言程序,计算机才能执行。这个翻译过程称为汇编。汇编有手工汇编和机器汇编两种方式。 当使用机器汇编时,必须为汇编程序提供一些信息,如哪些是指令,哪些是数据;数据是字节还是字;程序的起始点和结束点在哪里等等。这些控制汇编的指令称为伪指令,伪指令不是控制计算机执行操作的指令,仅仅是在机器汇编时为汇编程序提供必要的信息。因此,汇编时伪指令并不产生供机器直接执行的机器码。 3.2.1 汇编指令(1) 定位伪指令:ORG m m一般为十进制或十六进制数表示的16位地址,用来指定该伪指令后指令或数据的起始存放地址。 允许使用多条定位伪指令,但其值不应和前面生成的机器代码或数据的存放地址重叠。 在实际应用中,一般仅设置中断服务子程序和主程序的起始存放地址,其他程序或常数依次存放即可。 例3.1 ORG 0000H START:SJMP MAIN … ORG 0030H MAIN: MOV SP,#30H … 3.2.1 汇编指令(2) 汇编结束伪指令:END 必须放在源程序末尾。一个源程序只能有一个END。 定义字节伪指令:DB [标号:] DB x1, x2, …, xn 将其右边的数据依次存放到标号为起始地址的存储单元中,xi为字节数据,为二、十、十六进制和ASCII码等多种表示形式。通常用于定义一个常数表。 例3.2 ORG 7F00H TAB: DB ,16H,45,‘8’,‘MCS-51’ 汇编后存贮单元内容为: (7F00H)= 72H、(7F01H)= 16H、(7F02H)= 2DH (7F03H)= 38H、 … 、(7F09H)= 31H 3.2.1 汇编指令(3) 定义字伪指令:DW [标号:] DW Y1,Y2,…,Yn 功能与DB类似,但DW定义的是一个字(2个字节),主要用于定义16位地址表(高8位在前,低8位在后)。 例3.3 ORG 6000H TAB: DW 1254H,32H,161 DW ‘AB’,TAB 汇编后存贮单元内容为: (6000H)= 12H (6001H)= 54H (6002H)= 00H (6003H)= 32H (6004H)= 00H (6005H)= 0A1H (6006H)= 41H (6007H)= 42H (6008H)= 60H (6009H)= 00H 3.2.1 汇编指令(4) 定义预留存储空间伪指令DS [标号:] DS 数值表达式 从指定的地址开始,保留若干字节的内存空间作为备用。汇编后,将根据表达式的值决定从指定地址开始留出多少个字节空间,表达式也可以是一个指定的数值。 例3.4 ORG 0F00H DS 10H DB 20H,40H 汇编后,从0F00H开始,保留16个字节的内存单元,然后从0F10H开始,按照下一条DB伪指令给内存单元赋值,即(0F10H)= 20H,(0F11H)= 40H。 3.2.1 汇编指令(5) 等值伪指令EQU 字符名称 EQU 数据或
显示全部
相似文档