第三章 计算机系统的组成与工作原理
任课教师:刘忠国 山东大学课程中心网站: http://course.sdu.edu.cn/G2S/stcmcu.cc 网站:http://www.mcu001.com keil μvision软件下载及指导手册(Help→μvision Help) http://www.keil.com/ 何宾STC单片机原理及应用 > http://www.gpnewtech.com/study/stc/
第三章 计算机系统的组成与工作原理 本章学习目标 3.1 理解模型机的结构及工作过程 3.2 掌握单片机的结构 3.2.1 单片机的内部结构 3.2.2 单片机的引脚及功能 3.3 掌握单片机I/O口的使用 3.4 掌握单片机应用系统的典型构成 11:19
§3.1模型机的结构及工作过程 3.1.1模型机的结构简介 微型计算机的结构模型(简称模型机)。 模型机的主要构成: 三总线(地址总线、数据总线和控制总线) 中央处理器(CPU) 存储器 I/O接口 11:19
3.1.1模型机的结构简介 I/O接口 运算器 控制器 图3-1 模型机的结构 11:19
3.1.1模型机的结构简介 1、中央处理器的组成 中央处理器(CPU)由运算器和控制器组成。 (1)运算器 定义: 运算器是计算机中加工和处理数据的功能 部件。 功能: 对数据进行加工处理,主要包括算术和逻辑 运算,如加、减、乘、与、或、非运算等。 还暂时存放参与运算的数据和中间结果。 11:19
1、中央处理器的组成 运算器组成部分 算数逻辑单元ALU(Arithmetic Logical Unit):主 要完成算术、逻辑运算。 累加寄存器(简称累加器)A(Accumulator):用 于存放操作数或运算结果。 寄存器组:由其它寄存器组成,主要用于存放操 作数或运算结果。 标志寄存器F(Flag):存放运算结果的标志(零、 正负、进位、溢出等)。 11:19
1、中央处理器的组成 (2)控制器 功能:控制器用于控制和指挥计算机内各功能部件 协调动作,完成计算机程序功能。 控制器组成 程序计数器PC(Program Counter):用于存放将要 取出的指令地址, 指令取出后, 其内容自动加1。 指令寄存器IR(Instruction Register):用于存放指令 的操作码。 指令译码器ID(Instruction Decode):用于将指令的 操作码翻译成机器能识别的命令信号。 11:19
(2)控制器 控制器组成(续) 微操作信号发生器MOSG(Microoperation Signal Generator): 用于产生一系列微操作控制信号。 地址寄存器AR(Address Register):用于存放操作数 或结果单元的地址。 数据寄存器DR(Data Register):用于存放操作数。 控制器种类:根据产生微操作控制信号的方式不同 组合逻辑控制型 存储逻辑型 组合逻辑-存储逻辑结合型 根本区别在于微操作信号发生器的实现方法不同。 11:19
微操作信号发生器的基本结构 图3-2 微操作信号发生器的基本结构示意图 11:19
控制器种类 组合逻辑型控制器 优点:其微操作信号发生器是由门电路组成的复 杂树状网络构成的。最大优点是速度快。 缺点:微操作信号发生器结构不规整,设计、调 试、维修较困难,难以实现设计自动化。一旦控 制部件构成后,难以增加新的控制功能。 目前仅有一些巨型机和RISC机为追求高速度仍采 用组合逻辑控制器。 11:19
控制器种类 存储逻辑型控制器 原理:采用存储逻辑来实现,即把微操作信号代 码化,使每条机器指令转化成为一段微程序,存 入控制存储器中,微操作控制信号由微指令产生。 优点:它具有设计规整,调试、维修、更改、扩 充指令都方便的优点,易于实现自动化设计,已 成为当前控制器的主流。 缺点:由于它增加了一级控制存储器,所以指令 的执行速度比组合逻辑控制器慢。 11:19
控制器种类 PLA(Programmable Logic Array)控制器 PLA控制器实际上也是一种组合逻辑控制器,但它 又与常规的组合逻辑控制器的硬连结构不同,它是 程序可编的,某一微操作控制信号由PLA的某一输 出函数产生。 PLA控制器是组合逻辑技术和存储逻辑技术结合的 产物,它克服了两者的缺点,是种较有前途的方法。 11:19
3.1.1模型机的结构简介 2、存储器的结构 功能:主要用于保存程序和数据。 组成部分:包含地址译码器、存储单元和控制逻辑。 存储器访问过程 (1)读操作 CPU首先将地址寄存器AR的内容放到地址总线AB上, 地址总线上的内容进入地址译码器,由地址译码器进 行译码,选通相应的存储单元。 被选通的存储单元的内容就出现数据总线上,在控 制信号的作用下,CPU从数据总线上读取数据到数据寄 存器DR,从而完成存储器的读操作。 11:19
存储器访问过程 (2)写操作 CPU将地址寄存器AR的内容送到地址总线AB上,地 址总线上的内容进入地址译码器,由地址译码器进行 译码,以选通相应的存储单元。 在控制信号的作用下,CPU将要写入的数据通过数据 总线写入到被选通的存储单元,完成存储器的写操作。 11:19
执行过程:读取指令分析指令执行指令保存结果 在让计算机进行计算之前,应做如下工作: 用助记符号指令(汇编语言)编写源程序); 3.1.2模型机的工作过程 :通过执行指令完成计算控制功能 执行过程:读取指令分析指令执行指令保存结果 在让计算机进行计算之前,应做如下工作: 用助记符号指令(汇编语言)编写源程序); 用汇编软件(汇编程序)将源程序汇编成计算机能 识别的机器语言程序; 将数据和程序通过输入设备送入存储器中存放。 例如,计算7+10=?,结果在A中。 微机8086汇编语言 汇编语言语句 注释 MOV A, #07H ;07送入累加器A ADD A, #0AH ;10与A中内容相加, 结果在A中 HLT ;暂停 机器码 B0H 07H 04H 0AH F4H 11:19
例如,计算7+10=?,结果在A中。 假设程序在存储器中的存储 格式(设程序从00H开始存放) 如图所示。 读取指令阶段的执行过程如下: 地址 存储内容 00H B0H 01H 07H 02H 04H 03H 0AH F4H 机器码 B0H 07H 04H 0AH F4H 读取指令阶段的执行过程如下: CPU将程序计数器PC的内容00H送地址寄存器AR。 程序计数器PC的内容自动加1变为01H,为取下一条指 令作好准备。 地址寄存器AR将00H通过地址总线AB送至存储器地址 译码器译码,选中00H单元。 CPU发出“读”命令。 所选中00单元的内容B0H由存储器送至数据总线DB上。 11:19
工作过程:读取指令分析指令执行指令保存结果 经数据总线DB, CPU将读出内容B0H送数据寄存器DR。 数据寄存器DR将其内容送指令寄存器IR中, 经过译码, CPU“识别”出此操作码为两字节指令的第一个字节,再 取出下一个字节(机器码)后得知是“MOV A, #07H”指 令, 于是控制器发出执行这条指令的控制命令。 读立即数(下个机器码)到A 加1 需重复上述取指译码过程 译码产生微控制命令 图3-4 读取第一条指令第一个字节的示意图 地址译码 11:19
读第一条指令第二个字节(即执行该指令)的示意图 “MOV A, #07H” (机器码:B0H 07H), 再取出下一个字节 即取机器码07H的过程: 加1 地址译码 图3-5 执行第一条指令示意图 11:19
执行第二条指令 “ADD A, 0AH”(机器码: 04H 0AH) 执行第二条指令的取指过程与第一条相同, 只是指令码 地址不同。 经过对第二条指令操作码(第1字节04H)的分析(译码)得 知该指令为加法指令,执行第2字节过程如下: 程序计数器PC的内容(03H)送AR。 程序计数器PC的内容自动加1并回送PC。 地址寄存器AR的内容经地址总线AB送到存储器地址译 码器。 00H B0H 01H 07H 02H 04H 03H 0AH F4H CPU发出“读”命令。 所选中的03H单元的内容0AH送到数据总线DB。 数据总线DB上的内容送数据寄存器DR。 11:19
执行第二条指令 “ADD A, 0AH”(机器码: 04H 0AH) 数据寄存器DR内容送B寄存器,再送算术逻辑单元ALU的一端。 累加器A的内容送ALU的另一端, 完成加法运算。 ALU相加的结果输出到A。 图3-6 执行第二条指令操作示意图 11:19
§3.2单片机的结构 3.2.1单片机的内部结构 单片微型计算机(简称单片机)在一片芯片上集 成了前述微型计算机的功能结构, 有些单片机不仅集成了CPU、存储程序和数 据的存储器、I/O接口、定时/计数器等常规资 源,而且还集成了工业测控系统中常用的模 拟量采集模块。 11:19
3.2.1单片机的内部结构 ——单片机产品 8051内核是Intel 8051系列单片机的基本标准,许多参 考书上将这种单片机称为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单片机。 11:19
8051内核单片机STC15F2K60S2 以目前常见8051内核单片机STC15F2K60S2为例, 说明 单片机内部结构。 STC15F2K60S2主要集成资源: 增强型8051内核, 单时钟机器周期(1T), 速度比传统 8051内核单片机快8~12倍 60KB Flash程序存储器;1KB数据Flash(EEPROM); 2048字节的SRAM 3个16位可自动重装载的定时/计数器(T0、T1、T2) 可编程时钟输出功能 11:19
8051内核单片机STC15F2K60S2 至多42根I/O口线 2个全双工异步串行口(UART) 1个高速同步通信端口(SPI) 8通道10位ADC 3通道PWM/可编程计数器阵列/捕获/比较单元 内部高可靠上电复位电路和硬件看门狗 内部集成高精度R/C时钟,常温时,可省去外部晶振电路。 11:19
STC15F2K60S2单片机内部结构框图 图3- 7 STC15F2K60S2单片机的内部结构图 11:19
Goto STC15F2K60S2单片机的内部资源 中央处理器(CPU) PWM(或PCA/捕获/比较单元) 程序存储器(Flash) 数据存储器(RAM) 数据Flash存储器 (EEPROM) I/O接口 (3.3) 中断系统 (第6章) 定时/计数器 (第7章) PWM(或PCA/捕获/比较单元) SPI接口(第8章) 通用异步串行通信接口(UART) 高速A/D转换模块(第9章) 看门狗电路 电源监控 片内RC振荡器等模块 (第7章7.3) (第11章) SPI: Serial Peripheral Interface串行外设接口 UART: Universal Asynchronous Receiver/Transmitter通用异步收发传输器 几乎包含了数据采集和控制中所需的所有单元模块,可 称得上一个片上系统(SOC:System On Chip) Goto 11:19
1、CPU结构 单片机的中央处理器(CPU)由运算器和控制器组成。 (1)运算器 以8位算术/逻辑运算部件 ALU为核心,加上通过内部总 线而挂在其周围的暂存器 TMP1、TMP2、累加器ACC、寄 存器B、程序状态标志寄存器 PSW以及布尔处理机组成了整 个运算器的逻辑电路。 11:19
(1)运算器 算术逻辑单元ALU:用来完成二进制数的四则运算和 布尔代数的逻辑运算。 累加器ACC又记作A:是一个具有特殊用途的8位寄存 器,在CPU中工作最频繁,用来存放操作数和运算结 果。 寄存器B:是专门为乘、除法设置的寄存器,也是一 个8位寄存器,用来存放乘法和除法中的操作数及运 算结果,对于其他指令,它只作暂存器用。 程序状态字(PSW):又称为标志寄存器,一个8位 寄存器,用来存放执行指令后的有关状态信息,供 程序查询和判别之用。 11:19
程序状态标志寄存器PSW (8位) PSW中有些位的状态是在指令执行过程中自动形成 的,有些位可以由用户采用指令加以改变。 位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P CY CY(PSW.7):进位标志位 当执行加/减法指令时,如果操作结果的最高位D7出 现进/借位,则CY置“1”,否则清“0”。 执行乘除运算后,CY清零。此外,CPU在进行移位操 作时也会影响这个标志位。 11:19
程序状态标志寄存器PSW (8位) 位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 AC(PSW.6):辅助进位标志位(Auxiliary Carry) 当执行加/减法指令时,如果低四位数向高四位数产生 进/借位,则AC置“1”,否则清零。 F0(PSW.5):用户标志位(F0)。 是由用户定义的一个状态标志。可用软件来使它置“1” 或清“0” ,也可以由软件测试F0控制程序的流向。 F1(PSW.1):用户标志1 (F1) 。 是由用户定义的一个状态标志。可用软件来使它置“1” 或清“0” ,也可以由软件测试F1控制程序的流向。 11:19
程序状态标志寄存器PSW (8位) 位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 RS1,RS0(PSW.4~PSW.3):工作寄存器组选择控 制位,其详细介绍见后续内容。 OV(PSW.2):溢出标志位。指示运算过程中是否 发生了溢出,在执行指令过程中自动形成。 P(PSW.0):奇偶标志位 累加器ACC中1的个数为偶数,P=0;否则P=1。每个指 令周期都由硬件来置“1”或清“0”。 在有奇偶校验的串行通信中,可根据P设置奇偶校验位。 11:19
SETB C; CPL bit; J(N)C rel; J(N)B bit, rel; MOV bit, C 布尔处理机 是单片机CPU中运算器的一个重要组成部分。 功能: 为用户提供丰富的位操作功能, 有相应指令系 统, 硬件有自己的“累加器” (进位标志位C,即CY),有 自己的位寻址RAM和I/O空间, 是一个独立的位处理机。 大部分位操作均围绕着其累加器——进位位C完成。 对任何可直接寻址的位,布尔处理机可执行置位、取 反、等于1(0)转移、位的读写等操作。(见附录E-5) 在任何可寻址的位(或该位内容取反)和进位标志C之 间,可执行逻辑与、或操作, 其结果送回到进位标志C。 SETB C; CPL bit; J(N)C rel; J(N)B bit, rel; MOV bit, C 11:19
(2)控制器 控制器是CPU的大脑中枢,包括定时控制逻辑、指令 寄存器、译码器、地址指针DPTR及程序计数器PC、 堆栈指针SP、RAM地址寄存器、16位地址缓冲器等。 程序计数器PC 是一个16位的程序地址寄存器,专门用来存放下一条 需要执行的指令的内存地址,能自动加1。 CPU执行指令时,根据程序计数器PC中地址从存储器中 取出当前需执行的指令码,并把它送给控制器分析执行, 随后程序计数器中的地址自动加1,为CPU取下一个需要 执行的指令码做准备。 当下一个指令码取出执行后,PC又自动加1。这样,程 序计数器PC一次次加1,指令就被一条条执行。 11:19
(2)控制器——堆栈 主要用于保存临时数据、局部变量、中断或子程序的 返回地址。 STC15F2K60S2单片机的堆栈设在内部RAM中,是一个按 照“先进后出”规律存放数据的区域。 堆栈指针SP是一个8位寄存器,能自动加1或减1。 SP指向堆栈栈顶:当数据压入堆栈时,SP先自动加1,数 据再入栈;出栈时,数据先从堆栈中弹出,SP再自动减1。 复位后, 寄存器SP默认值为07H, 这样堆栈区在08H开 始的区域。 用户通常可用指令将堆栈区域设置在内部 RAM的8 30H ~ F 7FH之间(单片机手册上写错了)。 11:19
(2)控制器——数据指针DPTR(也称地址指针) 是16位专用寄存器,由DPL (低8位)和DPH (高8位)组成。 DPTR可直接进行16位操作, 也可分别对DPL和DPH 按字节进行操作。 STC15F2K60S2单片机有两个16位数据指针DPTR0和 DPTR1, 这两个数据指针共用同一个地址(82H, 83H)。 可通过设置辅助寄存器AUXR1中的DPS(AUXR1.0)位 来选择具体使用哪一个数据指针(DPS=0, 选择DPTR0; DPS=1,选择DPTR1)。 见47页表3-2 辅助寄存器AUXR1 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 S1_S1 S1_S0 CCP_S1 CCP_S0 SPI_S1 SPI_S0 DPS 11:19
2、存储器的结构—STC15F2K60S2 结构特点: 程序存储器和数据存储器的寻址空间分开。 结构划分:片内集成4个物理上相互独立的存储器空间: 程序Flash存储器、数据Flash存储器(EEPROM)、内部 数据存储器(SRAM)和内部扩展数据存储器(SRAM)。 用MOV指令访问 物理上内部,逻辑上属于外部, 用MOVX访问 EFFFH 图3-8 STC15F2K60S2单片机存储器配置示意图 11:19
(1)程序Flash存储器 功能:存放用户程序、数据和表格等信息。 空间大小: STC15F2K60S2片内集成了60KB程序Flash 存储器, 地址为0000H~EFFFH。 单片机复位后, PC内容为0000H,从0000H单元开始执行 程序。 STC15F2K60S2不能访问外部程序存储器。 特殊单元: 在程序Flash存储器中有些特殊的单元, 这些单元是中断服务程序的入口地址: 0003H 外部中断0中断服务程序的入口地址 000BH 定时/计数器0中断服务程序的入口地址 0013H 外部中断1中断服务程序的入口地址 001BH 定时/计数器1中断服务程序的入口地址 ORG 0000H LJMP MAIN 11:19
(1)程序Flash存储器 特殊单元——中断服务程序的入口地址: 0023H 串行通信口1中断服务程序的入口地址 002BH ADC中断服务程序的入口地址 0033H 低电压检测中断服务程序的入口地址 003BH PCA中断服务程序的入口地址 0043H 串行通信口2中断服务程序的入口地址 004BH SPI中断服务程序的入口地址 0053H 外部中断2中断服务程序的入口地址 005BH 外部中断3中断服务程序的入口地址 0063H 定时/计数器2中断服务程序的入口地址 0083H 外部中断4中断服务程序的入口地址 . 8B 8B 8B 32B 11:19
(1) 程序Flash存储器——中断服务程序的入口地址 响应中断时,单片机自动转到相应的中断入口地址 去执行程序。 因相邻中断入口地址间只有8个地址单元,无法保存 完整中断服务程序,一般在中断入口地址区存放一条 无条件转移指令,指向真正存放中断服务程序空间。 中断响应后,CPU执行这条转移指令,转去执行中断 服务程序。 使用指令:读取程序存储器中保存的表格常数等内容 时,使用MOVC指令。 程序Flash存储器的擦写次数为10万次以上,大大提 高了芯片利用率,降低了开发成本。 11:19
(2)数据存储器—STC15F2K60S2 数据存储器也称为随机存取数据存储器(RAM)。 空间划分 在物理上和逻辑上都分为两个地址空间:内部数据存储 区和扩展数据存储区 。 1)内部数据存储区(又称为内部RAM) 256字节内部RAM,存放中间结果和过程数据。内部RAM 地址范围是00H~FFH,共256个单元,分三部分: ①低128字节RAM(00H~7FH) ②高128字节RAM(80H~FFH) ③特殊功能寄存器(SFR)区: 地址范围为80H~FFH 11:19
(2)数据存储器—STC15F2K60S2 1)内部数据存储区(又称为内部RAM)分三部分: ①低128字节RAM(00H~7FH):也称为基本RAM区。 基本RAM区又分为工作寄存器区、位寻址区、用户 RAM和堆栈区。 可直接寻址, 也可寄存器间接寻址。用“MOV direct” 和“MOV @Ri” 形式的指令访问。 ②高128字节RAM(80H~FFH):只能间接寻址。 用“MOV @Ri”形式的指令访问。 ③特殊功能寄存器(SFR)区:地址范围为80H~FFH, 只可直接寻址,用“MOV direct”形式的指令访问。 11:19
内部数据存储器地址空间分配 80H~FFH 只能间接寻址访问 通用用户RAM和堆栈区 ~ 可直接寻址或间接寻址 只能直接寻址访问 通用用户RAM和堆栈区 可直接寻址或间接寻址 7FH ~ 30H 工作寄存器区 位寻址区 用户RAM和堆栈区 高128字节RAM 特殊功能寄存器区 位寻址区(16字节,共128位)也可字节寻址 2FH ~ 20H 3区(R7~R0) 2区(R7~R0) 1区(R7~R0) 0区(R7~R0) 18H~1FH 10H~17H 4个工作寄存器区也可做RAM单元使用 08H~0FH 00H~07H 图3-9内部数据存储器地址空间 11:19
工作寄存器区 地址分配:00H~1FH共32个单元。分为四组(每一组称 为一个寄存器组), 每一组包括8个8位的工作寄存器, 分别是R0~R7。 功能:通过使用工作寄存器,可提高运算速度,也可用 其中R0或R1存放八位地址值,访问一个256字节(可在逻 辑上的外部)RAM块中单元。 另外,R0~R7也可用作计数器,在指令作用下加1或减1。 间接寻址 方式 “ MOV(X) @Ri ” 3区(R7~R0) 2区(R7~R0) 1区(R7~R0) 0区(R7~R0) 18H~1FH 10H~17H 08H~0FH 00H~07H 转移指令“ DJNZ Rn, rel” 11:19
工作寄存器组的选择: 例 “ MOV A, @R0 ” PSW寄存器中的RS1和RS0两位组合决定当前使用的工作寄存器组。可通过位操作指令修改RS1和RS0的内容,选择不同的工作寄存器组。 3区(R7~R0) 2区(R7~R0) 1区(R7~R0) 0区(R7~R0) 18H~1FH 10H~17H 08H~0FH 00H~07H 09H 08H 07H 数据压栈前SP+1→ 默认SP指针→ 表3-1 工作寄存器组选择 RS1 (PSW.4) RS0 (PSW.3) 工作寄存器组 工作寄存器地址 R7~R0对应的地址为07H~00H 1 R7~R0对应的地址为0FH~08H 2 R7~R0对应的地址为17H~10H 3 R7~R0对应的地址为1FH~18H R0 11:19
位寻址区 20H~2FH之间单元既可按字节存取, 也可按位存取,共128位, 位地址范围: 00H~7FH。 位寻址 : MOV C, 20H 直接寻址 : MOV A, 20H 字节地址: 20H 图3-10 内部RAM中的位地址 11:19
位寻址区--图3-11特殊功能寄存器SFR中位地址: 特殊功能寄存器SFR中位地址范围: 80H~0FFH。 图3-11 可位寻址的特殊功能寄存器中的位地址 11:19
用户RAM和堆栈区 内部RAM中的30H~7FH单元是用户RAM和堆栈区。 有一个8位的堆栈指针SP,并且堆栈区只能设置在内 部数据存储区。当有子程序调用和中断请求时,返回 地址等信息被自动保存在堆栈内。 STC15F2K60S2单片机复位后,SP为07H,使堆栈事 实上由08H单元开始(数据进栈前SP先加1,再进栈), 考虑08H~1FH单元分别属于工作寄存器组1~3, 若在 程序中用到这些工作寄存器, 则在用户初始化程序中, 最好把SP的值改变为80H或更大 30H~7FH中的值。 STC15F2K60S2单片机的堆栈是朝地址增大的方向生 成, 即数据压栈操作后, SP的值增大(先SP+1, 再入栈)。 11:19
高128字节RAM和特殊功能寄存器 对于STC15F2K60S2单片机,80H~FFH既为高128字节 RAM区的地址范围,又为特殊功能寄存器区(SFR)的地 址范围,地址空间重叠,但物理上是独立的。 使用时,通过不同的寻址方式加以区分:高128字节 的RAM区使用间接寻址访问,特殊功能寄存器使用直 接寻址访问。 因堆栈操作也是间直接寻址方式,所以,高128位数据 RAM亦可作为堆栈区使用特殊功能寄存器可进出堆栈。 除了程序计数器PC和4个工作寄存器组外,其余的寄 存器都在SFR区中。(见表3-2) 11:19
特殊功能寄存器 特殊功能寄存器大体分为两类 ①一类与芯片的引脚有关。如P0~P5,它们实际上 是6个锁存器,每个锁存器附加上相应的输出驱动器 和输入缓冲器就构成了一个并行口。(见表3-2) ②另一类为芯片内部功能的控制或者内部寄存器。 如与中断屏蔽及优先级控制、定时器、串行口、SPI 接口等相关的寄存器。(见表3-2) STC15F2K60S2单片机的特殊功能寄存器及其复位值 如表3-2所列。 11:19
2) 扩展数据存储区on-chip expanded RAM(XRAM) 片内逻辑上属于外部的数据存储区也称为扩展RAM 区(XRAM)。片内集成了1792字节的外部RAM,地 址范围为0000H~06FFH,可用于存放数据。 注意,这里的“内部”和“外部”是逻辑上的概念, 不是指芯片内部和外部。 在汇编语言中, XRAM使用“MOVX @DPTR” 或 “MOVX @Ri”(仅访问XRAM的00~FFH)指令访问。 在C语言中,可使用pdata,xdata声明存储类型即可。 如:unsigned char xdata i=0; 11:19
2) 扩展数据存储区(XRAM) 访问片内集成的外部RAM时,不影响P0口、P2口、 P4.2(WR)、P4.4(9)(RD)和ALE (P4.5)。 STC15F2K60S2单片机还可以访问片外扩展的 64KB外部数据存储器。 STC15F2K60S2单片机的外部扩展I/O端口与扩展 数据存储器统一编址,因此外部I/O端口的地址占 用扩展数据存储器的地址单元,用MOVX指令访问。 11:19
2) 扩展数据存储区(XRAM) 能否访问内部扩展RAM要受辅助寄存器AUXR(地址 为8EH,复位值为01H(00H))中的EXTRAM位控制。 辅助寄存器AUXR的位定义 位号 D7 D6 D5 D4 D3 D2 D1 D0 名称 T0x12 T1x12 UART_M0x6 T2R T2_C/ T2x12 EXTRAM S1ST2 EXTRAM: 0:内部扩展RAM可以存取;地址小于700H时,访问内 部扩展RAM;地址大于或等于700H时,则访问单片机外 部扩展的RAM或I/O空间。 1:禁止访问内部扩展RAM。 MOVX @DPTR 11:19
(3)数据Flash存储器 空间大小:集成了1K字节的数据Flash存储器,与程 序空间是分开的 地址范围:0000H~03FFH。这1K字节的数据Flash存 储器分为2个扇区,每个扇区包含512字节,对应的 地址范围分别为: 第一扇区:0000H~01FFH 第二扇区:0200H~03FFH 使用方法:建议同一次修改的数据放在同一个扇区, 不是同一次修改的数据放在不同的扇区,不一定用 满。数据Flash存储器的擦除操作是按扇区进行的。 11:19
(3)数据Flash存储器 数据Flash存储器可以作为EEPROM使用,擦写次 数在10万次以上,用于保存一些需要在应用过程中 修改并且掉电不丢失的参数数据。 在用户程序中,可以对数据Flash区进行字节读、字 节编程、扇区擦除操作(具体方法见后面)。 工作电压Vcc较低时, 不建议对数据Flash区进行写 操作。 声明: EEPROM也可以用MOVC指令读(MOVC访 问的是程序存储器), 但起始地址不再是0000H, 而是 程序存储空间结束地址的下一个地址(F000H)。 11:19
①ISP/IAP数据寄存器IAP_DATA ISP: In System Programming, 在系统编程。 1) 相关特殊功能寄存器 ①ISP/IAP数据寄存器IAP_DATA ISP: In System Programming, 在系统编程。 IAP: In Applicatin Programming ,在应用编程。 IAP_DATA是ISP/IAP操作时的数据寄存器(地址C2H, 复位值为FFH)。 ISP/IAP 从数据Flash读出的数据放在IAP_DATA中, 向Flash写的数据也需放在IAP_DATA中。 ②ISP/IAP地址寄存器IAP_ADDRH和IAP_ADDRL IAP_ADDRH(地址C3H,复位值00H):地址寄存器高八位. IAP_ADDRL(地址C4H,复位值00H):地址寄存器低八位. ISP/IAP 操作时 11:19
1)相关特殊功能寄存器 ③ISP/IAP命令寄存器IAP_CMD ISP/IAP命令寄存器IAP_CMD(地址C5H,复位值xxxx xx00B) 的各位定义如下: 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 - MS1 MS0 MS1和MS0组合形成不同的命令。 表3-3 ISP/IAP命令选择 MS1 MS0 命令/操作 待机模式,无ISP操作 1 对“Data Flash/EEPROM区”进行字节读 1 对“Data Flash/EEPROM区”进行字节编程 对“Data Flash/EEPROM区”进行扇区擦除 11:19
1)相关特殊功能寄存器 特别声明 ISP/IAP数据寄存器也可以用MOVC指令读 (MOVC访问的是程序存储器) 但起始地址不再是0000H,而是程序存储空间结 束地址的下一个地址, 对于STC15F2K60S2单片机而言,使用MOVC 访问数据Flash存储器时,其地址范围为 F000H~F3FFH。 11:19
1)相关特殊功能寄存器 ④ISP/IAP命令触发寄存器IAP_TRIG IAP_TRIG (地址为C6H, 复位值为xxxx xxxxB )为 ISP/IAP操作时的命令触发寄存器。 在(IAP_CONTR.7) IAPEN= 1时,每次IAP操作都要对 IAP_TRIG先写入5AH,再写入A5H,ISP/IAP命令才会 生效。 ISP/IAP操作完成后, IAP地址高8位寄存器IAP_ADDRH, IAP地址低8位寄存器IAP_ADDRL和IAP命令寄存器 IAP_CMD的内容不变。 若要对下一地址数据进行ISP/IAP操作, 还需将该地址高8 位和低8位分别写入IAP_ADDRH和IAP_ADDRL寄存器。 11:19
⑤ISP/IAP控制寄存器IAP_CONTR ISP/IAP控制寄存器IAP_CONTR(地址:C7H, 复位值 为0000 x000B)各位的定义如下: 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 IAPEN SWBS SWRST CMD_FAIL - WT2 WT1 WT0 IAPEN SWBS SWRST CMD_FAIL IAPEN: ISP/IAP功能允许位。 0:禁止IAP读/写/擦除Data Flash/EEPROM 1: 允许IAP读/写/擦除Data Flash/EEPROM SWBS和SWRST用于设置单片机的软件复位。(见11章) CMD_FAIL: 若送了ISP/IAP命令, 并对IAP_TRIG送 5AH/A5H触发失败, 则为1, 需由软件清零。 11:19
⑤ISP/IAP控制寄存器IAP_CONTR 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 IAPEN SWBS SWRST CMD_FAIL - WT2 WT1 WT0 WT2 WT1 WT0 WT2~WT0设置IAP/ISP时的CPU等待时间, CPU读数据 Flash的等待时间固定为2个时钟。其他等待时间见表3-4。 表3-4 IAP/ISP时的CPU等待时间 WT2 WT1 WT0 CPU等待时间 与等待参数对应 的推荐系统时钟 编程时间(55us) 扇区擦出(21ms) 1 55个时钟 21012个时钟 ≤ 1MHz 110个时钟 42024个时钟 ≤ 2MHz 165个时钟 63036个时钟 ≤ 3MHz 330个时钟 126072个时钟 ≤ 6MHz 660个时钟 252144个时钟 ≤ 12MHz 1100个时钟 420240个时钟 ≤ 20MHz 1320个时钟 504288个时钟 ≤ 24MHz 1760个时钟 672384个时钟 ≤ 30MHz 11:19
2)数据Flash存储器操作的方法 首先定义ISP/IAP命令及等待时间: ISP_IAP_BYTE_READ EQU 1 ; 字节读 ISP_IAP_BYTE_PROGRAM EQU 2 ;字节编程,前提是该字节是空,即为0FFH ISP_IAP_SECTOR_ERASE EQU 3 ;扇区擦除, 若要某字节为空, 需擦除该整个扇区 WAIT_TIME EQU 0 ;设置等待时间 ;根据系统时钟频率,参考表3-4设置WT2,WT1,WT0值 命令寄存器IAP_CMD 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 - MS1 MS0 11:19
2)数据Flash存储器操作的方法 进行字节读操作时, 需给出要读的地址, 设置等待时间, 然后送出读字节命令并设置触发器, 从IAP_DATA寄存器中读取数据。 典型字节读操作演示代码: (0~3FFH) MOV IAP_ADDRH, #BYTE_ADDRH ;送地址高字节 MOV IAP_ADDRL, #BYTE_ADDRL ;送地址低字节 MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, #10000000B ;允许ISP/IAP操作 MOV IAP_CMD, #ISP_IAP_BYTE_READ ;送字节读命令 MOV IAP_TRIG,#5AH ;先送5AH,再送A5H到ISP/IAP触发寄存器 MOV IAP_TRIG,#0A5H;送完A5H后,ISP/IAP命令立即被触发启动 ;CPU等待IAP动作完成后,才会继续执行程序。 NOP ;数据读出到IAP_DATA寄存器后, CPU继续执行程序 MOV A, IAP_DATA ;将读出的数据送往累加器 可 合并 11:19
2)数据Flash存储器操作的方法 进行字节编程(写)操作时,需保证要写的地址单元内 容为空 (值0FFH) , 若不为空, 则先用扇区擦除命令, 将要进行字节编程的单元所在扇区擦除为空。 将要写入内容送入IAP_DATA寄存器, 将编程单元地 址送入IAP_ADDRH和IAP_ADDRL寄存器, 设置等 待时间, 允许ISP/IAP操作, 送字节编程命令并设置 触发器。 字节编程演示代码如下: 11:19
;CPU等待IAP动作完成后, 才会继续执行程序. 2)数据Flash存储器操作的方法 MOV IAP_DATA, #ONE_DATA ;送字节编程数据到IAP_DATA MOV IAP_ADDRH, #BYTE_ADDRH ;送地址高字节 MOV IAP_ADDRL, #BYTE_ADDRL ;送地址低字节 MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, #10000000B ;允许ISP/IAP操作 MOV IAP_CMD, #ISP_IAP_BYTE_PROGRAM ;送字节编程命令 MOV IAP_TRIG, #5AH ;先送5AH到ISP/IAP触发寄存器 MOV ISP_TRIG,#0A5H ;再送A5H后,ISP/IAP命令被触发启动 ;CPU等待IAP动作完成后, 才会继续执行程序. 可 合并 11:19
2)数据Flash存储器操作的方法 数据Flash擦除时,只有扇区擦除,没有字节擦除。 若要对某个扇区进行擦除,而其中有些字节内容需要 保留,则需将其先读到单片机内部的RAM中保存, 再 将该扇区擦除,然后将需保留的数据写回该扇区; 所以每个扇区中用的字节数越少越好,操作起来越灵 活越快。 擦除时,扇区中任意一个字节的地址都是该扇区的地 址,无需求出首地址。 扇区擦除的典型代码:. 11:19
2)数据Flash存储器操作的方法 MOV IAP_ADDRH, #SECTOR_FIRST_BYTE_ADDRH ;送扇区高字节 MOV IAP_ADDRL, #SECTOR_FIRST_BYTE_ADDRL ;送扇区低字节 MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, #10000000B ;允许ISP/IAP MOV IAP_CMD, #ISP_IAP_SECTOR_ERASE ;送扇区擦除命令 MOV IAP_TRIG, #5AH ;先送5AH,再送A5H到ISP/IAP触发寄存器 MOV IAP_TRIG,#0A5H ;送A5H后,ISP/IAP命令被触发启动 ;CPU等待IAP动作完成后,才会继续执行程序. 可 合并 11:19
2)数据Flash存储器操作的方法 总之,对于数据Flash存储器的操作有三个基本命令 读 字节编程 扇区擦除 进行字节编程时,只能将1改为0,或1保持为1、 0保持为0。如果一个字节中有的位为0,要将其 改为1,则须先将整个扇区擦除,因为只有“扇区 擦除”才可以将0变为1。 11:19
(Low-profile Quad Flat Package) 3.2.2 单片机的引脚及功能 1.STC15F2K60S2单片机的引脚 封装:LQFP-44封装 (Low-profile Quad Flat Package) 图3-12 STC15F2K60S2单片机的引脚图 11:19