—— —— —— 技术资料下载中心

>> PIC单片机原理 \

PIC系列8位单片机源程序的组成
PIC系列单片机的源程序是指PIC的助记符指令编写的程序(汇编语言程序)。这里将对PIC源程序的格式要求和其源程序的建立或书写作简要的介绍。 一般来说对PIC的源程序格式并没有要求统一的编写形式，用户可以根据习惯来编写，当然编写时应遵守汇编的一些规范。下面以PIC16F84芯片点亮一支发光二极管的汇编程序实例，介绍一种源程序编写的方法(格式)，以供实际应用时参考。 源程序清单 1File TURNON.ASM 2Assembly code for PIC16F84 microcontroller
3Turns on an LED connected to B0
4Uses RC oscillator,about 100kHz
5CPU configuration
6(it’s a 16F84,RC oscillator
7watchdog timer off，power－up timer on)
8processor 16F84
9include <p16F84inc>
10_config_RC_OSC＆_WDT_OFF＆_PWRTE_ON
11Program
12org 0；start at address 0
13At startup，all ports are inputs
14Set Port B to all outputs
15movlw B‘00000000’；w=binary 00000000
16tris Portb　　　　 ；copy w to port B control reg
17Put a 1 in the lowest bit of port B
18movlw B‘00000001’；w=binary 00000001
19movwf portb　　　　；copy w to port B itself
20Stop by going into an endless loop
21fin：goto fin
22end ；program ends here
现对源程序清单逐行加以说明。
第1行为文件(File)名，这里取名TURNONASM。TURNON意指一个接通(即接通LED)程序。ASM是源程序的扩展名。
第2行说明是由适用于PIC16F84微控制器的汇编码编写的源程序。
第3行说明程序用途是接通PIC16F84 PORTB的B0位LED。
第4行说明由RC振荡器供给时钟，频率约为100kHz。
第5、6、7行说明对16F84 CPU的结构设置(用RC振荡器，看门狗定时器即watchdog timer关，上电power－up定时器开，关于16F84的结构设置，后面将详谈)。
第8、9、10行为伪指令。这是用来向汇编程序提供有关如何完成汇编的控制命令信息，它既是汇编过程的控制指令，也是汇编程序的操作指令。在这里8、9、10行还向汇编程序说明，单片机用的是16F84，用RC振荡器、看门狗定时器关断不用，但上电定时器接通使用。对照5、6行，可见二者内容相同，但一个是注释，专门为用户说明，另一个是伪指令，是为PC机的汇编程序提供命令信息。
第11行又是注释，说明程序主体由此开始。
第12行说明程序存放在由地址0开始的16F84单片机中的程序存贮器中，也是一条伪指令。
第13、14两行为注释，说明后续的一段指令(两句)的作用，即在启动时，所有端口为输入，随即将B口设定为全输出(即各位均为输出)。
第15行是汇编语言编写的第一条指令，即对二进制(B)数“00000000”存入工作寄存器W。
第16行将W寄存器的内容(即00000000)传送到B口控制寄存器，使B口成为输出口。15、16行均带有注释。　　第17行为注释，说明下面的二条指令是使B口的最低位为1。
第18行的指令将二进制数00000001送入工作寄存器W，第19行指令则将W寄存器的内容复制到B口，则B口的最低位B0为高电平，其余各位则为低电平，使接到B0位的LED发光。
第20行又是注释。说明下面的指令将使B0位为高的状态继续下去。
第21行的指令为无限循环语句，维持B1口输出为高不变。
第22行是伪指令END，表明程序到此结束。
将清单所列程序在PC机上用一种名为MPASM的汇编软件进行汇编后，如无错误，即可获得扩展名为HEX的相应机器码文件，借助编程器将该文件的相应内容烧入PIC16F84的程序存储器内，并将编程好的芯片插入前述的电路板中，再加上电源，即可点亮16F84 B0位的LED。

成都　卫东

知识竞赛试题：
14上文中的程序是以PIC16F84芯片点亮一只LED按MPLAB集成开发软件格式编写的源程序清单。若仍用16F84在B口的RB1、RB3、RB6和RB7位分别点亮一只LED，请列出其源程序清单，并绘出硬件电路图。
说明：本版第14期知识竞赛试题中(1) ～(8)延时程序第(6)条中的DECTSZ应改为DECFSZ。第十二期中的第7题应为第9题。

[ 返回 ]