我们在建立PIC单片机的源程序时,若操作数是常数,必须按下表的方式进行书写,否则汇编不会成功。
在书写源程序有关常数时,不一定选取表1中的一种(制式)数,应由源程序指令的功能,决定其应该使用的进制数。当PIC单片机用作彩灯控制器或用发光二极管LED作输出口的演示程序时,应选取二进制数给PIC单片机输出口送数,这种二进制数最为直观。若用PIC单片机制作定时器,因秒到分、分到时是60进制数,时到日是24小时进制数,此时,在设定源程序中的常数时,选取十进制数最为直观、物理意义最清楚、查找程序最方便。所以读者会看到,在今后介绍较长的实用源程序中,表达的常数往往是多种进制的。此外,在建立PIC单片机的源程序时,常需进行简单的加、减运算,这时记住表2的二进制、十六进制和十进制数之间的关系,对计算十分有用。
在下表中,仅列出了十进制数的0~15,十六进制数的0~F和二进制数的0000~1111等相互间对应值的转换关系。因PIC单片机内部的寄存器是8位的,所以给某个寄存器送数时,最多可送8位二进制数,其最大值为B’llllllll’;可送两位十六进制数,其最大值为OXFF;可送3位十进制数,其最大值为255。
在实际应用中,两位十六进制数到十进制数的转换用的较多,其转换方法如下:
例1:OXBC对应的十进制数是多少?
解:OXBC转换成十进制数一B×16+C(转换),其中B、C是表2中的十六进制数B、C对应的十进制制数11和12,则
由实例计算可见,要将两位十六进制数转换成十进制数的方法是,只需从表2中,查出十六进制数的高位与十进制数的对应值,再乘16(16是十六进制数的“权”)、加其低位对应的十进制数即可。例如OX67转换成十进制数应为
由此可见,牢记上表十分重要。
在建立PIC单片机源程序时,首先会用到伪指令。伪指令是用来给汇编程序提供汇编的控制功能、完成汇编程序作各种准备工作的。与汇编指令不同,它没有机器码(目标码)与其对应,所以仅在源程序的汇编过程中起一定作用。一旦汇编结束,伪指令的功能即告完成。但是,伪指令是建立PIC单片机源程序不可缺少的组成部分,否则汇编不会成功。伪指令可分四类,现分别介绍如下:
(1)列表伪指令。实例:表达式LIST。功能,可作源程序中PIC单片机的选项和控制其汇编过程。常用于源程序的起始列,如:
(2)数据伪指令。实例(a),表达式#INCLUDE。功能,在MPLAB中调用系统指定的所有文件(若MPLAB的早期版本中,没有指令中需要的文件,则不能汇编)。如:
实例(b),表达式EQU。功能,可作为标号赋值或选择PIC单片机内部寄存器单元的地址,如
(3)控制伪指令。实例(a),表达式ORG。功能,可作PIC单片机程序存放的起始地址和复位地址,
实例(b),表达式END。功能,程序结束指令。这条指令放在PIC单片机源程序的结束行。若END之后还有语句,将被视为无效;若源程序结束无END,则汇编不会成功。
若小结上述列举的几条伪指令,可得出在建立PIC单片机源程序时,必须按下述格式进行(这里以PIC16F84为例)
上一篇:PIC单片机的指令和源程序