




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 PIC汇编语言程序设计基础,MPASM汇编器简介 汇编语言的语句格式 常用伪指令 程序格式和程序流程图 RAM数据存储器的体选寻址问题 顺序程序结构 分支程序结构 循环程序结构 子程序结构 程序跨页跳转和跨页调用问题 延时程序设计 查表程序设计,第四章 PIC汇编语言程序设计基础,简介,人 汇编语言 机器语言 单片机 源程序 汇编器 目标程序,第四章 PIC汇编语言程序设计基础,简介 机器语言:用二进制代码表示的能为计算机直接识别和执行的指令的集合。 汇编语言:采用便于人们记忆的符号或者字符串来表示操作码、操作数和地址码的符号语言。 源程序:用汇编语言编写的程序。 目标程序:由源程序翻译成的机器语言程序。,第四章 PIC汇编语言程序设计基础,MPASM汇编器简介,第四章 PIC汇编语言程序设计基础,MPASM汇编器简介 MPASM汇编器是美国Microchip公司为其单片机应用者、开发者提供的一套语言工具软件。 功能:将汇编语言源程序翻译成机器语言目标程序代码。 检察源程序中的语法错误或格式错误。,第四章 PIC汇编语言程序设计基础,汇编语言的语句格式,第四章 PIC汇编语言程序设计基础,汇编语言的语句格式,第四章 PIC汇编语言程序设计基础,汇编语言的语句格式 对于PIC系列单片机,在编写源程序时必须依照所用汇编器的一些约定进行书写。例如使用Microchip公司提供的MPASM汇编器,汇编语言语句的一般格式由以下4个字段组成: 标号 操作码(指令助记符) 操作数 ;注释 (label) (opcode) (operand) (comment) 这些字段不都是必需的,但其顺序是不能颠倒的; 标号必须从最左边第一列开始书写,其后至少用一个空格与操作码隔离; 在没有标号的语句中,指令操作码前面必须保留一个或一个以上的空格;,第四章 PIC汇编语言程序设计基础,汇编语言的语句格式 标号 操作码(指令助记符) 操作数 ;注释 (label) (opcode) (operand) (comment) 操作码与操作数之间也必须保留一个或一个以上的空格; 操作码后面如果跟随2个操作数的话,操作数之间必须用逗号(半角)隔开; 在必要时可以加注释,注释可以跟在操作码、操作数或标号之后,并用分号引导,甚至可以单独占用一行且可以从任何一列开始。 汇编语言源程序既可以用大写字母书写,也可以用小写字母书写,还可以大写小写混用,以便于阅读。一个语句行最多允许有225个(半角)字符。,汇编语言的语句格式 标号 用在指令助记符之前的标号就是该指令的符号地址,在程序汇编时,它被赋以该指令在程序存储器中所存放的具体地址。 并不是每一条语句都需要加标号,只有那些欲被其他语句引用的语句之前才需要加标号。 标号最多可以由32个字母、数字和其他一些字符组成,且第一个字符必须是字母或下划线“ ”, 标号不能用指令助记符、寄存器名称或其他在系统中已有固定用途的字符串(这些又称为系统保留字); 一个标号在程序中只能定义一次。 标号必须从一行的第一列开始写,后面用空格、制表符或换行符与操作码隔开;可以单独作为一行。,汇编语言的语句格式 操作码 这个字段不能是空的,操作码就是指令助记符,它是指令功能名称的英文缩写,表示指令的操作类型和操作性质,是汇编语言语句中的关键词,因此不可缺省。 指令操作码的助记符在汇编过程中,汇编器把它与一个事先建立的操作码索引表进行逐一比较,找出相应的机器码,并且取而代之,所以这一汇编过程又叫做代真。 在其前面没有标号时,操作码前面至少保留一个空格,即不能顶格书写,以便与标号区别,否则,会被汇编器误认为是标号。,汇编语言的语句格式 操作数 该部分是操作对象,也就是数据或地址,可以用数值形式或标号形式表示。 数值可以是二进制、八进制、十进制、十六进制数值或者 ASCll字符值; 标号可以是在此之前经过定义或者赋值的代表数据或地址的标号或字符串。 如果操作数有2个,中间应该用逗号分开。 MPASM的默认进制不是十进制,而是十六进制,这一点与许多其他单片机的汇编器不同,需要格外注意。 操作数还可以是事先经过定义的符号以及表达式,若想进一步了解,请参考附录C。,第四章 PIC汇编语言程序设计基础,汇编语言的语句格式 十六进制数由数字09和字母AF组成。当在源程序中采用后缀“H”表示一个以AF打头的十六进制数时,则必须在它的前面增添一个“0”作为引导,以便于汇编器将其与标号或符号名相区别。 用字符代表的常数就是该字符对应的ASCll码(即美国标准信息交换码,长度为7位,许多计算机原理书或高级语言程序设计书中都能找到 ASCll表,也可以参考附录I)。,第四章 PIC汇编语言程序设计基础,汇编语言的语句格式 注释 注释部分可有可无,但是最好养成附带注释的习惯。用来对程序作一些注解和说明,便于人们阅读、交流、修改和调试程序。 注释不是程序的功能部分,通常用分号(半角)引导或与指令部分隔开,也可以单独书写为以分号(半角)开头的独立行,汇编器对该部分不作任何处理。 加注释时,一般应该说明指令的作用和执行的条件,尤其要说明程序在做什么;在用到子程序时,要说明子程序的入口条件和出口条件以及该程序完成的功能。,第四章 PIC汇编语言程序设计基础,常用伪指令,第四章 PIC汇编语言程序设计基础,常用伪指令 汇编器能“听得懂”的语言伪指令。要让单片机为我们服务,我们必须先学会它的语言指令系统一样。 用来编写汇编语言源程序的语句,主要是指令助记符(亦称指令性语句),其次就是伪指令(也叫指示性语句)。所谓伪指令就是“假” 指令的意思,不是单片机的指令系统中的真实指令。,第四章 PIC汇编语言程序设计基础,常用伪指令 一般格式也由4个字段组成: 符号名 伪指令助记符 操作数 ;注释 符号名通常是代表专用寄存器名、通用寄存器变量、常数名、标志位或控制位名、复位矢量或中断矢量的一个字符串。符号名应从一行的第一列开始书写,其后至少保留一个空格与伪指令隔离,但是,不能像标号那样单独作为一行书写。 与指令系统中的助记符不同,没有机器码与伪指令对应,当源程序被汇编成目标程序时,目标程序中并不出现这些伪指令的代码,它们仅在汇编过程中起作用。,第四章 PIC汇编语言程序设计基础,常用伪指令 伪指令是程序设计人员向汇编器发出的控制命令,告诉汇编器如何完成汇编过程和一些规定的操作,以及控制汇编器的输入、输出和数据定位等。 对于Microchip公司为开发PIC单片机提供的MPASM汇编器,可以使用的伪指令多达数十条,不过,初学者掌握以下几条最常用的伪指令即可满足一般编程的需要(欲想深入了解更多的伪指令可以参考附录C),第四章 PIC汇编语言程序设计基础,常用伪指令 1)EQU符号名赋值伪指令 格式:符号名 EQU nn 说明:使EQU两端的值相等,即给符号名赋予一个特定值,或者说是给符号名定义一个数值。 其中,nn可以是一个长度不同的二进制数值(1位的目标寄存器指示符d的值、3位的标志位的位地址、7位的寄存器地址、8位的数据常数、13位的复位或中断矢量等)。 一个符号名一旦由EQU赋值,其值就固定下来了,不能再被重新赋值。,第四章 PIC汇编语言程序设计基础,常用伪指令 2)ORG程序起始地址定义指令 格式:ORG nnnn 说明:用于指定该伪指令后面的源程序存放的起始地址,也就是汇编后的机器码目标程序;在单片机的程序存储器中开始存放的首地址。其中nnnn是一个13位长的地址参数。,第四章 PIC汇编语言程序设计基础,常用伪指令 3)END程序结束伪指令 格式:END 说明:该伪指令通知MPASM汇编器结束对源程序的汇编。 在一个源程序中必须要有并且只有一条END指令,放在整个程序的末尾。,第四章 PIC汇编语言程序设计基础,常用伪指令 4) LIST列表选项伪指令 格式:LIST 可选项,可选项, 说明:用于设置汇编参数来控制汇编过程,或对打印输出的列表文件进行格式化。该伪指令的所有参数都必须在一行内书写完成。参数种类共有10余种,在此只介绍最常用的2种,即可满足初学者的基本需要: P=。例如R=DEC(十进制);R=HEX(十六进制)等。,第四章 PIC汇编语言程序设计基础,常用伪指令 5)INCLUDE:调入外部程序文件伪指令 格式:INCLUDE“文件名” 说明:用来告知汇编器,将一个预先编写好的外部程序文件包含进来,作为该源程序的一部分。这样可以减少重复劳动,提高编程效率。 调入的外部文件,通常是定义文件,其中定义了单片机的复位矢量、专用寄存器的地址以及控制位和状态位的位地址等。,第四章 PIC汇编语言程序设计基础,程序格式和程序流程图,第四章 PIC汇编语言程序设计基础,程序格式和程序流程图,第四章 PIC汇编语言程序设计基础,程序格式和程序流程图,第四章 PIC汇编语言程序设计基础,程序格式和程序流程图 通常在编写程序之前,需要画程序流程图。流程图是一种图形语言,它用各种图形符号来说明程序的执行过程。常常采用的图形符号有以下几种: (1)圆角矩形框端点框,表示一个程序的开始或结束; (2)矩形框任务框,表示要处理的任务; (3)菱形框判断框,表示要判断的因素,判断结果将导致程序走入不同的分支(菱形框也有时用两端带尖的条形框代用); (4)指向线带有箭头的线段,表示程序的走向。,第四章 PIC汇编语言程序设计基础,RAM数据存储器的体选寻址问题 PIC单片机面向字节操作和面向位操作的指令,其指令码中均包含一个7位长的数据存储器单元地址F。F最多可以区分128个存储器单元。 PIC16F87X内部的RAM配置了512个单元的地址空间,地址编码长度需要9位,从000H到1FFH(即000000000B1111lllllB)。如果想用7位地址码(从00H到 7FH即 0000000B1111111B)实现对512个单元的寻址,就必须对长度为512的RAM均匀划分为4等份,每一等份称作一个体,按地址从小到大的顺序分别记为体0、体1、体2和体3。,RAM数据存储器的体选寻址问题 区分4个体需要2位地址码(00B11B) 对RAM直接寻址时,2位体选妈来自于状态寄存器STATUS的RPO和RP1位; 对RAM进行间接寻址时,2位体选码来自于状态寄存器STATUS的IRP位和FSR寄存器的最高位,第四章 PIC汇编语言程序设计基础,RAM数据存储器的体选寻址问题,RAM数据存储器的体选寻址问题,有些寄存器单元7位地址码能找到同一个单元。如STATUS 根据“够用即可”的原则,PIC16F87X在000HIFFH的地址空间里,实际并没有配置512个真实的单元。 特殊功能寄存器安排在4个体的上半部分,而通用寄存器占据着4个体的下半部分。 在RAM中寻找某一单元需用2个地址码,这就像在直角坐标系表示的平面上确定一个点一样,需要用到横坐标和纵坐标2个数据。,第四章 PIC汇编语言程序设计基础,顺序程序结构 顺序程序结构是最简单的一种结构,在流程图中表示为任务框一个一个地串行连接。 在计算机执行程序时表现为,从头至尾严格按照次序一条语句一条语句地顺序执行,并且每一条语句均被执行一遍。如图所示。图中的A、B和C分别代表的可以是一条语句,也可以是一段程序。,第四章 PIC汇编语言程序设计基础,顺序程序结构 例 当用LED数码管对某一RAM存储器单元的内容进行显示时,因为一位数码管一般只能显示4位二进制数,所以通常需要将被显示单元内的8位数据拆分成高4位和低4位2个“半字节”。在本例中,假设将RAM中文件寄存器20H单元的数据分解后,依次将低4位和高4位分别放入21H和22H单元,并将这2个单元中空余的高4位补0。,第四章 PIC汇编语言程序设计基础,顺序程序结构 要点:设Z是一位二进制数,同1和O进行逻辑与运算时,结果一个是保持原样而另一个是变成0,基于这一道理采用 ANDLW指令,我们可以将一个 8位数据同常数0FH相与,实现清0高4位和保留低4位的目的。但这一操作只能在工作寄存器W内才能完成。,第四章 PIC汇编语言程序设计基础,分支程序结构 分支程序流程图中都包含1个判断框,该判断框具有1个入口和2个出口B和C , 语句A执行完之后通常产生一个条件码CC,当条件CC判为“是”(记为YES或Y)时进入B分支,当条件CC判为“否”(记为 NO或 N)时进入 C分支。由此可见,只有一个分支中的程序被执行了一遍,而另一分支中的程序没有得到执行。在实际编程时,不仅会用到上述的二分支程序结构,还会用到分支数多于2个的多分支程序结构。不过,多分支结构可以看作由二分支结构嵌套而成,即分支中又包含分支。,第四章 PIC汇编语言程序设计基础,分支程序结构 例4.3 RAM存储器的20H和21H单元存放2个数,找出大者存入22H单元。 要点 两数做减法,判断标志位C的值,第四章 PIC汇编语言程序设计基础,分支程序结构,第四章 PIC汇编语言程序设计基础,分支程序结构 对于程序中的指令运用作几点说明: (1)凡是需要2个数参与的逻辑运算(与、或、异或)和算术运算(加、减),都需要事先将其中一个操作数放入W中。对于在此使用的减法指令更要格外关注,应预先把减数放人W中,或者说,预先放入W中的数,在运算中是当做减数,而寄存器中的数当做了被减数。 (2)一条条件跳转指令往往需要跟随一条无条件跳转指令,才能实现长距离的转移和程序的分支。 (3)PIC单片机的指令系统中没有设置专用的停机指令,可以用一条跳转到自身的无条件跳转指令GOTO来实现。,第四章 PIC汇编语言程序设计基础,循环程序结构 在程序设计过程中,有时要求对某一段程序重复执行多遍,此时若用循环程序结构,有助于缩短程序。在一个循环程序的结构中包含以下4个组成部分: (1)循环变量设置。在循环开始时,往往需要指定或定义一个循环变量(可以是循环次数计数器、地址指针等),并且给它设置一个初始值。 (2)循环体。要求重复执行的程序段,即循环程序的主体部分。 (3)循环变量修改。修改循环变量的值,为下一次的循环准备条件。 (4)循环控制。在循环程序中必须给出循环结束的条件,否则就成为死循环,第四章 PIC汇编语言程序设计基础,循环程序结构,第四章 PIC汇编语言程序设计基础,循环程序结构 例4.4 数据存储器中,从地址30H开始的50个单元都填入00H。 要点 间接寻址寄存器FSR当作地址指针。,第四章 PIC汇编语言程序设计基础,循环程序结构,第四章 PIC汇编语言程序设计基础,子程序结构 编制标准化的程序段,存储于程序存储器的指定区域,在每次需要时就调出使用,这种程序段就称为子程序,调用子程序的程序称为主程序或者调用程序。子程序结构是程序设计标准化和模块化的有效方法。 对PIC系列单片机编程时,在主程序的适当地方放置CALL指令来实现调用(或跳转),在子程序的开头需要设置地址标号(又可兼作于程序的名称和入口地址的标志),末尾需要放置RETURN或RETLW指令,以便于主程序的调用和子程序的返回。在主程序调用子程序时,有时会遇到参数传递和现场保护这两个问题。,第四章 PIC汇编语言程序设计基础,子程序结构 所谓参数传递,就是在调用子程序前,主程序应先把有关参数放到某些约定的存储器单元,进入子程序后,可以从约定的单元取出有关参数加以处理。待处理完之后子程序结束之前,同样也应把处理结果送到约定单元。在返回主程序后,主程序可以从这些约定单元获得所需结果。在主程序和子程序之间传递8位参数,用工作寄存器W是理想的选择。 所谓现场保护,就是主程序在运行过程中使用了一些寄存器来存放临时数据或中间结果,在子程序运行过程中有时也要用到这些寄存器,为了避免对于主程序还有用的临时数据被子程序覆盖掉,就要设法保护这些临时数据。在执行完子程序返回主程序时,还要恢复这些数据,称为现场恢复。,第四章 PIC汇编语言程序设计基础,子程序结构 例4.5 3个数最大者放入40H单元 要点 利用例4.3改造成子程序,子程序结构,子程序结构,第四章 PIC汇编语言程序设计基础,程序跨页跳转和跨页调用问题 PICF87X系列单片机中,片内配置的FLASH程序存储器的容量不同,分别为2K、4K和8K。因此,程序存储器跨页跳转和跨页调用的程序设计方法,也不尽相同。须要视具体情况具体处理。 PIC16F87X的指令系统中,2条引起程序长距离跳转的指令GOTO和CALL,所携带的地址码仅仅有11位,也就只能在2K(即为一个页面)的地址范围内跳转。对于只有2K程序存储器的单片机型号,自然就不存在程序跨页跳转和跨页调用问题。但是对于程序存储器容量超出2K的情况(更严格地讲,是用户程序在存储器中分布的地址范围超出2K的情况),就可能遇到程序跨页跳转和跨页调用问题。,第四章 PIC汇编语言程序设计基础,程序跨页跳转和跨页调用问题 (1)对于 PIC16F87087V872而言,只有2K的程序存储器,不必关心程序跨页跳转和跨页调用问题。 (2)对于 PICF873874,实际配置的程序存储器容量为4K X14,其地址编码长度需要12位,即4K。程序跳转指令的地址码有11位,只能在2K的地址范围内跳转。把4K的程序空间分为2页,每页2K,页面0的地址范围为0000H07FFH,页面1的地址范围为0800HOFFFH。再把PCLATH位(即该寄存器的bit3)作为页面选择位,这样就可以在4K的地址范围内自由跳转了。,第四章 PIC汇编语言程序设计基础,程序跨页跳转和跨页调用问题,第四章 PIC汇编语言程序设计基础,程序跨页跳转和跨页调用问题 (3)对于PIC16F876877而言,有 8K的程序存储器,存在程序跨页跳转和跨页调用问题。先把8K的地址空间分为4页,每页2K,页面0的地址范围为 0000H07FFH;页面1的地址范围为0800HOFFFH;页面2的地址范围为1000H17FFH;页面3的地址范围为180OH1FFFH。再把PCLATH4:3位(即该寄存器的bit4和bit3)作为页面选择位,这样就可以在8K的地址范围内自由跳转了。,第四章 PIC汇编语言程序设计基础,程序跨页跳转和跨页调用问题,第四章 PIC汇编语言程序设计基础,程序跨页跳转和跨页调用问题,第四章 PIC汇编语言程序设计基础,延时程序设计 在编程时经常需要在程序的执行过程中插入一段延时时间,对此有2种方案可供选择: 利用片内的硬件资源可编程定时器, 采用软件手段插入一段延时程序。 如果延时时间较短,可以连续插入几条空操作指令NOP;如果延时时间较长,可以插入一段单一循环或多重循环的循环结构延时程序。,第四章 PIC汇编语言程序设计基础,延时程序设计 在35条指令构成的指令系统中,5条实现无条件跳转的必然引起程序执行顺序发生改变的指令(即 GOTO,CALL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能合约能耗分析-第2篇-洞察及研究
- GB/T 4130.1-2025声学水听器校准第1部分:自由场校准方法
- 2025东航大客户航空物流解决方案合同
- 2025房地产租赁合同-教育地产租赁版
- 2025年度建筑安全生产责任约定合同
- 2025年度餐饮设备买卖合同范本
- 2025年企业财务顾问及内部控制体系建设合同
- 2025版新能源光伏发电系统安装施工合同下载
- 2025年度低首付购房借款合同及房产抵押权登记协议
- 2025年开业筹备项目延误赔偿合同
- 食管癌病人护理查房
- 七年级班主任开学第一课课件
- XXX有限公司报销审核制度
- WS/T 427-2013临床营养风险筛查
- GA/T 1047-2013道路交通信息监测记录设备设置规范
- GJB9001C内审员培训讲学课件
- 五牌一图(完整版)
- 幼儿园绘本故事:《十二生肖》 课件
- 激光跟踪仪使用手册
- 新媒体运营知识考核试题与答案
- 金属材料的主要性能ppt课件(完整版)
评论
0/150
提交评论