好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

pic单片机程序设计基础(幻灯片).ppt

37页
  • 卖家[上传人]:第***
  • 文档编号:50958683
  • 上传时间:2018-08-11
  • 文档格式:PPT
  • 文档大小:219.50KB
  • / 37 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 注:本介绍基于注:本介绍基于1414位指令字长的中档单片机位指令字长的中档单片机目录l一、机器语言与汇编语言……………….3~6l二、程序结构框架……………………….7~9l三、PICmcu汇编语言格式……………10~20l四、 PICmcu汇编语言程序设计方法…21~31l五、 PICmcu基本工作条件……………32~34l六、 PICmcu编程续习…………………35~36机器语言与汇编语言l机器语言(机器码)所谓“机器语言”就是用二进制代码表示的能为计算 机直 接识别和执行的指令的集合,它是计算机的一种 最低级的语言形式单片机内部的电路基本上都是用数字逻电路构成的,而 数字逻电路只能处理二进制代码“ 0 ”和“ 1 ”,因此 ,单片机仅仅能够识别二进制形式的机器语言程序(也称 机器码程序)PIC单片机指令系统中的每一条指令都有自己相应的机 器语言形式比如: 睡眠指令“ SLEEP”和加法指令“ ADDWF f,d ”的机 器码( 或称机器指令)分别为“ 00000001100011”和 “00111df6.f0”(其中d和f6,f5.f0均代表一位二进 制数码) 机器语言与汇编语言 •汇编语言汇编语言是对机器语言的改进,它采用便于人们记忆 的一些符号(例如简化的英文单词)来表示操作码、操作 数和地址码等。

      汇编语言的语句通常与机器语言指令是一一对应的 在机器指令中,操作码、操作数和地址码等都是用二 进制代码表示的如果直接使用机器语言来设计程序,编 写起来很繁琐,容易出错,给程序的阅读、修改、调试等 环节也都会带来极大的困难为了克服这些困难,人们在 开发应用单片机的实际工作中通常都使用汇编语言进行程 序设计•汇编语言源程序 用汇编语言编写的程序就称为汇编语言源程序(源程序 ) 机器语言与汇编语言(续) •汇编程序 由于单片机不认识汇编语言程序,所以 开发人员需要在微机上,运行一个由单片机 制造商免费配套提供的、称作“汇编器” (或汇编程序)的软件,将自己编写的源程 序翻译成机器语言程序这种机器语言程序 就称为“目标程序” 烧写到单片机程序存储器中的程序就是 这种“目标程序”利用汇编器将源程序翻 译成目标程序的过程称为“汇编”PICmcu汇编语言程序汇编语言提供了一种不涉及实际存储器地址 和机器指令编码的编写源程序的有效方法为了掌 握这种方法,我们需要了解汇编器所约定的一些内 容(汇编语言的程序格式、语句格式、助记符及伪 指令等),以及程序的 4种基本结构: 顺序、分 支、循环和子程序)等。

      在编制PIC系列单片机的程序时会遇到几个特 有问题,即RAM数据存储器的体选寻址、程序存储 器的跨页跳转、复位矢量和中断矢量的安排等问题 在实际工作中常用的几种程序有延时程序、查表 程序等PICmcu程序结构框架一般来说,PIC的源程序并没有规定的统一格式,大家可以 根据自己的风格来编写对于一个完整程序的总体布局,为了提高程序可读性:-先用输出标题伪指令TITLE提供列表文件中每页开头的标题-接着给出整个程序的总的说明-用列表伪指令指令单片机的型号及文件输出格式,-再嵌入CONFIIG的定义,-并利用INCLUDE伪指令读入MPASM中提供的定义文件,-然后对片内常用资源进行定义,-再给出一般程序的基本结构框架下面提供一个典型的程序结构框架大家参考:PICmcu程序结构框架 一般程序基本程序结构框架 :TITLE “ 本程序用于程控电机调速和定位控制”;程序标题; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; 程序说明 ; ; ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * LIST P=16C74, F=INHX8M; 定义芯片型号及文件输出格式__CONFIG _CP_OFF 设定conflg 格式 ; INCLUDE ‘PIC16C74.EQU’ ;引入定义文件 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;芯片资源定义、寄存器和常数定义 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * INDFEQU0 TMR0EQU1 PCLEQU2 ︰ COUNTEQU20H;定义寄存器和常数 TMEP0EQU21H GENR0EQU22H RESETEQU00H︰PICmcu程序结构框架(续);* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *ORGRESET ; 复位向量入口GOTOMAIN ; 跳过中断矢量ORG0004H ; 中断服务程序向量入口GOTO INT_SUB ; 跳到中断服务子程序ORG0005H ; 从0005H开始存放主程序 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAIN CLRWDT; 清看门狗 CALLINTIT_PORT; 初始化I/O口 CALLINTIT_TIMER; 初始化定时器 CALLINTIT_VARIABLE ; 初始化寄存器︰ GOTOMAIN ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -INT_SUB ︰ ; 中断服务子程序 RETIE;中断返回INTIT_PORT ︰ ; 初始化I/O口子程序 RETURN;子程序返回 ; 子程序区︰ END;全部程序结束PICmcu汇编语言格式 PIC 汇编语言格式由以下四部分组成: [标号:] [;注释] (Lable) (Opcode)(Operand) (Comment)这四个部分顺序不能颠倒。

      要求:- 标号必须从第一列开始,在没有标号的情况下,指令助记符的 前面必须留一个或一个以上空格(即从第二列或以后开始) - 指令操作码后面跟随操作数,操作数之间必须用逗号‘,’ ( 半角)隔开 - 在必要时可加注释,注释可以从任何一列开始,甚至可以单独 安排注释作为一行;注释可以跟在操作数、指令助记符或标号之后,注 释部分须用分号‘;’ (半角)隔开 标号与指令助记符之间、指令助记符与操作数之间都必须留有 一个或一个以上的空格 汇编语言源程序可以用大小写字母混用书写,这样在辨识表示标 号时特别有用一个语句行最多能有255个字符PICmcu汇编语言格式 -标号说明标号:指令的符号地址 标号在程序汇编时就被赋以指令存储地址的具体数值,采 用符号地址便于查看、修改,尤其是转移指令中转移地址的表 示实际上并不是每条指令都需要加上标号,只有要被其它语 句引用的指令才需要加上标号标号可以单独作为一行标号有如下规定:(1) 由字母、数字和其它一些字符组成,要求所有标号必 须从第一列开始书写,第一个字符必须是字母或下划线‘—’, 它后面可以跟英文和数字字符、冒号、空格、制表符、换行符 、下划线和问号。

      并可任意组合但总的字符数不超过32个2) 标号不要用操作码的助记符和寄存器的代号,以及其 系统保留字3) 符号的标号只能在程序中定义一次,保持一致性PICmcu汇编语言格式 -操作码说明操作码字段(即指令助记符) • 这一字段永远不含是空的可以是汇编令 系统的指令助记符,也可以是用于汇编程序控 制的指令(伪指令)以及宏命令 • 指令操作码(助记符)在汇编时,与‘操作 码表’进行逐一比较,指出其相应的机器码一一 代之,编写汇编语言程序时不能把指令助记符 写在第一列,否则该助记符会被汇编程序作为 标号处理PICmcu汇编语言格式 -操作数说明操作数:为操作对象的数据值或以符号表示的数据或地址值形 式上操作数可以是常数、已用伪指令赋值的标号或表达式两 个操作数之间必须用逗号“,” (半角)分开具体规定如下:(1) 常数可以是二进制、八进制、十进制、十六进制数,也 可以用被定义过的字符串或标号表示,若是ASCII码,可以由 单引号标出该字符表示2) 符号是各种被定义过的符号字符串或宏定义符3) 表达式是由常数、括号和各种算术运算符号按一定的规 则组合而成PICmcu汇编语言格式 - 注释字段注释字段:用来对程序作一些注释说明,便于人们阅读程序 。

      在注释时,一般应该说明指令的作用(而不是它的 功能)和执行的条件,特别注意说明程序在做什么, 而不是说明该指令在做什么在用到子程序时,要说明子程序的入口条件和出 口条件以及该程序完成的功能和作用注释字段通常用分号“;”(半角)与其它部分相隔 注释字段不是程序功能部分,汇编程序检测到分 号时,其后面的字符都不作处理PICmcu汇编语言格式-伪指令伪指令用来编写汇编语言源程序的语句,主要是指令助记符,其次 就是伪指令所谓伪指令就是“假”指令的意思,不是单片机的指 令系统中的真实指令 伪指令与指令系统中的助记符的不同之处是没有机器码与它 对应当源程序被汇编成目标程序时,目标程序中并不出现这些 伪指令的代码,它们仅在汇编过程中起作用伪指令是程序设计人员向汇编器发布的控制命令,告诉汇编 器如何完成汇编过程和一些规定的操作,以及控制汇编器的输入 、输出和数据定位等PICmcu汇编语言格式-伪指令(续)汇编器 MAPSM 可以使用的伪指令有四类:数据伪指令-用于控制程序存储器的分配和数据名称的定义 等; 例如:CBLOCK、#DEFINE、EQU、SET、DB、 INCLUDE、RADIX、… 列表伪指令-用于控制MPASM产生的列表文件(.LST)的格式 ; 例如:TITLE、LIST、_CONFIG、PAGE、… 控制伪指令-用于控制汇编的过程和路径,即条件汇编; 例如:ORG、END、IF、ELSE、ENDIF、IFDEF、 WHILE、ENDW、… 宏汇编伪指令-用于控制宏定义体的运行和数据定位 ; 例如:MACRC、ENDM、LOCAL 、… PICmcu汇编语言格式-伪指令说明下面,介绍几条最最常用的伪指令:(1)INCLODE -入外部源文件格式:INCLUDE “文件名“INCLUDE 说明:用于把指定文件读入源程序中作为源程序代码的一部分。

      文件名必须用双引 号或尖括号给出,如果被指定文件非当前工作目录下,则需要指令完整的路径举例:includeinclude”c:\PIC\PIC16C74.EQU”(2) EQU -对标号赋值格式:EQU说明:使 EQU 两端的8位值相等,即给标号赋予一个特定值或者说是给标号定义一 个数值格式中的符号名通常是代表寄存器名称或专用常数的一个字符串, “表达式”通 常是一个不大于8 Bit 二进制数的数值一个符号名一旦由EQU赋值,其值就固定下来了 ,不能再被重新赋值,这点与SET伪指令不同举例:COUNT EQU0X20 ;COUNT=0X16 PICmcu汇编语言格式 -伪指令说明(续)(3)#DEFINE -定义文本替换标号格式:#DEFINE[]说明:用于定义文本替换标号,在汇编时把源代码中的替换成若空缺,将对产生一个内部标记定义,此定可用于伪指令 IFDEF举例: #DEFINE LINGHT 0X17,5 在使用时:BSF LINGHT ;置0X17寄存器的位。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.