已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
pic单片机指令系统 在第2章简要介绍pic16f8系列单片机的基本结构基础上, 如何基于硬件进行相关的程序设计是一重要的目标和任务,传统书籍 通常从理论(包括数据类型、寻址方式等)到具体指令分类,再到详 细分析,通常是比较抽象的讲述。本章直接从组成单片机指令的构造 、组成单片机的源程序及机器码,到广泛的单片机指令集详解。回避 了一些复杂抽象的问题,深入浅出。这一点对于初学者尤其重要。 3.1 pic系列单片机源程序与机器码 3.1.1 pic单片机指令构成 pic单片机是由美国microchip公司开发的8位单片机。pic单 片机采用指令总线和数据总线分开的哈佛双总线结构,避免了瓶颈 现象。pic单片机根据指令长度的大小分为三类,基本型的指令长 度为12位(编号pic12cxx,16c5x)、中级型的指令长度为14 位(编号pic16c6x,16c7x,16f87x)、高级型的指令长度为 16位(编号pic17cxx,18cxx)。本书主要研究pic16f8xx系 列的单片机,其pic系列单片机的指令均由14位长组成,全部指令 有35条以上,但根据其内部结构可进行大的3个分类。图3.1示出 其3大类指令。其3大类为 (1) 字节处理指令 (2) bit位处理指令 (3) literal直定数处理指令。这样分类有利于软件开发者记忆和使 用方便。以下对图3.1所示指令构造进行说明。 图3.1 pic的指令构造分类 1首先,指令均由14位构成。这种构成可使程序存储器一个地址就存储一条指令。 通常这种指令也称为单字节指令。具有此特征的microcomputer chip通常也被称为 risc构造。 2由程序计数器指定程序存储器的地址,读出指令,执行指令。在执行指令时,首 先解读指令码,根据指令码判断指令的种类。 3读出指令如属于(a)构造,即判断该指令是以演算为中心的指令。f指定寄存器的 地址,所存数据作为被运算对象。另外指令中d代表指令执行后结果存储的场所。f具 有7 位长,可指定地址范围可达128。 在不足时,pic通过bank分类方式,使得指 定范围可达1284. 详细说明见pic内存结构图。 4读出指令如属于(b)构造,即判断该指令属bit位运算指令。是对f指定寄存器的数 据的第b bit位进行操作运算。存储数据的寄存器均为8 位长度,使用b为3位长即可 对整个8 位进行运算。 5读出指令如属于(c)构造,即判断该指令属literal直定数处理指令。常数k为演算 对象。 因k仅为8 位位长,k的大小仅限于8 位能表示的常数内。请注意,在执行跳 转指令时,由于k为8 位位长,跳转范围仅在最大256内。跳转在256以上范围时, pic采用了页分类功能来解决这个问题。具体详细说明见pic内存结构图。 3.1.2 pic指令书写方法 pic单片机的指令一般采用下面的书写方法。pic指令的基本原则是要简洁,阅读容易。 一条指令可分为4个部分。指令书写格式如下 lable mnemonic operand comment 1lable lable部分是从指令行的开头书写的记号。它通常作为跳转指令所指定的跳转目标地址 。不必要时,可不书写。lable部分必须由行头开始书写,内容可包含所有英文字母、数 字等。lable部分长度必须为32文字以下。字母大小写代表不同的lable。也可设定编程 环境,设置大小书写无区别。 2mnemonic mnemonic部分就是要执行的指令的记号。书写编辑指令和指示指令必须从行头空一个 space以上。在有lable部分时,必须在lable后空一个space以上或书写上( : ),再书 写指令。 3operand operand部分是指令所要处理,运算的对象,数据等。书写operand时,必须在 mnemonic与operand间留有一个以上space。另外,在多个operand的情况下,使用( ,)来分离。 opearnd部分具有多种记号如下 d : 指令执行后结果存储场所指定。d为0时,结果送入wreg,d为1时寄存器 f : 寄存器地址指定寄存器。 k : 常数. 范围0 255 间。 b : bit位置指定。最低位0,最高位7。 4comment comment为注译部分。在( : )后的文字全为注译。在行头书写上( : )后整行均为注译部分 。该部分可有可无,完全不影响程序的编译,指令的动作。仅为程序员记忆,阅读,理解 方便所用。 3.1.3源程序与机器码 在单片微机中,规定了一系列用于编写程序的语句和应该遵循的语法规 则。人们根据一种语言给定的语句及语法规则就可以写出程序,计算机则通过 执行已经编好的程序来完成人们要求它完成的各种功能。pic单片机提供了一整 套的指令系统。在pic单片机通用的语言就是汇编语言。汇编语言和高级语言有 较大的差别。汇编语言的语句与机器的种类和型号密切相关,而高级语言完成 某种功能,只要算法正确,具体实施则相对自由。 1)机器码 机器语言也可以称为机器码,机器语言是计算机可以直接执行的一条指 令,这些指令以二进制代码的形式表示。 要单片机完成一项基本任务,必须将任务分解成一些具体步骤,再要求它 去逐项执行每个步骤,还要对它下指令。该指令在单片机术语中称为“指令 ”(instruction)。完成一项任务所需的所有指令的有序集合就称为“程序 ”(programm)。这些指令要预先一条一条顺序地放到单片机的程序存贮器中, 单片机在运行时,片中的cpu从程序存贮器中逐条有序取出指令,执行指令, 并将有关指令执行完毕,即可完成既定任务。 不同种类的单片机有不同的一套指令(即所谓“指令系统”)。pic系列的单 片机其指令系统与51系列的完全不同。pic16f84有30余条指令构成的指令系 统。每条指令由14位(bit)构成,这些位是二进制码的0和1,如果要使16f84 端口b的b0位输出高电平,以点亮一只发光二极管led,而b口的其余各位仍保 持低电平,则需要使单片机执行下列各条指令(机器码): 11000000000000 00000001100110 11000000000001 00000010000110 10100000000100 早先的技术人员就是用这样的二进制码来编写程序的。这种程序,看起来像 天书,很费解,但它完全能指挥单片机的运作。因为单片机实际上是一种复杂 的数字逻辑电路。要数字电路运作,必须相应输入高、低电平,对正逻辑而言 ,高电平为1,低电平为0。上述指令顺序在不同的数位上出现的0和1,经译码 后,即可完成各种不同的运作,逐步完成单片机所要执行的任务,如点亮一个 led。 上述各条指令的写法,完全面向单片机,是用来直接指示单片机该如何运作 的。因此,这种由0、1组成的指令称为机器语言。实际上,这种由二进码构成 的指令集不但难读懂,而且用来编程也有困难。因为程序往往不是从头到尾顺 序执行,有时还需中途转移到其它单元执行一段程序后再返回来。而指令是一 条一条顺序存放在存贮器各个单元内的。因此,如果要转移,需指明具体转到 哪个单元,即要写出该单元的地址。但在编写程序时,该程序有多长,具体要 放到哪些单元中,都是未知数,又怎能具体指明要转到哪个单元呢? 2汇编语言 由于用机器语言会使程序难写、难读,后来一种新型的语言形式汇编语 言就问世了。使用这种语言写程序较方便,也比较容易读懂。不过,和机器语 言一样,不同类型的单片机有完全不同的汇编语言。就如不同地区的人有不同 的方言一样。在汇编语言中,转移地址是用符号来表示的。把上面由机器语言 写成的程序改写成由汇编语言构成的程序: movlw b00000000 tris port b movlw b00000001 movwf port b fin: goto fin 上列各条指令实际上是英语缩写和一些数组成的。如第一条中的movlw就是 move literal to w的缩写,其意义为照原样移入工作寄存器w,而“原样”就是 后接引号内的数字00000000。引号前的b表示后续的是二进制数。第二句是 将w内的数复制到b口的三态(tristate)控制寄存器中,以设定b口为输出, 然后将00000001送入w中,再复制到b口;最后执行一条无限循环语句以保持 b口的状态不变。从单片机外部看去,16f84的第6脚(即b0)维持为高电平,以 点亮led。 由上例可知,汇编语言较之机器语言要好懂得多。同时,最后一句自身循环 也是一种转移语句,转移目的地就是此句所在单元地址,如用机器语言,就难 以标出具体地址,而用汇编语言助记符fin即可替代。 3源程序 为了快速掌握pic单片机源程序的基本结构,这里给出一个典 型的程序结构框架。建立源程序时首先用伪指令title提供程序的 标题,接着给出整个程序的总说明,并用列表伪指令list指定所用 单片机型号和文件输出格式,再利用include伪指令读入mpasm 中提供的定义文件,然后对片内常用资源进行定义,再给出一般程 序的基本结构框架。 3.1.4 pic系列8位单片机源程序的组成 pic系列单片机的源程序是指pic的助记符指令编写的程序(汇编语言程序)。下面 对pic源程序的格式要求和源程序的书写作简要的介绍。 一般来说对pic的源程序格式并没有统一的要求,用户可以根据习惯来编写,当 然编写时应遵守汇编的一些规范。下面以pic16f84芯片点亮一支发光二极管的汇 编程序实例,介绍一种源程序编写的方法(格式)。 源程序清单 1file turnon.asm 2assembly code for pic16f84 microcontroller 3turns on an led connected to b0 4uses rc oscillator,about 100khz 5cpu configuration 6(its a 16f84,rc oscillator 7watchdog timer off,powerup timer on) 8processor 16f84 9include 10_config_rc_osc_wdt_off_pwrte_on 11program 12org 0;start at address 0 13at startup,all ports are inputs 14set port b to all outputs 15movlw b00000000;w=binary 00000000 16tris portb ;copy w to port b control reg 17put a 1 in the lowest bit of port b 18movlw b00000001;w=binary 00000001 19movwf portb ;copy w to port b itself 20stop by going into an endless loop 21fin:goto fin 22end ;program ends here 源程序清单逐行加以说明: n第1行为文件(file)名,这里取名turnonasm。turnon意指一个接通(即 接通led)程序。asm是源程序的扩展名。 n第2行说明是由适用于pic16f84微控制器的汇编码编写的源程序。 n第3行说明程序用途是接通pic16f84 portb的b0位led。 n第4行说明由rc振荡器供给时钟,频率约为100khz。 n第5、6、7行说明对16f84 cpu的结构设置(用rc振荡器,看门狗定时器即 watchdog timer关,上电powerup定时器开,关于16f84的结构设置,后 面将详谈)。 n第8、9、10行为伪指令。这是用来向汇编程序提供有关如何完成汇编的控制指 令信息,它既是汇编过程的控制指令,也是汇编程序的操作指令。在这里8、9 、10行还向汇编程序说明,单片机用的是16f84,用rc振荡器、看门狗定时器 关断不用,但上电定时器接通使用。对照5、6行,可见二者内容相同,但一个 是注释,专门为用户说明,另一个是伪指令,是为pc机的汇编程序提供指令信 息。 n第11行又是注释,说明程序主体由此开始。 n第12行说明程序存放在由地址0开始的16f84单片机中的程序存贮器中,也是 一条伪指令。 n第13、14两行为注释,说明后续的一段指令(两句)的作用,即在启动时,所有 端口为输入,随即将b口设定为全输出(即各位均为输出)。 n第15行是汇编语言编写的第一条指令,即对二进制(b)数“00000000”存入工 作寄存器w。 n第16行将w寄存器的内容(即00000000)传送到b口控制寄存器,使b口成为输 出口。15、16行均带有注释。 n第17行为注释,说明下面的二条指令是使b口的最低位为1。 n第18行的指令将二进制数00000001送入工作寄存器w,第19行指令则将w寄 存器的内容复制到b口,则b口的最低位b0为高电平,其余各位则为低电平,使 接到b0位的led发光。 n第20行又是注释。说明下面的指令将使b0位为高的状态继续下去。 n第21行的指令为无限循环语句,维持b1口输出为高不变。 n第22行是伪指令end,表明程序到此结束。 编写pic单片机的源程序,除了源程序的开始处要求严格的列表指令外,还需 注意源程序中字母符号大小写的有关规则,否则在pc机上汇编源程序时不会成功 。笔者用下列的pic16f84单片机对b口送数的源程序(源程序各自定义)为实例, 说明需注意的问题。 list p=pic16f84 include p16f84inc org 0 start clrw ;起始地址 bsf status,5 ;选体1 movwf trisb ;置b口为输出 bcf status,5;status,5复位 movw 0xaa ;可使b口的 led间亮 movwf portb ;b口输出10 101010 loop goto loop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级语文下册 识字(一)2 姓氏歌第1课时教学设计 新人教版
- 工艺安装考试题目与答案解析
- 冀教6英下Unit3Lesson18教案
- 新教材高中物理 第9章 静电场及其应用 4 静电的防止与利用教学设计 新人教版必修第三册
- 2026年油气数字化高级研发师招聘笔试试卷 招录12人完整题库
- 2026年药品合规高级审核师招聘笔试试卷 招录10人
- 教科版(2017)三年级下册1.运动和位置第1课时教案
- 科学八年级下册第1节模型、符号的建立与作用教学设计
- 2026年通信智能化高级工程师招聘笔试试卷 招录11人真题题库
- 2026年碳交易高级运营专家招聘笔试试卷 招录12人题型大全
- TGDCKCJH048-2021紫外分析仪性能要求与检测方法
- 未成年人犯罪的预防与矫正法律机制
- 2025年地质勘查企业安全生产管理人员安全生产知识考题及答案解析
- 2024浙江理工大学科技与艺术学院辅导员招聘笔试真题及答案
- DBJT 13-502-2025 古建筑安全监测技术标准
- 2025-2026学年统编版三年级道德与法治上册全册教案(含教学计划)
- 声调课件-高中日语新版标准日本语初级上册
- 沟(河)道清淤清障单元工程施工质量检验表
- 运输货车承包合同7篇
- 风电塔筒生产线项目初步设计
- 统编人教版(2024)八年级上册道德与法治全册教案
评论
0/150
提交评论