PAGE1
PAGE1
PIC18系列架构与工作原理
1.引言
在上一节中,我们已经对PIC18系列单片机的基本概念和应用领域进行了简要介绍。本节将深入探讨PIC18系列单片机的架构与工作原理,帮助读者更好地理解其内部结构和运行机制。通过本节的学习,您将能够掌握PIC18系列单片机的基本架构、指令集、存储器结构和中断系统等方面的知识,为后续的编程和应用开发打下坚实的基础。
2.基本架构
2.1硬件架构
PIC18系列单片机采用了哈佛架构(HarvardArchitecture),这是一种将程序和数据存储在独立的存储空间中的架构。这种架构使得程序存储器和数据存储器可以并行访问,从而提高了数据处理的效率。
2.1.1哈佛架构的特点
独立的程序存储器和数据存储器:程序存储器用于存储指令,数据存储器用于存储数据。
并行访问:CPU可以在同一时钟周期内同时访问程序存储器和数据存储器。
固定的指令长度:PIC18系列单片机的指令长度为14位或16位。
2.1.2主要组成部分
中央处理单元(CPU):负责执行指令和数据处理。
程序存储器:用于存储用户程序和常量数据。
数据存储器:用于存储变量和寄存器。
输入/输出(I/O)端口:用于与外部设备进行数据交换。
定时器/计数器:用于定时或计数功能。
中断系统:用于处理外部中断请求。
特殊功能寄存器(SFR):用于控制单片机的各种功能。
2.2指令集
PIC18系列单片机的指令集包括了多种类型的指令,如数据传输指令、算术逻辑运算指令、位操作指令、控制转移指令等。了解这些指令的用法和功能,是进行程序开发的基础。
2.2.1数据传输指令
MOV:将一个寄存器或立即数的值移动到另一个寄存器。
MOVF:将一个寄存器的值移动到另一个寄存器或WREG寄存器。
MOVWF:将WREG寄存器的值移动到指定的寄存器。
示例代码:
;将immediate值0x55移动到寄存器FSR0L
MOV0x55,FSR0L
;将寄存器FSR0L的值移动到WREG
MOVFFSR0L,W
;将WREG的值移动到寄存器PORTA
MOVWFPORTA
2.2.2算术逻辑运算指令
ADD:将指定寄存器或立即数的值加到WREG寄存器。
SUB:将指定寄存器或立即数的值从WREG寄存器中减去。
AND:将指定寄存器或立即数的值与WREG寄存器进行按位与操作。
OR:将指定寄存器或立即数的值与WREG寄存器进行按位或操作。
示例代码:
;将寄存器PORTB的值加到WREG
ADDPORTB,W
;将立即数0x10从WREG中减去
SUB0x10,W
;将寄存器TRISA与WREG进行按位与操作
ANDTRISA,W
;将立即数0x0F与WREG进行按位或操作
OR0x0F,W
2.2.3控制转移指令
GOTO:无条件跳转到指定的程序地址。
CALL:调用子程序。
RETURN:从子程序返回。
RETFIE:从中断服务子程序返回,并清除中断标志。
示例代码:
;无条件跳转到程序地址0x0010
GOTO0x0010
;调用子程序subRoutine
CALLsubRoutine
;从子程序返回
RETURN
;从中断服务子程序返回,并清除中断标志
RETFIE
2.3存储器结构
PIC18系列单片机的存储器结构分为程序存储器和数据存储器两部分。程序存储器用于存储用户程序和常量数据,数据存储器用于存储变量和寄存器。
2.3.1程序存储器
Flash存储器:用于存储用户程序,支持多次编程和擦除。
EEPROM存储器:用于存储非易失性数据,如配置参数。
2.3.2数据存储器
RAM:用于存储变量和寄存器。
特殊功能寄存器(SFR):用于控制单片机的各种功能,如定时器、中断、I/O端口等。
示例代码:
//初始化Flash存储器
voidinitFlash(){
//设置Flash存储器的访问模式
NVMCON=0x00;//清除NVMCON寄存器
NVMKEY=0xAA;//写入第一个密钥
NVMKEY=0x55;//写入第二个密钥
NVMCON=0x40;//设置为编程模式
__builtin_write_NVM();//触发编程操作
}
//读取EEPROM存储器中的数据
uint8_treadEEPROM(uint16_taddress){
EEADR