建立先进理念和体系,创造更好技术和工艺,开创不凡业绩和局面

当前位置:首页>PCB设计技术>浏览正文

编程PIC单片机风格和格式

来源:龙人计算机研究所 作者:站长 时间:2011-05-13 10:10:15

  首先我们来看一段程序:
  Tittle ‘Input.asm’ ;标题
  ;这是一个简朴的输入实验
  include
  COUNT EQU 20H ;定义20H寄存器名为COUNT
  ORG 0 ;程序区将从0000H开始装载
  GOTO START
  ORG 4 ;间断进口
  GOTO INTEN ;间断发生时跳转到INTEN
  ORG 10 ;START将从第10行开始
  START
  ……
  MAIN
  ……
  GOTO MAIN
  INTSEVER
  ……
  RETFIE ;间断返回
  END ;程序结束伪指令,不能少!
  事实上汇编程序并没有固定的格局,但是它的各部门是有一定的位置铺排的,习惯上依次为:
  ①程序标题:用Tittle伪指令定义,可缺省;
  ②程序注释:请留意必需在程序说明及注释部门的内容前面用“;”号,否则将会泛起编译错误。程序说明及注释部门均可缺省;
  ③调用到的.inc文件:用include伪指令来调用。通常.inc文件是与单片机型号相对应的,包括了一些特殊寄存器的定义等内容。PIC单片机各种型号的.inc文件在MPLAB目录中就能找到,不需要自己编写。假如被调用的.inc文件遗失,编译时将会泛起编译错误;
  ④通用寄存器定义:用EQU伪指令定义,格局为“寄存器名称 EQU 寄存器标号”,寄存器名称要顶格写。这是程序编写职员为所用到的通用寄存器起的名字,对应了一个实际的通用积压器地址;
  ⑤宏定义:在上面的程序中没有用到宏,缺省;
  ⑥程序初始化:START部门;
  ⑦主程序:MAIN部门;
  ⑧子程序:如本程序的INTSEVER部门。有时候会将子程序放在初始化程序的前面,例如一些查表程序等;
  ⑨程序结束:END语句,不可缺省。
  以上的部门构成了一个完整的PIC汇编程序。在程序编写过程中需要留意的题目我以为有以下几点:
  1、编程中首先要避免使用直接地址对寄存器操纵。使用直接地址来操纵寄存器会使程序的可读性大大的降低,一来轻易和数据发生搅浑,二来也不轻易更改。以上面的程序来说吧,寄存器“COUNT”的直接地址是20H。如果调试过程中我溘然发现调用到COUNT的子程序中其它的寄存器都是在BANK1的,我为了调用它需要经常切换BANK极不利便,因此要将它的地址改为90H。那么现在我只要将定义的语句改为“COUNT EQU 90H ”就可以了,如果我没有这样定义,那么我只能去程序中查找20H然后逐一改为90H……
  2、留意子程序标号的可读性。固然这些标号在被编译之后是没有区别的(当然了,地址仍是不一样的),只是编程职员用以识别的标记(好比:main通常被使用作为程序的主轮回标号,而start则常被用做程序初始化的标号,可以说,标号的命名情况与程序的编译、运行是没有太大的影响的。如果你的main标号被改成loop,编译结果也是一样),但是它们的公道与否将会影响到程序的调试。通常来讲,标号最好是能一目了然,甚至要能概括这段程序处理的内容。好比延时程序用dealy,间断服务用intsever等等。这样一来程序的可读性高了,以后要修改调试起来也很利便。
  3、程序结构要公道。