pic单片机指令系统

上传人:ji****en 文档编号:107706370 上传时间:2019-10-20 格式:PDF 页数:62 大小:1.48MB
返回 下载 相关 举报
pic单片机指令系统_第1页
第1页 / 共62页
pic单片机指令系统_第2页
第2页 / 共62页
pic单片机指令系统_第3页
第3页 / 共62页
pic单片机指令系统_第4页
第4页 / 共62页
pic单片机指令系统_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《pic单片机指令系统》由会员分享,可在线阅读,更多相关《pic单片机指令系统(62页珍藏版)》请在金锄头文库上搜索。

1、微机原理与单片机技术 第四讲 PIC单片机的指令系统 黄之峰 广东工业大学 自动化学院 本讲内容 1. PIC单片机的指令系统概述 2. 汇编语言与机器指令的关系 3. 数据传送类指令 4. 逻辑运算类指令 5. 算数运算类指令 6. 4种寻址方式 第四讲 1. PIC单片机的指令系统概述 机器语言是由一条条语句构成的,每一条语句又能准 确表达某种语义。例如,他可以命令机器做某种操作, 指出参与操作的数或者信息在什么地方等。计算机就 是连续执行每一条机器语句而实现全自动工作的。每每 一条机器语言称之为机器指令一条机器语言称之为机器指令。全部的机器指令的集 合称之为机器的指令系统机器的指令系统。

2、 指令由操作码操作码和地址码地址码两部分组成。 补充参考书计算机组成原理p311 第七章 更准确地说是地址/操作数 寻址方式是什么? 第四讲 1. PIC单片机的指令系统概述 PIC16F87X单片机采用精简指令集(RISC)结构, 指令效率高,功能强。它的指令为单字的宽字位宽字位 (1414)指令指令,由此生成的程序代码短。指令条数 少,仅有仅有3535条条。 数据传送类指令(4条) 逻辑运算类指令(14条) 控制转移类指令(11条) 算术运算类指令(6条) 对比以下: MSC-51单片 机 111条指 令 第四讲 1. PIC单片机的指令系统概述 PIC 中档单片机指令格式 分四种 参考资

3、料 PIC16F877 数据手 册 P233页 第四讲 2. 汇编语言与机器指令的关系 作为一种计算机,PIC单片机仅能识别二进制形 式的机器语言码,它是一种“最低级”的计算 机语言形式。但如果直接用二进制代码表示的 机器码编写程序,则编写起来不仅很繁琐,也 容易出错,同时还会给程序的阅读、修改和调 试带来极大的困难。在实际开发单片机应用程 序时,通常采用更适合记忆和阅读的“汇编语 言”编程。 早期的穿孔纸带 ()b 第四讲 2. 汇编语言和指令的关系 汇编语言是对机器语言的改进,它采用便于 人们记忆的符号化语言,即用一些符号或者 字符串来表示操作码、操作数和地址码等。 MOVWF 0x55H

4、 ;注释;注释 一个汇编指令: 将W寄存器的值放 入地址为0x55H的 寄存器里 第四讲 2. 汇编语言与机器指令的关系 指令集是单片机的所有指令的集合,PIC中档单片 机共提供了3535条指令条指令。编程时,汇编语言使用指 令的格式和单片机执行它们的实际机器码指令格指令格 式不同式不同,为了方便程序设计者,汇编语言用表示 用途的英文缩写(简称为助记符)、地址和数据 构成“使用格式”。由使用格式的指令所组成的 “程序”经过编译器编译和连接后,将生成相应 的机器指令码,指令码才是单片机可以理解和执 行的。 转换后的指令码可以分为操作码(OP Code)与操 作数(Operand)两个部分,操作码

5、 部分指代指 令需要执行的操作,操作数部分接在操作码的后 面。 第四讲 2. 汇编语言与机器指令的关系 MOVWF 0x55H 编译软件:编译软件: 把汇编翻译成 机器指令 010101 101010 01 第四讲 2. 汇编语言与机器指令的关系 表4-1 核心助记符 p46 核心助记符 含义 核心助记符 含义 MOV 数据传送 RR 右移 SWAP 交换 RL 左移 ADD 相加 AND 与 SUB 相减 IOR 或 INC 加1 XOR 异或 DEC 减1 COM 位取反 CLR 清零 BT 位判断 BC 将位置0 RET 返回 BS 将位置1 第四讲 2. 汇编语言与机器指令的关系 表4

6、-2.非核心助记符 P46 非核心助记符 含义 未缩写前的英文拼 写 L 指令中含有8位立即数 Literal W W寄存器 Working register F 数据存储器 Files register WDT 看门狗 Watchdog timer SZ 寄存器为0时跳转 Skip if zero SC 位为0时跳转 Skip if bit is zero SS 位为1时跳转 Skip if bit is set 第四讲 2. 汇编语言与机器指令的关系 表4-3.操作码说明符 (不是指令的内容,只是用来注释指令) 操作码说明符 含义 K 立即数 f 寄存器单元地址 d 目标寄存器选择,d=0

7、,结 果存至W; d=1,结果存至f b 寄存器f的内存地址,范围 06 () 寄存器内容 () 寄存器间接寻址内容 送入方向 第四讲 3. 数据传送类指令(4条) 所有指令只占用一个指令周期,其主要作用是实现数 据的传输。 第四讲 3. 数据传送类指令(4条) (1)MOVLW:把立即数K传送到W寄存器里面 指令格式: MOVLW K 操作:K - (W) 操作数: 0 K 255 执行时间: 1个指令周期。 状态标志影响:无。 使用实例: MOVLW 0x55 ;W寄存器赋值 该语句完成后,W寄存器的内容变为55H 第四讲 3. 数据传送类指令(4条) (2)MOVWF:把W寄存器的内容传

8、送至文档寄存器中 指令格式: MOVWF f 操作数: f为文档寄存器的低7位地址(0x000x7F)。 执行时间: 1个指令周期。 执行过程: 把W寄存器的内容传送至文档寄存器中,W寄存器的寄存器的 内容保持不变内容保持不变。 状态标志影响:无。 说明: 该指令是用于对文档寄存器赋值的最主要的方式。 使用实例: MOVLW 0x55 ;W寄存器赋值 MOVWF 20H ;通过W寄存器使寄存器20H赋值为55H ;(20H)=0x55H 第四讲 3. 数据传送类指令(4条) (3)MOVF:把文档寄存器的内容传送至目的寄存器 语法形式: MOVF f,d 操作数: f为文档寄存器的低7位地址(

9、0x000x7F)。d=0,把 文档寄存器的内容传送至W寄存器;d=1,把文档寄存器的内容放 回自己本身,目的在于检测文档寄存器的内容是否为目的在于检测文档寄存器的内容是否为0 0。 执行时间: 1个指令周期。 执行过程: d=0 (f) W or d=1 (f)(f) 。 状态标志影响:状态标志影响:Z Z。 说明:d为0时,该指令可以通过W寄存器把文档寄存器的内容传 送至他处; d为1时,这条指令看似没有用,其实它可以对状态 寄存器的Z产生影响,从而判断文档寄存器的内容是否为0。 第四讲 3. 数据传送类指令(4条) (4)SWAPF 文档寄存器的高低半字节内容交换 语法形式: SWAPF

10、 f,d 操作数: f为文档寄存器的低7位地址(0x000x7F)。 d=d=1 1,结果放在文档寄存器内结果放在文档寄存器内,W W的内容不变的内容不变。 d=d=0 0,结果放在结果放在W W寄存器内寄存器内,文档寄存器的内容不变文档寄存器的内容不变。 执行时间: 1个指令周期。 执行过程: fd fd 状态标志影响:无。 说明:把文档寄存器的高低半字节内容交换,结果放到d指定的目 的地。该指令看似没有多大作用,但在中断服务程序退出前恢复W 寄存器内容的过程中起着不可或缺的关键作用,原因是它对状态寄 存器不产生任何影响。 第四讲 3. 数据传送类指令(4条) 如何把一个数据存入通用寄存器里

11、面? MOVLW 0x55H ;W寄存器赋值 MOVWF 0x20H ;通过W寄存器使寄存器20H赋值为55H ;(20H)=0x55H BCF STATUS, RP0 ;选择数据寄存器页 BCF STATUS, RP1 第四讲 3. 数据传送类指令(4条) 实例1 PICT4-30: INCLUDE “P16F877.INC“ ;PIC16F877A包含的头文件 ORG 0000H ;伪指令,即下面的程序从程序存储器的地址0000H开始存放 NOP BCF STATUS,RP0 ;选择数据存储器的体1 MOVLW 0x00 ;把W寄存器清零 MOVWF 0x20 ;把w寄存器内容放入0x20

12、H,对0x20清零 MOVWF 0x21 ;把w寄存器内容放入0x21H,对0x21清零 MOVLW 0xab ;把立即数0xab放入w寄存器 MOVWF 0x20 ;把w寄存器内容放入0x20H SWAPF 0X20,0 ;0x20地址的寄存器内容高低四位互换,结果存入w寄存器 SWAPF 0X20,1 ;0x20地址的寄存器内容高低四位互换,结果存入0x20地址内 MOVF 0X21,1 ;把0x21的内容传送给0x21 ,观察STATUS的Z标志位 MOVF 0X21,0 ;把0x21的内容传送给w寄存器 MOVLW 0x35 ;把立即数0x35放入w寄存器 MOVWF 0x21 ;把w

13、寄存器内容放入0x20H MOVF 0X21,1 ;把0x21的内容传送给0x21 观察STATUS的Z标志位 LP GOTO LP ;原地循环 END 第四讲 3. 数据传送类指令(4条) 错误的指令:错误的指令: 初学者往往回写出违反语法规则的指令: MOVLF 42H,20H ;将立即数42H传送至 20H寄存器中 MOVF 20H,30H ;将20H的内容传送至 30H寄存器中 MOVFW 20H ;将20H的内容传送至 工作寄存器W 第四讲 4. 逻辑运算类指令(14条) 逻辑运算类指令一共14条,均只占用一个指令周期。该类指 令设计寄存器的清除、移位、位操作、逻辑运算等功能。 第四

14、讲 4. 逻辑运算类指令 A,寄存器清除指令 x 3 CLRF f 说明:把寄存器f清零,标志位Z(STATUS)置1 操作:0(f)。 操作数:0f127 例子: CLRF 20H 指令执行完成之后,寄存器f清0,且Z置1. CLRW 说明:把W寄存器清零。 操作:0(W)。 操作数:无 例子:CLRW 执行结果:寄存器W被置0,且Z置1. 第四讲 4. 逻辑运算类指令 A,寄存器清除指令 x 3 CLRWDT 说明:把看门狗定时器WDT寄存器清零。 操作:0(WDT),0WDT预分频器,T0,PD 置1 操作数:无 例子:CLRWDT 指令执行效果,WDT=0,WDT预分频器=0,T0=1

15、, PD=1; 第四讲 4. 逻辑运算类指令 B、位操作指令 x 2 BCF f, b 说明:把寄存器f的b位置0; 操作数:0f127,0b7。 影响标志位:无 例子:BCF 20H,3. 若指令执行前 20H=EFH,则指令执行完成之后,(20H) =E7H BSF f, b 说明:把寄存器f的b位置置1; 操作数:操作数:0f127,0b7。 影响标志位:无 例子:BSF 20H,3. 第四讲 4. 逻辑运算类指令 C、移位操作指令 x 2 影响标志位C RLF f,d 寄存器f的值带标志位C左移, 若d=0,结果保存在W寄存 器,若d=1,结果保存在f 寄存器。 操作数:0f127,d0,1 RRF f,d 寄存器f的值带标志位C右移, 若d=0,结果保存在W寄存 器,若d=1,结果保存在f 寄存器。 操作数:0f127,d0,1 第四讲 4. 逻辑运算类指令 C、移位操作指令 x 2 影响标志位C RLF f,d 若d=1 则ff, fC,Cf 例如:C=1,(f)=0x43H=0100 0011 则执行完后,C=0,(f)=1000 0111=0x87H 第四讲 4. 逻辑运算类指令 C、移位操作指令 x 2 影响标志位C RLF f,d 若d=0 则fW, f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号