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 100kHz5?CPU configuration
6. (it’s a 16F84,RC oscillator?
7. watchdog timer off,power-up timer on)8?processor 16F849?include
10. _config_RC_OSC&_WDT_OFF&_PWRTE_ON11?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 loop21?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,表明程序到此结束。