PIC位单片机汇编语言常用指令的识读 .docx

上传人:Che****ry 文档编号:13045512 上传时间:2022-04-27 格式:DOCX 页数:4 大小:63.02KB
返回 下载 相关 举报
PIC位单片机汇编语言常用指令的识读 .docx_第1页
第1页 / 共4页
PIC位单片机汇编语言常用指令的识读 .docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《PIC位单片机汇编语言常用指令的识读 .docx》由会员分享,可在线阅读,更多相关《PIC位单片机汇编语言常用指令的识读 .docx(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精品名师归纳总结PIC8 位单片机汇编语言常用指令的识读各大类单片机的指令系统是没有通用性的, 它是由单片机生产厂家规定的, 所以用户必需遵循厂家规定的标准, 才能达到应用单片机的目的 .PIC 8 位单片机共有三个级别 , 有相对应的指令集 . 基本级 PIC 系列芯片共有指令 33 条, 每条指令是 12 位字长。中级 PIC 系列芯片共有指令 35 条, 每条指令是 14 位字长。高级PIC 系列芯片共有指令 58 条, 每条指令是 16 位字长 . 其指令向下兼容 .在这里笔者介绍 PIC 8 位单片机汇编语言指令的组成及指令中符号的功能, 以供初学者阅读相关书籍和资料时快速入门.一、

2、 PIC 汇编语言指令格式PIC 系列微掌握器汇编语言指令与MCS 51 系列单片机汇编语言一样 , 每条汇编语言指令由4 个部分组成 , 其书写格式如下:标号操作码助记符操作数 1, 操作数 2。注释指令格式说明如下:指令的4 个部分之间由空格作隔离符, 空格可以是 1 格或多格 , 以保证交叉汇编时 ,PC 机能识别指令 .1 与 MCS51 系列单片机功能相同, 标号代表指令的符号的址. 在程序汇编时 , 已赋以指令储备器的址的详细数值. 汇编语言中采纳符号的址 即标号 是便于查看、修改 , 特殊是便于指令转移的址的表示. 标号是指令格式中的可选项, 只有在被其它语句引用时才需派上标号

3、. 在无标号的情形下 , 指令助记符前面必需保留一个或一个以上的空格再写指令助记符. 指令助记符不能占用标号位置置, 否就该助记符会被汇编程序作标号误处理.书写标号时 , 规定第一字符必需是字母或半角下划线“”, 它后面可以跟英文和数字字符、冒号 : 制符表等 , 并可任意组合 .再有标号不能用操作码助记符和寄存器的代号表示. 标号也可以单独占一行 .2 该字段是指令的必选项 . 该项可以是指令助记符 , 也可以由伪指令及宏命令组成, 其作用是在交叉汇编时 , “指令操作码助记符”与“操作码表”进行逐一比较, 找出其相应的机器码一一代之.3 由操作数的数据值或以符号表示的数据或的址值组成. 如

4、操作数有两个 , 就两个操作数之间用逗号 , 分开. 当操作数是常数时 , 常数可以是二进制、八进制、十进制或十六进制数. 仍可以是被定义过的标号、字符串和ASC码等 . 详细表示时 , 规定在二进制数前冠以字母“B”, 例如 B10011100。八进制数前冠以字母“O” , 例如 O257。十进制数前冠以字母“D” , 例如 D122。十六进制数前冠以“ H”, 例如 H2F.在这里 PIC 8 位单片机默认进制是十六进制, 在十六进制数之前加上Ox,如 H2F可以写成 Ox2F.指令的操作数项也是可选项.PIC 系列与 MCS 51 系列 8 位单片机一样 , 存在寻址方法 , 即操作数的

5、来源或去向问题. 因 PIC 系列微掌握器采纳了精简指令集 RISC结构体系 , 其寻址方式和指令都既少而又简洁. 其寻址方式依据操作数来源的不同, 可分为立刻数寻址、直接寻址、寄存器间接寻址和位寻址四种 . 所以 PIC 系列单片机指令中的操作数经常显现有关寄存器符号. 有关的寻址实例 , 均可在本文的后面找到 .4 用来对程序作些说明 , 便于人们阅读程序 . 注释开头之前用分号 。与其它部分相隔 . 当汇编程序检测到分号时, 其后面的字符不再处理 . 值得留意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用.二、清零指令 共 4 条 1实例: CLRW。寄存器

6、W被清零说明:该条指令很简洁 , 其中 W为 PIC 单片机的工作寄存器 , 相当于 MCS51 系列单片机中的累加器A,CLR 是英语 Clear 的缩写字母.2.实例: CLRWD。T看门狗定时器清零 如已赋值 , 同时清预分频器 说明: WDT是英语 Watchdog Timer的缩写字母 .CLR 见上述说明 . 留意该两条指令无操作数.3 f 清零指令 . 指令格式: CLRF f实例: CLRF TMR。O 对 TMRO清零说明:在 PIC 系列 8 位单片机中 , 常用符号 F 或 f 代表片内的各种寄程器和F 的序号的址 .F 取值按 PIC 系列不同型号而不同 , 一般为 O

7、x00Ox1F/7F/FF.TMRO代表定时器 / 计数器 TMRO所, 以 CLRF对寄程器清零 , 采纳了直接寻址方式直接给出要拜访的寄存器可编辑资料 - - - 欢迎下载精品名师归纳总结TMRO.4 位清零指令 . 指令格式 BCF f,b实例: BCF REG1,2。把寄存器 REG1的 D2位清零说明: BCF是英语 Bit Clear F的缩写 . 指令格式中的F, 同上说明。符号 b 是表示 PIC 片内某个 8 位数据寄存器 F 位置号 或位的址, 所以 b 的取值为 0 7 或 D0D7. 实例中 REG是 Register的缩写 . 实例中的 2 代表指令格式中的 b=2

8、即寄存器 REG1的 D2 位.通过上述四条清零指令格式和实例, 可以说明 , 学习 PIC 系列 8 位单片机的指令时应第一明白指令的助记符意义 功能, 再有就是它的表达方式 . 初学者没有必要死记指令, 重要是懂得和实践 .竞赛试卷:可编辑资料 - - - 欢迎下载精品名师归纳总结10 RB8 位寄存器 , 其工作状态 RB=OxB8对,BCF RB,4执行后的 RB=B。 Ox。 O和 D.它执行指令:可编辑资料 - - - 欢迎下载精品名师归纳总结11 的标号是可选项 , 在什么条件下可派上用场.三、面对字节、常数与掌握操作的指令1W指令指令格式: MOVLW 。k k 表示常数、立刻

9、数和标号说明: MOVLW是 Move Literal to w的缩写实例: MOVL 0x1E。常数 30 送 W2I/O 口掌握寄存器 TRIS 设置指令 指令格式。 TRISf说明。 TRIS f是 Load TRIS Register的缩写 . 其功能是把工作寄存器W的内容送入 I/O 口掌握寄存器 f. 当W=0时, 置对应 I/O 口为输出。 W=1,置 I/O 口为输入 .实例: MOVLW 0x00。把 00H送入 WTRIS RA。置 PIC RA 口为输出MOVLW 0xFF。把 FFH送入 WTRIS RB。置 PIC RB 口为输入说明:这是 PIC 汇编语言中常用的几

10、条指令,即设置某个 I/O 口 这里是 RA口和 RB口为输入或输出的语句 . 可见, 识读指令时 , 一应充分懂得语句格式的功能, 二应前后联系阅读 .3W寄存器内容送寄存器fW 内容保持不变 指令指令格式: MOVWF f说明: MOVW是F Move W to f的缩写实例:MOVLW 0x0。B 送 0BH送 WMOVWF 6 。送 W内容到 RB口说明:第一条指令 0x0B 常数 11送工作寄存器 W,其次条指令 ,把 W内容常数 11 送到寄存器 F6 中, 查表 F6 即为 RB口, 所以 PORT_BB口=0BH=D114f 传送指令指令格式: MOVF f,d说明: MOVF

11、是 Move f 的缩写 .F 代表 PIC 中的某个寄存器 . 指令中的 d 规定: d=0 时,f内容送 W。d=1 时,f内容送寄存器 .实例: MOVF 6,0 。RB口内容送 WMOVWF 8。 RB口内容送 f8说明:第一条指令中的6 代表寄存器 f=6, 查寄存器表f=6 为 RB口。 0 代表 d=0, 代表挑选的目标为寄存器W.其次条指令中的 8 代表寄存器 f=8. 所以两条指令结果是把RB口的内容送 f8.至于 f8 内容是多少 .仍应在汇编语言开头时附加指令, 这里从略 .5指令格式: NOP说明: NOP是英语 No Operation的缩写 .NOP无操作数 , 所

12、以称为空操作 . 执行 NOP指令只使程序计数器PC加 1, 所以占用一个机器周期 .实例: MOVLW0xOF。送 OFH到 WMOVWF PORT_。B W内容写入 B 口NOP。空操作MOVF PORT_B,W。读操作说明:该三条指令是一种对I/O 口的 B 口连续操作的实例 , 其目的达到写入 B口的内容要读出时 , 应保证写、读之间有个 稳固时间 , 因此加入了空操作指令NOP.6令指令格式: GOTO k说明:执行该条指令时 , 将指令转移到指定的的址 跳转. 指令中的 k, 常与程序中的标号联系起来.实例:见第 9 条指令中71, 结果为零的间跳指令指令格式: DECFSZ f,

13、d说明: DECFSZ是英语 Decrement f,Skip of not 0的缩写 . 符号 f,d代表的意义 , 前述已作说明 . 该条指令是指寄存器的内容减1 存入 Wd=0或 fd=1 中. 如指令执行结果减 1 不为零 , 指令次序执行。为零时 , 就间跳下一条指令后再执行 等效次序执行一条空指令NOP实, 际指令中 , 当 d=1 时, 该项常被略去 .81, 结果为零间跳指令指令格式:INCFSZ f,d说明: INCFSZ是英语 Increment f,Skip of 0的缩写 . 该条指令与上一条 7 指令差别仅在于“ 1”上, 即执行这条指令时, 寄存器 f 内容加 1,

14、 如结果不为零 , 就指令次序执行。为零就指令间跳执行. 执行这条指令的其它规律关系与上条相同.9子程序返回指令指令格式: RETLW k说明: RETLW是 Return Literal to W的缩写 . 该指令代表子程序返回 , 返回前先把 8 位立刻数送 W.实例: PIC 某个汇编语言的延时子程序 摘要:1BELY MOVLW 0xC5。送延经常数0C5H入 W2MOVWF COUN。T20C5H送入计数器 23CLRF COUNT。1 对计数器 1 清零4LOOP INCFSZCOUNT。1 计数器 1 加 1 计数器 1 加1 结果不为零 , 跳转循环5GOTO LOOP 。可编

15、辑资料 - - - 欢迎下载精品名师归纳总结6DECTSZ CPUNT2。计数 2 减 1 计数器 2 减 1结果不为零 , 跳转循环重复执行第 4 条指令7GOTO LOOP 。8RETLW 0。子程序执行终止返回说明:程序中的注释已分别对每条指令的功能作了说明, 补充说明 14 条加 1 指令结果为零时 , 就间跳转到执行第 6 条指令 .2第6 条减 1 指令结果为零时 , 就间跳转到第 8 条子程序返回 , 整个延时指令才算完成 .31 或 2 代表 PIC 中某个寄存器 , 该寄存器由程序开头的伪指令赋值打算 关于伪指令今后将作特的介绍.学问竞赛试卷:121 8 延时程序的延时时间

16、. 已知所用的某个PIC 芯片的晶振为 20MHz,每个指令周期执行时间为 02s, 除跳转指令是双周期外 , 其它指令是单周期指令 .本文关于指令的注释将与前述指令中的略有不同.前述指令注释时是对指令详细完成的功能给以说明,这种注释方法对初学者的确易于接受和懂得 ,但是实际应用中的 PIC 产品汇编语言的注释通常是以程序要做什么或指令的作用 而不是说指令的直接功能.鉴于上述缘由,下述的指令注释将转变过去的注释方法,用程序应起的作用作注释.10指令格式: SWAPFf,d说明: SWAPF 是 Swap f 的合写 .符号 f、d 的意义与前述的相同 .该条指令的功能是寄存器f 的高 4 位与

17、低 4 位交换 ,即指令执行前 ,如寄存器 f 的 8 位状态为 D7 、D6、D5 、D4、D3、D2 、D1、D0,执行后的 8 位状态变为 D3 、D2 、D1 、D0 、D7 、D6 、D5 、D4, 其结果存入 Wd=0 或 fd=1 中.实例:中断现场爱护是中断技术中重要部分.由于 PIC16C指令系统中没有进栈PUSH 和出栈 POP 指令,所以只能用其它指令来实现.由于在主程序中经常用到工作寄存器W 和状态寄存器STATUS,所以中断现场爱护常要爱护寄存器W 和 STATUS.下面是对 PIC16C7 系列芯片中断现场爱护的实例程序.MOVWF W_TEMP。将 W 内容存入到

18、暂时寄存器W_TEMP 中 SWAPF STATUS,W。交换 STATUS 与 W 内容 MOVWF STA TUS_TEMP。将 STATUS 的内容存入到临时寄存器 STATUS_TEMP 中中断服务程序 SWAPF STATUS_TEMP,W 。交换 STATUS_TEMP 与 W 的内容 MOVWFSTATUS。STATUS 复原成原先的状态 SWAPF W_TEMP,F。交换内容 SWAPF W_TEMP,W。W 复原成原先的状态说明:上述程序中各条指令的注释基本上都是以程序应达到的目的而注释的,对每条指令的功能几乎未涉及.这是初学者应特殊留意的.11 Subroutine Cal

19、l指令格式: CALL k 。k 为立刻的址说明:子程序调用 , 不同型号芯片的实现方法不尽相同,其共同点是第一将返回的址PC 1压栈爱护 ,再转入所调用的子程序入口的址执行与 MCS 51 指令功能相像 .指令格式模式:HERECALLDELAY。调用延时子程序DELAY MOVLW 0x80。延时子程序RETLW 0说明:调用指令执行前,PC=的址 HERE调用指令执行后 ,PC=的址 DELAY 标号,堆栈指针 TOS=HERE 1返回的址 .实例:见下条指令的实例12 指令格式: COMFf,d说明: COMF 是 Complement f 的缩写 .其中 d=1 时,操作 f f。d

20、=0 时,操作f w.功能:寄存器f 内容取反后送入 Wd=0 或 f 自身d=1.实例:ORG0x1FF GOTOMAIN ORG0 DELAY MAINMOVLW 0。主程序开头TRTS5。设置 RA 口为输出BCF5,0。置 RA 口 0 位为 0 LOOPCALLDELAY 。闪动延时COMF5。RA 口求反 亮灭亮掌握 GOTOLOOP。循环 说明:上述指令是一种PIC16C54 LED 发光掌握试验部分程序 .其中延时子程序 DELY未列出 ,但不影响本条指令的识读 .程序中的主程序开头的三条指令 ,均已介绍过 ,紧跟着的 CALL 指令是调用执行子程序 ,其入口的址为标号 DEL

21、AY .子程序执行终止后 ,又执行 COMF 5 的 LED 发光亮灭亮灭掌握指令 . 后面一条 GOTO LOOP 指令是达到 LED 循环点亮目的 . 13的操作指令 共 4 条,PIC 高级产品多增一条 该类指令除一条位清零外 ,另有一条寄存器 f 位 b 的置1 指令和另外两条位跳步指令 PIC 高级产品多增一条 f 的 b 位触发转换指令 . 1 位置 1 指令.指令格式 BSF f,b 说明: BSF是 Bit Set f 的缩写 .F 和 b 的意义与前述相同 ,该条指令的功能是将寄存器 f 的 b 位置 1. 2位测试、为零间跳指令 .指令格式BTFSCf,b说明: BTFSC

22、 是 Bit Test,Skip if Clear 的缩写 .指令功能是测试寄存器f 位“ b”, 如为 0, 跳过下一条指令。为 1 次序执行,即当 fb=0 时,就不执行当前指令而执行下一条指令间跳,即用一条空指令 NOP 代替它 ,所以该条指令占用 2 个指令周期 .3 位测试、为 1 间跳指令 .指令格式 BTFSSf,b说明: BTFSS 是 Bit Test,Skip if Set 的缩写 .其指令的规律功能与上条相反,位测试fb=1 就间跳执行 ,fb=0 次序执行 .上面介绍的 PIC 8 位单片机汇编语言指令仅是部分指令,此外仍有循环左、右移指令。W 和寄存器 f 相“加”、相“与”指令和进入睡眠方式等指令.鉴于报纸版面的限制,不在这里一一介绍 ,今后将在程序的应用试验中再作补充说明.史为学问竞赛试卷:13, 程序中的“ 5”代表 RAF5 口。“ 6”代表 RBF6 口.CLRW。MOVLW OFFHTRIS5TRIS6BCF5,1BCF50BSF5,0右排接左可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com