历史上的今天
今天是:2025年02月20日(星期四)
2020年02月20日 | 简述PIC单片机伪指令
2020-02-20 来源:eefocus
简介:阅读一些PIC单片机的源程序开始段,会发现有一些特殊指令助记符,这些助记符与指令系统的助记不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令。
伪指令在源程序中的作用是为完成汇编程序作各种准备工作的(实际上是给PC机汇编的注释),这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。
在汇编程序MPASM中,有四类伪指令:数据伪指令、列表伪指令、控制伪指令和宏汇编指令。
现在,我们将对前两类中的常用伪指令予以说明,后两类伪指令等到在具体程序中出现时,再加以说明。
(1)ORG 存放单元起始地址
格式:<标号>ORG<地址表达式>
说明:ORG用于指定该伪指令后面的源程序存放的起始地址,也就是汇编后的目标机器码存放的首地址。若ORG后面不带地址参数,则默认为0。若ORG带标号,则地址参数也赋值给该标号。在一个源程序中,可以根据需要多次使用ORG伪指令来定位。
例:ORG 1FFH DELAY
GOTO MAIN MOVLM 2
;…… ……
ORG 0 END
右排接左
说明:指令末的伪指令END是通知汇编程序MPASM结束对源程序(?ASM)的汇编,即使后面还有语句,也不再予以汇编。在一个源程序中必须有END伪指令,而且只能有一个END,且放在整个程序的最后。
(2)EQU 是对寄存器f和标号赋值
格式:<标号>EQU<表达式>
说明:给标号或寄存器赋值,标号一旦由EQU赋值,其值便不能再重新定义。
举例:label EQU 0x20
注意:这里操作数中的0x表示十六进制,即0x20相当于20H。
(3)LIST 列表选择指令
格式:LIST<选择项>,…,<选择项>
说明:用来设置各种汇编参数以控制汇编过程,或对列表文件进行格式化。此伪指令的所有参数只能在一行内完成,参数的数值都用十进制数设置。
LIST列表选择伪指令可以选用的部分参数如下。
参数名默认值作用
f=<格式> 1NHX8M;规定固化编程文件格式(INHX16,INHX32或INHX8M)1NHX8M适于把目标码输入到大多数的EPROM编程器中。
P=<类型> 无设置单片机类型,如16F84
r=<基数> HEX 设置常数数制的基数(如hex十六进制;dec十进制等)
例:LIST f=1NHX8M,r=DEC,P=16F84
(4)PROCESSOR<处理器类型>
说明:用于选择所用单片机的型号。
(5)INCLUDE 包含其它外部源文件
格式:INCLUDE “文件名”
INCLUDE <文件名>
说明:用于把指定文件读入源程序中作为源程序代码的一部分,直到检测到文件结束符时为止,再恢复到原源程序中的代码处。此伪指令可允许嵌套使用,最多可嵌套6层。文件名必须用双引号或尖括号给出。
史海拾趣
|
企业名称: 东莞市康大五金电子厂 营业执照: 4419002356421 工厂地址: 东莞万江区共联管理区 本公司成立于1998年,港资独资企业; 公司已通过ISO9001:2000认证; 公司员工超过7000人,实行人性化管理; 所有职位包食宿,并提 ...… 查看全部问答> |
|
作者:applevista 前两天,父亲在庙会上买了两个黑猫神牌电子驱蚊灭鼠器,5块一个。 前两年,见过这样东西,样子不一样,也提醒父亲这是骗人的,还是被骗了。 要是一块一个倒也不错,它其实就是一个简单的彩灯。 这个与卫星增台器、节电器一样 ...… 查看全部问答> |
|
请教各位高手 我在画原理图时(orcad) 有下列两个疑问: 1、请问处理器(在page1上)上的一个引脚如A1需要连接两个外围芯片x,y 可是芯片X我是用层次法(层次图上层在page1上)画的,与芯片y的连接是用平坦式画法 ...… 查看全部问答> |
|
**** Begin Erase/Program/Verify Operation. *** Erase/Program/Verify Operation in progress... Erase operation in progress... Erase operation was successful. Program operation in progress... Flash API Error #31: There was a Ze ...… 查看全部问答> |
|
ARM处理器寻址方式 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,ARM 处理器有9种基本寻址方式。 寄存器寻址 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直 接取出寄存器值操作。 ...… 查看全部问答> |
|
本人想用stm32f207VG做下外扩NAND flash,先读取ID不行,GPIO配置如下: RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | ...… 查看全部问答> |




