1/109第三章STC15F2K60S2单片机的基本结构本章学习目标掌握STC15F2K60S2单片机的基本结构掌握单片机I/O口的使用掌握单片机应用系统的典型构成10:15:522/109一、单片机的内部结构单片微型计算机(简称单片机)在一片芯片上集成了前述微型计算机的功能结构,有些单片机不仅集成了CPU、存储程序和数据的存储器、I/O接口、定时/计数器等常规资源,而且还集成了工业测控系统中常用的模拟量模块。§3.1STC15F2K60S2单片机的基本结构10:15:523/109单片机产品8051内核是Intel8051系列单片机的基本标准,许多参考书上将这种单片机称为MCS-51系列单片机。MCS-51系列单片机的典型产品为8051,它有4K×8ROM,128字节RAM,2个16位定时/计数器,4个8位I/O口,一个串行口。二十世纪80年代,Intel将8051内核转让或出售给几家著名的IC厂商,如Philips,Atmel等。这样,8051单片机就变成众多制造厂家支持的,发展成为上百个产品的大家族。最常用的宏晶STC系列单片机,Atmel公司的AT89系列等51系列,等等。只要是8051内核的单片机,它们的最基本结构是相同的,并且,指令系统完全兼容标准8051单片机。10:15:524/109以目前市场上常见的8051内核单片机STC15F2K60S2为例,说明单片机的内部结构。STC12C5A60S2单片机主要集成了以下资源:增强型8051内核,单时钟机器周期,速度比传统8051内核单片机快8~12倍60KBFlash程序存储器;1KB数据Flash;2048字节的SRAM3个16位可自动重装载的定时/计数器(T0、T1、T2)可编程时钟输出功能至多42根I/O口线2个全双工异步串行口(UART)1个高速同步通信端口(SPI)8通道10位ADC3通道PWM/可编程计数器阵列/捕获/比较单元内部高可靠上电复位电路和硬件看门狗内部集成高精度R/C时钟,常温工作时,可以省去外部晶振电路。10:15:525/109XRAM1792字节串口1Port1锁存器RAM地址寄存器ISP/IAP程序存储器Port1驱动器控制单元定时器/计数器0/1/2RAM256字节堆栈指针程序计数器(PC)看门狗(WDT)SPIPCA/PWMALUPSWB寄存器ACCTMP1地址生成器串口2Port0,2,3,4,5锁存器Port0,2,3,4,5驱动器ADC8P1.0~P1.7P1.0~P1.7P0,P2,P3,P4,P5内部复位逻辑内部高精度R/C振荡器TMP2数据Flash存储器图3-7STC15F2K60S2单片机的内部结构图STC15F2K60S2单片机内部结构框图10:15:526/109STC15F2K60S2单片机的内部资源中央处理器(CPU)程序存储器(Flash)数据存储器(RAM)数据Flash存储器定时/计数器I/O接口通用异步串行通信接口(UART)中断系统SPI接口高速A/D转换模块PWM(或捕获/比较单元)看门狗电路电源监控片内RC振荡器等模块几乎包含了数据采集和控制中所需的所有单元模块,—————可称得上一个片上系统(SOC)10:15:527/1091、CPU结构单片机的中央处理器(CPU)由运算器和控制器组成。(1)运算器以8位算术/逻辑运算部件ALU为核心,加上通过内部总线而挂在其周围的暂存器TMP1、TMP2、累加器ACC、寄存器B、程序状态标志寄存器PSW以及布尔处理机组成了整个运算器的逻辑电路。10:15:528/109算术逻辑单元ALU:用来完成二进制数的四则运算和布尔代数的逻辑运算。累加器ACC又记作A:是一个具有特殊用途的8位寄存器,在CPU中工作最频繁,用来存放操作数和运算结果。寄存器B:是专门为乘、除法设置的寄存器,也是一个8位寄存器,用来存放乘法和除法中的操作数及运算结果,对于其他指令,它只作暂存器用。程序状态字(PSW):又称为标志寄存器,一个8位寄存器,用来存放执行指令后的有关状态信息,供程序查询和判别之用。10:15:529/109PSW中有些位的状态是在指令执行过程中自动形成的,有些位可以由用户采用指令加以改变。PSW的各位定义如下所示:位号D7D6D5D4D3D2D1D0符号CYACF0RS1RS0OVF1P10:15:5210/109CY(PSW.7):进位标志位当执行加/减法指令时,如果操作结果的最高位D7出现进/借位,则CY置“1”,否则清“0”。执行乘除运算后,CY清零。此外,CPU在进行移位操作时也会影响这个标志位。位号D7D6D5D4D3D2D1D0符号CYACF0RS1RS0OVF1P10:15:5211/109AC(PSW.6):辅助进位标志位当执行加/减法指令时,如果低四位数向高四位数产生进/借位,则AC置“1”,否则清零。位号D7D6D5D4D3D2D1D0符号CYACF0RS1RS0OVF1P10:15:5212/109F0(PSW.5):用户标志0。该位是由用户定义的一个状态标志。可以用软件来使它置“1”或清“0”,也可以由软件测试F0控制程序的流向。F1(PSW.1):用户标志1。该位是由用户定义的一个状态标志。与F0类似,可以用软件来使它置“1”或清“0”,也可以由软件测试F1控制程序的流向。位号D7D6D5D4D3D2D1D0符号CYACF0RS1RS0OVF1P10:15:5213/109RS1,RS0(PSW.4~PSW.3):工作寄存器组选择控制位,其详细介绍见后续内容。OV(PSW.2):溢出标志位。指示运算过程中是否发生了溢出,在执行指令过程中自动形成。位号D7D6D5D4D3D2D1D0符号CYACF0RS1RS0OVF1P10:15:5214/109P(PSW.0):奇偶标志位累加器ACC中1的个数为偶数,P=0;否则P=1。每个指令周期都由硬件来置“1”或清“0”。在具有奇偶校验的串行数据通信中,可以根据P设置奇偶校验位。位号D7D6D5D4D3D2D1D0符号CYACF0RS1RS0OVF1P10:15:5215/109布尔处理机——是单片机CPU中运算器的一个重要组成部分。功能:为用户提供丰富的位操作功能,有相应的指令系统,硬件有自己的“累加器”(进位位C,即CY),和自己的位寻址RAM和I/O空间,是一个独立的位处理机。大部分位操作均围绕着其累加器——进位位C完成。对任何可直接寻址的位,布尔处理机可执行置位、取反、转移、位的读写等操作。在任何可寻址的位(或该位内容取反)和进位标志C之间,可执行逻辑与、或操作,其结果送回到进位标志C。10:15:5216/109(2)控制器控制器是CPU的大脑中枢,包括定时控制逻辑、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP、RAM地址寄存器、16位地址缓冲器等。10:15:5217/109程序计数器PC是一个16位的程序地址寄存器,专门用来存放下一条需要执行的指令的内存地址,能自动加1。当CPU执行指令时,根据程序计数器PC中的地址从存储器中取出当前需要执行的指令码,并把它送给控制器分析执行,随后程序计数器中的地址自动加1,以便为CPU取下一个需要执行的指令码做准备。当下一个指令码取出执行后,PC又自动加1。这样,程序计数器PC一次次加1,指令就被一条条执行。10:15:5218/109堆栈主要用于保存临时数据、局部变量、中断或子程序的返回地址。STC15F2K60S2单片机的堆栈设在内部RAM中,是一个按照“先进后出”规律存放数据的区域。堆栈指针SP是一个8位寄存器,能自动加1或减1。当数据压入堆栈时,SP自动加1;数据从堆栈中弹出后,SP自动减1。复位后,寄存器默认值为07H,堆栈区在08H开始的区域。用户通常将堆栈区域用指令设置在内部RAM的80H~FFH之间。10:15:5219/109数据指针DPTR一个16位专用寄存器,由DPL(低8位)和DPH(高8位)组成。DPTR可以直接进行16位操作,也可分别对DPL和DPH按字节进行操作。STC15F2K60S2单片机有两个16位的数据指针DPRT0和DPTR1,这两个数据指针共用同一个地址,可通过设置辅助寄存器AUXR1中的DPS(AUXR1.0)位来选择具体使用哪一个数据指针。10:15:5220/1092、存储器的结构—STC15F2K60S2结构特点:程序存储器和数据存储器的寻址空间是分开的。结构划分:片内集成有4个物理上相互独立的存储器空间:程序Flash存储器、数据Flash存储器(EEPROM)、内部数据存储器和外部数据存储器。10:15:5221/109图3-8STC15F2K60S2单片机存储器配置示意图扩展数据存储器内部数据存储器程序Flash存储器特殊功能寄存器低128字节内部RAMFFH80H7FH00H0000H03FFH06FFH0000H60KBF000H0000H1KB程序Flash存储器数据Flash存储器1792字节扩展RAM高128字节内部RAM数据Flash存储器10:15:5222/109(1)程序Flash存储器功能:存放用户程序、数据和表格等信息。空间大小:STC15F2K60S2片内集成了60KB的程序Flash存储器,地址为0000H~F000H。单片机复位后,程序计数器PC的内容为0000H,从0000H单元开始执行程序。10:15:5223/109特殊单元在程序Flash存储器中有些特殊的单元,这些单元是中断服务程序的入口地址:0003H外部中断0中断服务程序的入口地址000BH定时/计数器0中断服务程序的入口地址0013H外部中断1中断服务程序的入口地址001BH定时/计数器1中断服务程序的入口地址0023H串行通信口1中断服务程序的入口地址002BHADC中断服务程序的入口地址0033H低电压检测中断服务程序的入口地址003BHPCA中断服务程序的入口地址0043H串行通信口2中断服务程序的入口地址004BHSPI中断服务程序的入口地址10:15:5224/109中断服务程序的入口地址0053H外部中断2中断服务程序的入口地址005BH外部中断3中断服务程序的入口地址0063H定时/计数器2中断服务程序的入口地址0083H外部中断4中断服务程序的入口地址响应中断时,单片机自动转到相应的中断入口地址去执行程序。由于大部分相邻中断入口地址之间只有8个地址单元,无法保存完整的中断服务程序,一般在中断入口的地址区存放一条无条件转移指令,指向真正存放中断服务程序的空间。中断响应后,CPU执行这条转移指令,转去执行中断服务程序。10:15:5225/109使用指令读取程序存储器中保存的表格常数等内容时,使用MOVC指令。程序Flash存储器的擦写次数为10万次以上,大大提高了芯片利用率,降低了开发成本。10:15:5226/109(2)数据存储器—STC15F2K60S2数据存储器也称为随机存取数据存储器。空间划分在物理上和逻辑上都分为两个地址空间:内部数据存储区和扩展数据存储区。10:15:5227/1091)内部数据存储区(又称为内部RAM)256字节内部RAM,存放中间结果和过程数据。内部RAM的地址范围是00H~FFH,共256个单元,分三部分:①低128字节RAM(00H~7FH):也称为基本RAM区。基本RAM区又分为工作寄存器区、位寻址区、用户RAM和堆栈区。可以直接寻址和间接寻址。用“MOV”和“MOV@Ri”形式的指令访问。②高128字节RAM(80H~FFH):只能间接寻址。用“MOV@Ri”形式的指令访问。③特殊功能寄存器(SFR)区:地址范围为80H~FFH,只可直接寻址,用“MOV”形式的指令访问。10:15:5228/1090区(R7~R0)1区(R7~R0)2区(R7~R0)3区(R7~R0)0FH~08H17H~10H20H2FH30H通用用户RAM和堆栈区(30H~7FH)[可直接或间接字节寻址]80H~FFH[只能间接寻址