PAGE1
PAGE1
汇编语言编程入门
1.汇编语言简介
汇编语言是一种低级编程语言,介于机器语言和高级语言之间。它与特定的处理器架构紧密相关,因此在学习汇编语言时,需要了解目标处理器的指令集和架构。对于Microchip系列的PIC18单片机,汇编语言是编写高效、紧凑代码的重要工具,尤其适用于对时间和资源要求较高的嵌入式系统。
汇编语言的主要特点包括:
直接控制硬件:可以精确地控制寄存器和内存。
高效:生成的机器码通常比高级语言更紧凑、更快。
低级:与硬件紧密相关,需要对硬件有深入的理解。
复杂:编写和调试难度较大,但对性能优化有显著效果。
2.PIC18汇编语言基础
2.1指令格式
PIC18单片机的汇编语言指令通常由以下几个部分组成:
操作码(Opcode):指定要执行的操作。
操作数(Operand):指定操作的对象或参数。
注释:以分号;开头,用于解释代码的功能。
例如:
MOVF0x01,W;将寄存器0x01的值复制到W寄存器
2.2寄存器
PIC18单片机有多种寄存器,包括:
工作寄存器(W):用于临时存储数据,类似于CPU中的累加器。
文件寄存器(FileRegisters):用于存储变量,地址范围从0x00到0xFF。
特殊功能寄存器(SpecialFunctionRegisters,SFR):用于控制硬件功能,例如定时器、中断控制等。
2.3常用指令
数据传输指令:
MOVF:复制寄存器的内容。
MOVWF:将W寄存器的内容复制到文件寄存器。
CLRF:清空文件寄存器。
CLRW:清空W寄存器。
算术和逻辑指令:
ADDWF:将W寄存器的内容与文件寄存器的内容相加。
SUBWF:将W寄存器的内容从文件寄存器的内容中减去。
ANDWF:将W寄存器的内容与文件寄存器的内容按位与。
IORWF:将W寄存器的内容与文件寄存器的内容按位或。
XORWF:将W寄存器的内容与文件寄存器的内容按位异或。
控制转移指令:
GOTO:无条件跳转。
CALL:调用子程序。
RETURN:从子程序返回。
RETFIE:从中断服务程序返回。
2.4汇编语言程序结构
一个典型的PIC18汇编语言程序包括以下几个部分:
定义段:定义数据段和代码段。
初始化段:设置初始状态,例如配置寄存器。
主程序段:包含主要的逻辑和功能。
子程序段:包含可重用的函数。
中断服务程序段:处理中断事件。
3.汇编语言编程实例
3.1LED闪烁程序
3.1.1硬件连接
假设我们使用一个PIC18F4550单片机,将一个LED连接到RB0引脚,并通过一个1kΩ的电阻连接到地。
3.1.2代码实现
;定义段
LISTP=18F4550
INCLUDEP18F4550.inc
;配置特殊功能寄存器
CONFIGMCLRE=OFF
CONFIGFOSC=INTOSCIO
CONFIGWDTE=OFF
CONFIGPWRTE=OFF
CONFIGCP=OFF
CONFIGBOREN=OFF
CONFIGLVP=OFF
CONFIGWRT=OFF
CONFIGDEBUG=OFF
CONFIGFCMEN=OFF
CONFIGIESO=OFF
;定义常量
RB0_TRISEQU0x06
PORTBEQU0x07
DELAY_COUNTEQU0x20
DELAY_TEMP1EQU0x21
DELAY_TEMP2EQU0x22
;初始化段
ORG0x0000
GOTOSTART
;中断向量
ORG0x0008
GOTOISR
;主程序段
START
;配置RB0为输出
CLRFRB0_TRIS
;初始化延时计数器
MOVLW0xFF
MOVWFDELAY_COUNT
MOVLW0xFF
MOVWFDELAY_TEMP1
MOVLW0xFF
MOVWFDELAY_TEMP2
MAIN
;点亮LED
BSFPORTB