基本信息
文件名称:Microchip 系列:PIC18 系列_(3).PIC18系列编程模型.docx
文件大小:21.2 KB
总页数:11 页
更新时间:2025-06-23
总字数:约5.71千字
文档摘要

PAGE1

PAGE1

PIC18系列编程模型

在上一节中,我们已经了解了PIC18系列的基本架构和特点。本节将重点介绍PIC18系列的编程模型,包括其存储器结构、寄存器配置、指令集和编程方法。通过本节的学习,您将能够更好地理解如何在PIC18系列单片机上进行高效编程。

存储器结构

PIC18系列单片机的存储器结构是分段的,主要包括以下几个部分:

1.程序存储器(ProgramMemory)

程序存储器用于存储单片机的指令。PIC18系列单片机的程序存储器通常使用闪存(FlashMemory),可以多次编程和擦除。程序存储器的地址空间通常为16位,最大可达64KB。

2.数据存储器(DataMemory)

数据存储器用于存储程序运行时的数据,包括寄存器、变量和栈等。PIC18系列单片机的数据存储器分为以下几个部分:

通用寄存器(GeneralPurposeRegisters,GPR):用于存储程序中的变量和临时数据。这些寄存器通常位于RAM中,地址空间为14位。

特殊功能寄存器(SpecialFunctionRegisters,SFR):用于控制单片机的各种功能,如定时器、中断、I/O端口等。这些寄存器通常位于特定的地址空间中,可以通过读写操作进行配置。

间接寻址寄存器(IndirectAddressingRegisters):用于访问数据存储器中的任意地址。PIC18系列单片机通常有两个间接寻址寄存器,分别为FSR0和FSR1。

3.配置寄存器(ConfigurationRegisters)

配置寄存器用于设置单片机的工作模式、时钟源、复位配置等。这些寄存器在程序的开始部分进行配置,并在运行时保持不变。

4.EEPROM存储器

EEPROM存储器用于存储需要长期保存的数据,如校准值、配置参数等。EEPROM存储器可以在程序运行时进行读写操作。

寄存器配置

1.特殊功能寄存器(SFR)

特殊功能寄存器(SFR)是PIC18系列单片机中用于控制各种功能的重要寄存器。每个SFR都有特定的地址,并且可以通过读写操作进行配置。以下是一些常用的SFR及其功能:

TMR0H和TMR0L:定时器0的高8位和低8位寄存器。

T0CON:定时器0控制寄存器。

PORTA和TRISA:I/O端口A的数据寄存器和方向寄存器。

PORTB和TRISB:I/O端口B的数据寄存器和方向寄存器。

INTCON:中断控制寄存器。

2.配置寄存器(ConfigurationRegisters)

配置寄存器用于设置单片机的初始配置,包括振荡器类型、复位配置、电源管理等。以下是一些常用的配置寄存器:

CONFIG1L和CONFIG1H:用于设置振荡器类型、看门狗定时器、电源管理等。

CONFIG2L和CONFIG2H:用于设置复位配置、代码保护、调试模式等。

指令集

PIC18系列单片机的指令集是RISC(精简指令集计算机)架构的,包含大约35条指令。这些指令可以分为以下几类:

1.数据传送指令

数据传送指令用于在寄存器之间、寄存器和存储器之间、以及存储器之间进行数据的移动。常见的数据传送指令包括:

MOVF:将文件寄存器的内容移动到W寄存器或另一个文件寄存器。

MOVF:将W寄存器的内容移动到文件寄存器。

MOVWF:将W寄存器的内容移动到文件寄存器。

MOVLW:将立即数移动到W寄存器。

2.算术和逻辑指令

算术和逻辑指令用于执行基本的数学运算和逻辑运算。常见的算术和逻辑指令包括:

ADDWF:将W寄存器的内容与文件寄存器的内容相加,并将结果存入文件寄存器。

SUBWF:将文件寄存器的内容减去W寄存器的内容,并将结果存入文件寄存器。

ANDWF:将W寄存器的内容与文件寄存器的内容进行按位与运算,并将结果存入文件寄存器。

IORWF:将W寄存器的内容与文件寄存器的内容进行按位或运算,并将结果存入文件寄存器。

3.控制转移指令

控制转移指令用于改变程序的执行顺序。常见的控制转移指令包括:

GOTO:跳转到指定的程序地址。

CALL:调用子程序。

RETURN:从子程序返回。

RETFIE:从中断服务子程序返回。

4.位操作指令

位操作指令用于对特定的位进行设置、清除或测试。常见的位操作指令包括:

BSF:设置文件寄存器中的某个位。

BCF:清除文件寄存器中的某个位。

BTFSS:测试文件寄存器中的某个位,如果位为0,则跳过下一条指令。

BTFSC:测试文件寄存器中的某个位,如果位为1,则跳过下一条指令。

5.字节操作指令

字节操作指令用于对字节进行操作。常见的字节操作指令包括:

CLRF:清除文件寄存器中的内容。

CLRW:清除W寄存器中的内容。

CLRWDT:清除看门狗定时器。