时间: 2024-07-10 17:04:39 | 作者: 华体会app怎么样
本身不会产生可执行的汇编指令,但它们能帮组“管理”你编写的程序,其实用性和必要性绝不亚于
源程序的编写主要是用这些基本的指令实现你的控制任务。但为增加源程序的可读性和可维护性,我们引入了伪指令的概念。伪指令本身不会产生可执行的汇编指令,但它们能帮组“管理”你编写的程序,其实用性和必要性绝不亚于35条正真的汇编指令。我们在此着重介绍最常用的几种伪指令。
#include伪指令的作用是把另外一个文件的内容全部包含复制到本伪指令所在的位置。被包含复制的文件可以是任何形式的文本文件,当然文件中的内容和语法结构必须是MPASM能够识别的。最经常被“include”的是针对PIC单片机内部特殊功能寄存器定义的包含头文件,在MPLAB安装后它们全部放在路径“C:ProgramFilesMPLABIDEMCHIP_Tools”下,每一个型号的PIC单片机都有一个对应的预定义包含头文件,扩展名是“”。除了一些符号预定义文件,你也可以把现有的其它程序文件作为一个代码模块直接“包含”进来作为自己程序的一部分。见例3-01。
#include”math.asm”把现有的程序文件包含进来作为自己代码的一部分
请注意被包含文件的引用方式。一种是《》尖括号引用,这种引用意味着让编译器去默认的路径下寻找该文件,MPASM默认的寄存器预定义文件存放路径即为上面提及的MPLAB安装后的目录;另一种是””双引号引用,这种引用方式的意思是指示编译器从引号中指定的全程文件路径下寻找该文件。例3-01中”math.asm”没有指定路径,即意味着在当前项目路径下寻找math.asm文件。如果编译器找不到被包含的文件,将会有错误信息告知。请在你的源程序中尽量用MPLAB标准头文件定义的寄存器符号。一来这些被定义的寄存器符号和芯片数据手册上的描述一一对应,理解起来即直观又容易;二来如果用你自己定义符号就缺乏一个大家能一起交流的标准平台,其他人要解读你的代码时将费时费力。故例3-01中的首行#include包含引用伪指令可以说是PIC单片机程序编写时的标准必备。
list伪指令可以设定程序编译时的一些信息,例如所选单片机的型号,编译时选择的缺省数制等。例如:
如果程序开发时使用项目管理的模式,则所有list伪指令可以描述的参数项都可以在项目的设定选项中通过对话框的形式设定并保存。在此只需对list伪指令稍作了解即可。
此伪指令的及其重要的作用是把芯片的配置字设定在源程序中,请参阅2.5节的详细说明。建议我们大家尽量用此伪指令把芯片的配置字写在程序中。
PIC单片机中有一处非常特殊的标记单元。它独立于任何其它存储器,唯一的作用就是作为一个标记。此标记值无法用软件读到,读取和写入的方法只有通过编程器实现。此标记值没有读保护,你可通过它存放程序的版本或日期等信息。若需要,则可以用伪指令__idloc在程序中定义具体的值。
和__config伪指令定义的配置字一样,用__idloc定义的芯片标记值在最后也会存放在HEX文件中,这就要求编程器能够解析它。
的用途是控制编译信息的输出显示。编译器在编译你的源程序时会提供很多信息,有些信息是你必须要处理的,例如错误信息(Error),只要有错误信息存在,你的程序将永远没办法完成编译;有些可能只要关注,例如警告信息(Warning);也有一些可能你根本就不感兴趣,它们只是一些提示信息(Message)而已。注意出现警告和提示信息时将不会中止编译器的编译工作,你的程序将被编译并最终产生HEX文件。图3-14中显示了一个程序编译后的各种信息实例,其中既有错误信息,也有警告和提示信息。我们大家可以用errorlevel伪指令来控制输出信息的级别,或刻意关闭/打开一些提示信息。
编译信息的输出显示级别有三种,分别是0、1和2。级别0代表显示所有信息,包括各种错误、警告和提示信息,如图3-14所示;级别1代表显示错误和警告信息,忽略提示信息;级别3代表只显示错误信息而忽略警告和提示信息。在任何一个大的级别上还可以对某些信息单独设定显示或关闭。每个信息都有一个识别标号,见图3-14中信息项“[]”中的数字,打开或关闭某类信息只需在errorlevel伪指令中引用信息识别标号,并在其前面用“+”或“-”号,即代表打开或关闭这一类信息,例如:
用#define伪指令定义符号后,可使程序中的变量或指令变得更具实际意义,也使程序变得更易维护。
指令“btfssPORTB,7”和“btfssKEY1”在事先用了例3-05中的#define后编译的结果是一样的,但明显地后者看起来更容易理解,一看就知道这是在测试编号为KEY1的一个按键。
传送类MOVFF,dF→d将F寄存器的内容传送到F本身(d=1)或W(d=0)(影响状态位)Z
算术运算类ADDWFF,dF+W→dW寄存器的内容和F寄存器的内容相加,结果存入F(d=1)或W(d=0)中C,DC,Z
逻辑运算类ANDWFF,dF∧W→dW寄存器的内容和F寄存器的内容相与,结果存入F(d=1)或W(d=0)中Z
程序跳转类INCFSZF,dF+1→d,结果若为0则跳一步F寄存器的内容加1后,结果存入F本身(d=1)或W(d=0)。如结果为0则跳过下一条指令,否则顺序执行-
控制类SLEEP-进入睡眠方式该指令执行后,单片机进入低功耗睡眠模式,时基电路停振TO,PD
随着Xsens 在最新惯性导航产品中加入 RTK 功能,厘米级高精度将成为主流
Microchip推出新型PIC单片机系列新产品,以更简便方式添加Bluetooth低功耗连接功能
随着Xsens 在最新惯性导航产品中加入 RTK 功能,厘米级高精度将成为主流