![[工学]第二章 PIC单片机指令系统.ppt_第1页](http://file.renrendoc.com/FileRoot1/2018-12/25/1141f97e-f2e2-4d0a-9f2b-a4049946679a/1141f97e-f2e2-4d0a-9f2b-a4049946679a1.gif)
![[工学]第二章 PIC单片机指令系统.ppt_第2页](http://file.renrendoc.com/FileRoot1/2018-12/25/1141f97e-f2e2-4d0a-9f2b-a4049946679a/1141f97e-f2e2-4d0a-9f2b-a4049946679a2.gif)
![[工学]第二章 PIC单片机指令系统.ppt_第3页](http://file.renrendoc.com/FileRoot1/2018-12/25/1141f97e-f2e2-4d0a-9f2b-a4049946679a/1141f97e-f2e2-4d0a-9f2b-a4049946679a3.gif)
![[工学]第二章 PIC单片机指令系统.ppt_第4页](http://file.renrendoc.com/FileRoot1/2018-12/25/1141f97e-f2e2-4d0a-9f2b-a4049946679a/1141f97e-f2e2-4d0a-9f2b-a4049946679a4.gif)
![[工学]第二章 PIC单片机指令系统.ppt_第5页](http://file.renrendoc.com/FileRoot1/2018-12/25/1141f97e-f2e2-4d0a-9f2b-a4049946679a/1141f97e-f2e2-4d0a-9f2b-a4049946679a5.gif)
已阅读5页,还剩101页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机及应用 Application of Microcontroller,云南大学信息学院,第二章 PIC单片机指令系统和汇编语言程序设计,单片机及应用,第二章 PIC单片机指令系统 和汇编语言程序设计,2.1 指令系统概述 2.2 字节操作指令 2.3 位操作指令 2.4 常数和控制操作类指令 2.5 汇编语言程序设计,2.1 指令系统概述,2.1.1 指令的表示方法 1机器指令的表示方法 指令,用于规定计算机的基本操作。一台计算机所能执行的指令集合就是它的指令系统。 指令共有两种表示方法,分别是机器语言表示方法和汇编语言表示方法。不同种类的单片机有不同的一套命令(即所谓“指令系统”)。,2.1 指令系统概述,2.1.1 指令的表示方法 1机器指令的表示方法,2.1 指令系统概述,2.1.1 指令的表示方法 2汇编语言的表示方法 汇编语言是对机器语言的改进,它采用便于人们记忆的一些符号(例如简化的英文单词)来表示操作码、操作数和地址码等。通常把表示指令的符号称之为助记符。 MOVF 20H,0 ; ANDLW 0FH MOVWF 21H,2.1 指令系统概述,2.1.1 指令的表示方法 3.PIC16F87X单片机指令 PIC16F87X单片机采用精简指令集(RISC)结构,指令效率高,功能强。它的指令为单字的宽字位(14)指令,由此生成的程序代码短。指令条数少,仅有35条。 (1)面向字节操作类 (2)面向位操作类 (3)常数操作和控制类操作。,指令的类型,2.1 指令系统概述,2.1.2 PIC单片机指令的寻址方式 寻址,就是寻找操作数的存放地址。 寻址方式,就是给操作数定位的过程。 1寄存器间接寻址 所谓寄存器间接寻址指的是通过寄存器F0、F4来实现。实际的寄存器地址放在F4的低5位中,通过F0来进行间接寻址。INDF不是物理上实际存在的寄存器,而任何寻址INDF的指令都是以FSR寄存器内容为地址的RAM单元中存放着参加运算或操作的数据。,2.1 指令系统概述,2.1.2 PIC单片机指令的寻址方式 1寄存器间接寻址,2.1 指令系统概述,2.1.2 PIC单片机指令的寻址方式 2立即数寻址 所谓立即寻址就是操作数在指令中直接给出。通常把出现在指令中的操作数称之为立即数(literal),因此就把这种寻址方式称之为立即寻址。,2.1 指令系统概述,2.1.2 PIC单片机指令的寻址方式 2立即数寻址,2.1 指令系统概述,2.1.2 PIC单片机指令的寻址方式 3直接寻址 指令中操作数以其所在存储单元地址的形式给出,就称之为直接寻址。这种方式是对任何一寄存器直接寻址访问。,2.1 指令系统概述,2.1.2 PIC单片机指令的寻址方式 3直接寻址,2.1 指令系统概述,2.1.2 PIC单片机指令的寻址方式 4位寻址 这种寻址方式是对寄存器中的任一位(bit)进行操作。,例21 ADDLW 16H,例22 IORWF 26H, 0,例23 XORWF 0,1,例24 BSF 26H,4,2.1 指令系统概述,2.1.3 指令符号的意义说明 1.PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号 操作码助记符 操作数 ;注释 (Lable) (Opcode) (Operand) (Comment),2.1 指令系统概述,2.1.3 指令符号的意义说明 2.指令符号的意义说明 在PIC系列单片机指令中常把数据存储器RAM当作寄存器来使用(处理)并用字母f(或F)表示。 d 代表操作数的目标选择,定义d=0,结果存入W;d=1结果存入(文件)寄存器f,当使用汇编程序指令d缺省时,默认d=1。b代表(文件)寄存器(8位)的位地址(07取值)。如寄存器的8位为b7、b6b1、b0,若b=1代表寄存器的第b1位。字母符号k代表立即数、常数和数据标号。,2.2 2.4指令集,2.2 2.4指令集,2.2 2.4指令集,2.2 2.4指令集,2.2 2.4指令集,2.2 2.4指令集,2.2 2.4指令集,2.2 字节操作指令,1.寄存器加法指令,2.2 字节操作指令,2.寄存器减法指令,2.2 字节操作指令,3.寄存器加1指令,2.2 字节操作指令,4.寄存器减1指令,2.2 字节操作指令,5.寄存器与指令,2.2 字节操作指令,6.寄存器或指令,2.2 字节操作指令,7.寄存器异或指令,2.2 字节操作指令,8.寄存器取反指令,2.2 字节操作指令,9.寄存器清零指令,2.2 字节操作指令,10. W清零指令,2.2 字节操作指令,11. f寄存器传送指令,2.2 字节操作指令,12.W寄存器传送指令,2.2 字节操作指令,13.寄存器加1,结果为零则跳指令,2.2 字节操作指令,14.寄存器减1,结果为零则跳指令,2.2 字节操作指令,15.带进位左移指令,2.2 字节操作指令,16.带进位右移指令,2.2 字节操作指令,17.寄存器交换指令,2.3 位操作指令,1.位清零指令,2.3 位操作指令,2.位置1指令,2.3 位操作指令,3.位测试,为零则跳指令,2.3 位操作指令,4.位测试,为1则跳指令,2.4 常数和控制操作类指令,1.常数加法指令,2.4 常数和控制操作类指令,2.常数减法指令,2.4 常数和控制操作类指令,3.常数与指令,2.4 常数和控制操作类指令,4.常数或指令,2.4 常数和控制操作类指令,5.常数异或指令,2.4 常数和控制操作类指令,6.看门狗计数器清零指令,2.4 常数和控制操作类指令,7.常数传送指令,2.4 常数和控制操作类指令,8.子程序调用指令,2.4 常数和控制操作类指令,9.无条件跳转指令,2.4 常数和控制操作类指令,10.子程序返回指令,2.4 常数和控制操作类指令,11. 子程序带参数返回指令,2.4 常数和控制操作类指令,12.中断服务子程序返回指令,2.4 常数和控制操作类指令,13.睡眠(进入低功耗状态)指令,2.4 常数和控制操作类指令,14.空操作指令,2.5 汇编语言程序设计,2.5.1 汇编语言程序设计知识 1汇编语言源程序的结构 汇编语言提供了一种不涉及实际存储器地址和机器指令编码的编写源程序的有效方法。 我们需要掌握的是: 汇编语言的程序格式、语句格式、助记符、伪指令。 程序的4种基本结构:顺序、分支、循环和子程序。,2.5 汇编语言程序设计,2.5.1 汇编语言程序设计知识 2PIC 汇编语言的程序流程图 (1)程序流程图常用的图形符号 圆角矩形框为起始/终止框,表示一个程序的开始或结束。 矩形框为任务框,表示要处理的任务。 菱形框为判断框,表示要判断的因素,判断结果将导致程序走入不同的分支。 指向线为带有箭头的线段,表示程序的走向。,2.5 汇编语言程序设计,2.5.1 汇编语言程序设计知识 2PIC 汇编语言的程序流程图 ((2)程序流程图的画法 顺序程序结构 顺序程序结构在流程图中表示为任务框一个一个地串行连接。在计算机执行程序时表现为,从头至尾严格按照次序一条语句一条语句地顺序执行,并且每一条语句均被执行一遍。,2.5 汇编语言程序设计,2.5.1 汇编语言程序设计知识 2PIC 汇编语言的程序流程图 分支程序流程图 分支程序流程图包含 1个判断框和两个或两个以上 的出口。从而形成程序的 2个或多个分支。,2.5 汇编语言程序设计,2.5.1 汇编语言程序设计知识 2PIC 汇编语言的程序流程图 循环程序流程图 循环程序的结构包含以下4个组成部分: 循环初始化部分:为循环程序作准备。如循环变量设置,即指定或定义一个循环变量作循环次数计数器或地址指针,并给它设置一个初始值。,2.5 汇编语言程序设计,2.5.1 汇编语言程序设计知识 2PIC 汇编语言的程序流程图 循环体:要求重复执行的程序段,即循环程序的主体部分。 循环控制部分:循环控制就是根据循环结束条件,判断是否跳出循环。 结束部分:对循环结果进行分析、处理和保存。,2.5 汇编语言程序设计,2.5 汇编语言程序设计,2.5.2 PIC 汇编语言的伪指令 用来编写汇编语言源程序的语句,主要是指令助记符,其次就是伪指令。所谓伪指令就是“假”指令的意思,不是单片机的指令系统中的真实指令。伪指令与指令系统中的助记符的不同之处是没有机器码与它对应。,符号名 伪指令助记符 操作数 ;注释,2.5 汇编语言程序设计,2.5.2 PIC 汇编语言的伪指令 最常用的伪指令介绍 (1)INCLUDE 功能: 读入外部源文件 格式:INCLUDE 说明:用于把指定文件读入源程序中作为源程序代码的一部分。文件名必须用双引号或尖括号给出,如果被指定文件非当前工作目录下,则需要指令完整的路径。,2.5 汇编语言程序设计,2.5.2 PIC 汇编语言的伪指令 最常用的伪指令介绍 (2)EQU 功能:对符号名赋值 格式: EQU 说明:使EQU 两端的8位值相等,即给符号名赋予一个特定值或者说是给符号名定义一个数值。,2.5 汇编语言程序设计,2.5.2 PIC 汇编语言的伪指令 最常用的伪指令介绍 (3)#DEFINE 功能:定义文本替换标号 格式:#DEFINE 说明:用于定义文本替换标号,在汇编时把源代码中的替换成。,2.5 汇编语言程序设计,2.5.2 PIC 汇编语言的伪指令 最常用的伪指令介绍 (4)ORG 功能: 存放程序单元的起始地址 格式:符号名 ORG 说明:用于指定该伪指令后面的源程序存放的起始地址,也就是汇编后的机器码目标程序在单片机的程序存储器中开始存放的首地址。,2.5 汇编语言程序设计,2.5.2 PIC 汇编语言的伪指令 最常用的伪指令介绍 (5)END 功能:程序结束伪指令 格式:END 说明:这条伪指令通知汇编器MPASM结束对源程序(.ASM)的汇编,即使在后面还有语句,也将不予继续汇编。,2.5 汇编语言程序设计,2.5.3 PIC 汇编语言程序设计基础 1.设置I/O 口的输入/输出方向 2.检查寄存器是否为零 3.比较二个寄存器的大小 4.循环n次的程序 5.“IFTHEN”格式的程序,2.5 汇编语言程序设计,1.设置 I/O 口的输入/输出方向 PIC16F877的I/O 口皆为双向可编程,即每一根I/O 端线都可分别单独地由程序设置为输入或输出。这个过程由写I/O控制寄存器TRIS f来实现,写入值为“1”,则为输入;写入值为“0”,则为输出。 MOVLW 0FH ;0000 1111(0FH)输入 输出 MOVWF TRISB ;将W中的0FH写入B口控制器, ;B口高4位为输出,低4位为输入。 MOVLW 0C0H ; 1100 0000(0C0H) MOVWF TRISB RB0RB5输出0 RB6,RB7输 出1,2.5 汇编语言程序设计,2.检查寄存器是否为零 如果要判断一个寄存器内容是否为零,很简单,现以寄存器F10为例: MOVF 10,1 ;F10F10,结果影响零标记 状态位Z BTFSS STATUS,Z ;F10为零则跳 GOTO NZ ;Z=0即F10不为零转入标号NZ 处程序 ;Z=1即F10=0处理程序,2.5 汇编语言程序设计,3.比较二个寄存器的大小 要比较二个寄存器的大小,可以将它们做减法运算,然后根据状态位C来判断。注意,相减的结果放入W,则不会影响二寄存器原有的值。 例如F8和F9二个寄存器要比较大小: MOVF 8,0 ;F8W SUBWF 9,0 ;F9W(F8)W BTFSC STATUS,Z ;判断F8=F9否 GOTO F8=F9 BTFSC STATUS,C ;C=0则跳 GOTO F9F8 ;C=1相减结果为正, F9F8 GOTO F9F8 ;C=0相减结果为负, F9F8 ,2.5 汇编语言程序设计,4.循环n次的程序 如果要使某段程序循环执行n次,可以用一个寄存器作计数器。下例以F10做计数器,使程序循环8次。 COUNT EQU 10 ;定义F10名称为COUNT(计数器) MOVLW 8 MOVWF COUNT ;循环体 LOOP DECFSZ COUNT,1 ;COUNT减1,结果为零则跳 GOTO LOOP ;结果不为零,继续循环 ;结果为零,跳出循环,2.5 汇编语言程序设计,5.“IFTHEN”格式的程序 下面以“IF X=Y THEN GOTO NEXT”格式为例。 MOVF X,0 ;XW SUBWF Y,0 ;YW(X)W BTFSS STATUS,Z ;X=Y 否 ;XY GOTO NEXT ;X=Y,跳到 NEXT去执行。,2.5 汇编语言程序设计,“FORNEXT”格式的程序 “FORNEXT”程序使循环在某个范围内进行。下例是“FOR X=0 TO 5”格式的程序。F10放X的初值,F11放X的终值。 START EQU 10 DAEND EQU 11 MOVLW 0 MOVWF START ; 0START(F10) MOVLW 5 MOVWF DAEND ;5DAEND(F11) LOOP INCF START,1 ;START值加1 MOVF START,0 SUBWF DAEND,0 ;START=DAEND ?(X=5否) BTFSS STATUS,Z GOTO LOOP ;X5,继续循环 ;X5,结束循环,2.5 汇编语言程序设计,“DO WHILEEND”格式的程序 “DO WHILEEND”程序是在符合条件下执行循环。下例是“DO WHILE X=1”格式的程序。F10放X的值。 X EQU 10 MOVLW 1 MOVWF X ;1X(F10),作为初值 LOOP MOVLW 1 SUBWF X,0 BTFSS STATUS,Z ;X1否? GOTO LOOP ;X 1继续循环 ;X 1跳出循环,2.5 汇编语言程序设计,2.5.4 数据传送程序的设计 数据传送程序设计是最基本的程序设计,也是最常用的汇编程序设计。但是PIC单片机的数据传送程序和其他的单片机不同,因为PIC单片机的数据存储器RAM分成4个存储区,所以对PIC单片机来说,设计数据传送程序时应该随时注意存储区的选择,否则数据传送达不到目的。,2.5 汇编语言程序设计,2.5.4 数据传送程序的设计 用直接寻址方式分别向4个存储区的0xB0、0x30、0x130、0x1B0传送数据。 ;选择存储区0,直接寻址单元0xB0实际对应到0x30单元 CLRF STATUS MOVLW 0xF0 MOVWF 0x30 MOVLW 0x0F MOVWF 0xB0,2.5 汇编语言程序设计,;选择存储区1,直接寻址单元0x30实际对应到0xB0单元 BSF STATUS,RP0 MOVLW 0xF1 MOVWF 0x30 MOVLW 0x1F MOVWF 0xB0,2.5 汇编语言程序设计,2.5.5 算术逻辑运算程序的设计 基本算术运算有:定点数、浮点数运算;无符号数、有符号数运算等。 逻辑运算包括:逻辑异或、逻辑与、逻辑或; 加法运算:二进制加法运算,可直接运用加法指令:ADDWF 或ADDLWBCD加法运算,2.5 汇编语言程序设计,2.5.6 延时程序的设计 1简单延时程序的编写 如果延时时间较短,可以让程序简单地连续执行几条空操作指令“NOP”。如果延时时间长,可以用循环来实现。 2延时程序的延时时间计算 延时程序中计算指令执行的时间和即为延时时间。如果使用4MHz振荡,则每个指令周期为1S。所以单周期指令时间为1S,双周期指令时间为2S。在循环中插入空操作指令即可延长延时时间。,2.5 汇编语言程序设计,2.5.7 查表程序 查表程序常用于数据补偿,非线性修正,求非函数和代码转换,这种方法就不需要计算,速度又快,而且实现容易。查表程序用得恰当,可能大大简化程序设计,带来极大方便。 在单片微机中,要对程序存储器的数据进行访问,必须用读表操作。而PIC系列MCU没有查表指今,PIC的查表程序是利用子程序带值返回的特点来实现。具体是在主程序中先取表数据地址放入W,接着调用子程序,子程序的第一条指令将W置入PC,则程序跳到数据地址的地方,再由“RETLW”指令将数据放入W返回到主程序。表格程序是通过一偏移量来修正PC值,由一条带参数返回指令实现。,2.5 汇编语言程序设计,2.5.8 子程序设计 在编程过程中,常常会遇到一些完全相同的计算和操作,例如求各种数据的加减乘除运算、代码转换和延时等。如果每次都编写完全相同的程序段,会使编程相当繁琐、耽误时间,而且浪费大量的程序存储器空间。因此,对这些基本操作功能都是将它编制成标准化的程序段,存储于程序存储器的指定区域,在每次需要时就调出使用,这种程序段就称为子程序,调用子程序的程序称为主程序或者调用程序。子程序结构是程序设计标准化和模块化的有效方法。,2.5 汇编语言程序设计,2.5.9分支跳转子程序 经常需要根据条件判断,确定程序多方向转向选择,实现对程序的灵活控制。用PIC单片机指令可以轻松地构成分支跳转。在程序形式上,分支功能跳转子程序与数据查表子程序的结构类似,只是它是用GOTO语句替代了RETLW语句,并直接进入不同的子程序中。,2.5 汇编语言程序设计,2.5 汇编语言程序设计,2.5 汇编语言程序设计,2.5 汇编语言程序设计,2.5 汇编语言程序设计,2.5 汇编语言程序设计,2.5 汇编语言程序设计,本章小节,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省资阳市2025年初三第二轮复习测试卷化学试题(四)含解析
- 重庆化工职业学院《化工设计软件》2023-2024学年第二学期期末试卷
- 山东省沂水四十里中学2025年初三5月学业能力调研化学试题试卷含解析
- 山西省永济市2025年初三下学期第9周周考化学试题含解析
- 绵阳职业技术学院《键盘技巧三》2023-2024学年第一学期期末试卷
- 西南林业大学《书法篆刻基础》2023-2024学年第二学期期末试卷
- 酒泉市安西县2025年小升初考试数学试卷含解析
- 江西工业工程职业技术学院《SAP企业培训》2023-2024学年第二学期期末试卷
- 南开大学《高等数学A1》2023-2024学年第二学期期末试卷
- 武昌工学院《知识产权专业英语》2023-2024学年第二学期期末试卷
- 施工负责人题库2020
- 内燃机车柴油机冷却水系统-直流传动发内燃机车柴油机冷却水系统
- 数据驱动的精细化运营管理
- 2024年福建厦门大学后勤集团招聘笔试参考题库含答案解析
- 预制管桩施工方案
- 危重症患者的心理护理课件
- 胸腹主动脉瘤切除人工血管置换术术后健康饮食宣教
- 零星土建安全施工方案
- 中建商业楼幕墙专项施工方案
- 临床诊疗指南癫痫病学分册
- 制作沙包(教案)-五年级劳动版
评论
0/150
提交评论