Download presentation
Presentation is loading. Please wait.
1
第三章 计算机系统 的组成与工作原理 本章学习目标 理解模型机的结构及工作过程 掌握单片机的结构 掌握单片机I/O口的使用
第三章 计算机系统 的组成与工作原理 本章学习目标 理解模型机的结构及工作过程 掌握单片机的结构 掌握单片机I/O口的使用 掌握单片机应用系统的典型构成
2
§3.1模型机的结构及工作过程 一、模型机的结构简介 模型机的主要构成: 三总线 (地址总线、数据总线和控制总线) 中央处理器(CPU)
存储器 I/O接口
3
图3-1 模型机的结构
4
1、中央处理器的组成 中央处理器(CPU)由运算器和控制器组成。 (1)运算器 定义:运算器是计算机中加工和处理数据 的功能部件。 功能:对数据进行加工处理,主要包括算 术和逻辑运算,如加、减、乘、 与、或、非运算等。另外,还暂时 存放参与运算的数据和中间结果。
5
运算器组成部分 算数逻辑单元ALU(Arithmetic Logical Unit):主要完成算术、逻辑运算。
寄存器组:由其它寄存器组成,主要用于存放操作数或运算结果。 标志寄存器F:存放运算结果的标志(零、正负、进位、溢出等)。
6
(2)控制器 功能:控制器用于控制和指挥计算机内各功能部件协调动作,完成计算机程序功能。
7
控制器组成 程序计数器PC(Program Counter):用于存放将要取出的指令地址,指令取出后,其内容自动加1。
指令寄存器IR(Instruction Register):用于存放指令的操作码。 指令译码器ID(Instruction Decode):用于将指令的操作码翻译成机器能识别的命令信号。 微操作信号发生器MOSG(Microoperation Signal Generator):用于产生一系列微操作控制信号。 地址寄存器AR(Address Register):用于存放操作数或结果单元的地址。 数据寄存器DR(Data Register):用于存放操作数。
8
控制器种类 根据产生微操作控制信号的方式不同 组合逻辑控制型 存储逻辑型 组合逻辑 存储逻辑结合型
根本区别在于微操作信号发生器的实现方法不同.
9
组合逻辑型控制器 优点:其微操作信号发生器是由门电路组成的复杂树状网络构成的。最大优点是速度快。 缺点:微操作信号发生器结构不规整,设计、调试、维修较困难,难以实现设计自动化。一旦控制部件构成后,难以增加新的控制功能。 目前仅有一些巨型机和RISC机为追求高速度仍采用组合逻辑控制器。
10
存储逻辑型控制器 优点:采用存储逻辑来实现,即把微操作信号代码化,使每条机器指令转化成为一段微程序,存入控制存储器中,微操作控制信号由微指令产生。 它具有设计规整,调试、维修、更改、扩充指令都方便的优点,易于实现自动化设计,已成为当前控制器的主流。 缺点:由于它增加了一级控制存储器,所以指令的执行速度比组合逻辑控制器慢。
11
PLA控制器 组合逻辑与存储逻辑结合型的控制器称为PLA控制器,它是吸收前两种控制器的设计思想来实现的。
12
图3-2 微操作信号发生器的基本结构示意图
13
2、存储器的结构 功能:主要用于保存程序和数据。 组成部分:包含地址译码器、存储单元和 控制逻辑。
14
存储器访问过程 (1)读操作 CPU首先将地址寄存器AR的内容放到地址总线AB上,地址总线上的内容进入地址译码器,由地址译码器进行译码,选通相应的存储单元。被选通的存储单元的内容就出现数据总线上,在控制信号的作用下,CPU从数据总线上读取数据到数据寄存器DR,从而完成存储器的读操作。
15
(2)写操作 CPU将地址寄存器AR的内容送到地址总线AB上,地址总线上的内容进入地址译码器,由地址译码器进行译码,以选通相应的存储单元。在控制信号的作用下,CPU将要写入的数据通过数据总线写入到被选通的存储单元,完成存储器的写操作。
16
二、模型机的工作过程 工作过程 读取指令分析指令执行指令保存结果 在进行计算之前,应做如下工作:
用助记符号指令(汇编语言)编写源程序); 用汇编软件(汇编程序)将源程序汇编成计算机能识别的机器语言程序; 将数据和程序通过输入设备送入存储器中存放。
17
下面举例说明计算机程序的具体执行过程。 例如,计算7+10=?,结果在A中。 汇编语言语句 机器码 注释 MOV A,07H B0H 07H
ADD A,0AH 04H 0AH ;10与A中内容相加,结果在A中 HLT F4H ;暂停
18
假设上述程序在存储器中的存储格式 (设程序从00H开始存放)如图所示。 地址 存储内容 00H B0H 01H 07H 02H 04H
0AH F4H 图3-3 示例程序机器码在存储器中的存储格式
19
读取指令阶段的执行过程如下: CPU将程序计数器PC的内容00H送地址寄存器AR。
地址寄存器AR将00H通过地址总线AB送至存储器地址译码器译码,选中00H单元。 CPU发出“读”命令。 所选中的00单元的内容B0H由存储器送至数据总线DB上。
20
经数据总线DB,CPU将读出的内容B0H送至数据寄存器DR。
数据寄存器DR将其内容送至指令寄存器IR中,经过译码,CPU“识别”出此操作码为两字节指令的第一个字节,再取出下一个字节后得知是“MOV A,07H”指令,于是控制器发出执行这条指令的控制命令。
21
读取第一条指令第一个字节的示意图如图所示。
图3-4 读取第一条指令第一个字节的示意图
22
执行指令阶段的执行过程如下: CPU将程序计数器PC的内容送地址寄存器AR。
程序计数器PC的内容自动加1变为02H,为取下一条指令作好准备。 地址寄存器AR将01H通过地址总线送至存储器地址译码器译码,选中01H单元。 CPU发出“读”命令。 所选中的01H单元的内容07H读至数据总线DB上。 经数据总线DB,读出的内容07H送至数据寄存器DR。 由控制码计算机确定读出的是立即数,并要求将它送入累加器A中,所以数据寄存器DR通过内部总线将07H送入累加器A中。
23
执行第一条指令的示意图如图所示。 图3-5 执行第一条指令示意图
24
执行第二条指令的取指过程与第一条相同,只是指令码地址不同。 经过对第二条指令操作码的分析(译码)得知第二条指令为加法指令,执行过程如下:
程序计数器PC的内容送AR。 程序计数器PC的内容自动加1并回送PC。 地址寄存器AR的内容经地址总线AB送到存储器地址译码器。
25
CPU发出“读”命令。 所选中的03H单元的内容0AH送到数据总线DB。 数据总线DB上的内容送数据寄存器DR。 数据寄存器DR的内容经B寄存器送算术逻辑单元ALU的一端。 累加器A的内容送ALU的另一端。 ALU相加的结果输出到A。
26
执行第二条指令的操作示意图如图所示。 图3-6 执行第二条指令操作示意图
27
§3.2单片机的结构 一、单片机的内部结构 单片微型计算机(简称单片机)在一片芯片上集成了前述微型计算机的功能结构,有些单片机不仅集成了CPU、存储程序和数据的存储器、I/O接口、定时/计数器等常规资源,而且还集成了工业测控系统中常用的模拟量模块。
28
单片机产品 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单片机。
29
以目前市场上常见的8051内核单片机STC15F2K60S2为例,说明单片机的内部结构。STC12C5A60S2单片机主要集成了以下资源:
增强型8051内核,单时钟机器周期,速度比传统8051内核单片机快8~12倍 60KB Flash程序存储器;1KB数据Flash;2048字节的SRAM 3个16位可自动重装载的定时/计数器(T0、T1、T2) 可编程时钟输出功能 至多42根I/O口线 2个全双工异步串行口(UART) 1个高速同步通信端口(SPI) 8通道10位ADC 3通道PWM/可编程计数器阵列/捕获/比较单元 内部高可靠上电复位电路和硬件看门狗 内部集成高精度R/C时钟,常温工作时,可以省去外部晶振电路。
30
STC15F2K60S2单片机内部结构框图 图3- 7 STC15F2K60S2单片机的内部结构图
31
STC15F2K60S2单片机的内部资源 中央处理器(CPU) 程序存储器(Flash) 数据存储器(RAM) 数据Flash存储器
定时/计数器 I/O接口 通用异步串行通信接口(UART) 中断系统 SPI接口 高速A/D转换模块 PWM(或捕获/比较单元) 看门狗电路 电源监控 片内RC振荡器等模块 几乎包含了数据采集和控制中所需的所有单元模块, —————可称得上一个片上系统(SOC)
32
1、CPU结构 单片机的中央处理器(CPU)由运算器和控制器组成。 (1)运算器 以8位算术/逻辑运算部件ALU为核心,加上通过内部总线而挂在其周围的暂存器TMP1、TMP2、累加器ACC、寄存器B、程序状态标志寄存器PSW以及布尔处理机组成了整个运算器的逻辑电路。
33
算术逻辑单元ALU:用来完成二进制数的四则运算和布尔代数的逻辑运算。
累加器ACC又记作A:是一个具有特殊用途的8位寄存器,在CPU中工作最频繁,用来存放操作数和运算结果。 寄存器B:是专门为乘、除法设置的寄存器,也是一个8位寄存器,用来存放乘法和除法中的操作数及运算结果,对于其他指令,它只作暂存器用。 程序状态字(PSW):又称为标志寄存器,一个8位寄存器,用来存放执行指令后的有关状态信息,供程序查询和判别之用。
34
PSW中有些位的状态是在指令执行过程中自动形成的,有些位可以由用户采用指令加以改变。
位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P
35
位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P CY(PSW.7):进位标志位 当执行加/减法指令时,如果操作结果的最高位D7出现进/借位,则CY置“1”,否则清“0”。执行乘除运算后,CY清零。此外,CPU在进行移位操作时也会影响这个标志位。
36
当执行加/减法指令时,如果低四位数向高四位数产生进/借位,则AC置“1”,否则清零。
位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P AC(PSW.6):辅助进位标志位 当执行加/减法指令时,如果低四位数向高四位数产生进/借位,则AC置“1”,否则清零。
37
位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P F0(PSW.5):用户标志0。 该位是由用户定义的一个状态标志。可以用软件来使它置“1”或清“0”,也可以由软件测试F0控制程序的流向。 F1(PSW.1):用户标志1。 该位是由用户定义的一个状态标志。与F0类似,可以用软件来使它置“1”或清“0”,也可以由软件测试F1控制程序的流向。
38
RS1,RS0(PSW.4~PSW.3):工作寄存器组选择控制位,其详细介绍见后续内容。
位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P RS1,RS0(PSW.4~PSW.3):工作寄存器组选择控制位,其详细介绍见后续内容。 OV(PSW.2):溢出标志位。指示运算过程中是否发生了溢出,在执行指令过程中自动形成。
39
位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P P(PSW.0):奇偶标志位 累加器ACC中1的个数为偶数,P=0;否则P=1。每个指令周期都由硬件来置“1”或清“0”。在具有奇偶校验的串行数据通信中,可以根据P设置奇偶校验位。
40
布尔处理机——是单片机CPU中运算器的一个重要组成部分。
功能:为用户提供丰富的位操作功能,有相应的指令系统,硬件有自己的“累加器”(进位位C,即CY),和自己的位寻址RAM和I/O空间,是一个独立的位处理机。 大部分位操作均围绕着其累加器——进位位C完成。对 任何可直接寻址的位,布尔处理机可执行置位、取反、转移、位的读写等操作。在任何可寻址的位(或该位内容取反)和进位标志C之间,可执行逻辑与、或操作,其结果送回到进位标志C。
41
(2)控制器 控制器是CPU的大脑中枢,包括定时控制逻辑、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP、RAM地址寄存器、16位地址缓冲器等。
42
程序计数器PC 是一个16位的程序地址寄存器,专门用来存放下一条需要执行的指令的内存地址,能自动加1。
当CPU执行指令时,根据程序计数器PC中的地址从存储器中取出当前需要执行的指令码,并把它送给控制器分析执行,随后程序计数器中的地址自动加1,以便为CPU取下一个需要执行的指令码做准备。 当下一个指令码取出执行后,PC又自动加1。这样,程序计数器PC一次次加1,指令就被一条条执行。
43
堆栈 主要用于保存临时数据、局部变量、中断或子程序的返回地址。
STC15F2K60S2单片机的堆栈设在内部RAM中,是一个按照“先进后出”规律存放数据的区域。堆栈指针SP是一个8位寄存器,能自动加1或减1。当数据压入堆栈时,SP自动加1;数据从堆栈中弹出后,SP自动减1。 复位后,寄存器默认值为07H,堆栈区在08H开始的区域。用户通常将堆栈区域用指令设置在内部RAM的80H~FFH之间。
44
数据指针DPTR 一个16位专用寄存器,由DPL(低8位)和DPH(高8位)组成。
STC15F2K60S2单片机有两个16位的数据指针DPRT0和DPTR1,这两个数据指针共用同一个地址,可通过设置辅助寄存器AUXR1中的DPS(AUXR1.0)位来选择具体使用哪一个数据指针。
45
2、存储器的结构—STC15F2K60S2 结构特点:程序存储器和数据存储器的寻址空间是分开的。 结构划分:片内集成有4个物理上相互独立的存储器空间:程序Flash存储器、数据Flash存储器(EEPROM)、内部数据存储器和外部数据存储器。
46
图3-8 STC15F2K60S2单片机存储器配置示意图
47
(1)程序Flash存储器 功能:存放用户程序、数据和表格等信息。 空间大小:STC15F2K60S2片内集成了60KB的程序Flash存储器,地址为0000H~F000H。单片机复位后,程序计数器PC的内容为0000H,从0000H单元开始执行程序。
48
特殊单元 在程序Flash存储器中有些特殊的单元,这些单元是 中断服务程序的入口地址: 0003H 外部中断0中断服务程序的入口地址
000BH 定时/计数器0中断服务程序的入口地址 0013H 外部中断1中断服务程序的入口地址 001BH 定时/计数器1中断服务程序的入口地址 0023H 串行通信口1中断服务程序的入口地址 002BH ADC中断服务程序的入口地址 0033H 低电压检测中断服务程序的入口地址 003BH PCA中断服务程序的入口地址 0043H 串行通信口2中断服务程序的入口地址 004BH SPI中断服务程序的入口地址
49
中断服务程序的入口地址 0053H 外部中断2中断服务程序的入口地址 005BH 外部中断3中断服务程序的入口地址
响应中断时,单片机自动转到相应的中断入口地址去执行程序。由于大部分相邻中断入口地址之间只有8个地址单元,无法保存完整的中断服务程序,一般在中断入口的地址区存放一条无条件转移指令,指向真正存放中断服务程序的空间。中断响应后,CPU执行这条转移指令,转去执行中断服务程序。
50
使用指令 读取程序存储器中保存的表格常数等内容时,使用MOVC指令。 程序Flash存储器的擦写次数为10万次以上,大大提高了芯片利用率,降低了开发成本。
51
(2)数据存储器—STC15F2K60S2 数据存储器也称为随机存取数据存储器。 空间划分 在物理上和逻辑上都分为两个地址空间:内部数据存储区和扩展数据存储区 。
52
1)内部数据存储区(又称为内部RAM) 256字节内部RAM,存放中间结果和过程数据。内部RAM的地址范围是00H~FFH,共256个单元,分三部分: 特殊功能寄存器(SFR)区:地址范围为80H~FFH,只可直接寻址,用“MOV”形式的指令访问。
53
内部数据存储器地址空间分配 工作寄存器区 位寻址区 通用用户RAM和堆栈区 特殊功能寄存器区 图3-9 内部数据存储器地址空间
54
工作寄存器区 地址分配:00H~1FH共32个单元。分为四组(每一组称为一个寄存器组),每一组包括8个8位的工作寄存器,分别是R0~R7。
功能:通过使用工作寄存器,可以提高运算速度,也可以使用其中的R0或R1存放八位地址值,访问一个256字节外部RAM块中的单元。另外,R0~R7也可以用作计数器,在指令作用下加1或减1。
55
工作寄存器组的选择:PSW寄存器中的RS1和RS0两位组合决定当前使用的工作寄存器组。可以通过位操作指令直接修改 RS1和RS0的内容,选择不同的工作寄存器组。
表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
56
图3-10 内部RAM中的位地址 位寻址区 20H~2FH之间的单元既可以按字节存取,也可以按位存取 共128位,地址范围是00H~7FH。
57
除了20H~2FH之间的单元可以位寻址外,特殊功能寄存器中,直接地址可被8整除的寄存器(除了IP. 7、IP. 6和IE
图3-11 特殊功能寄存器中的位地址
58
用户RAM和堆栈区 内部RAM中的30H~7FH单元是用户RAM和堆栈区。
一个8位的堆栈指针SP,并且堆栈区只能设置在内部数据存储区。当有子程序调用和中断请求时,返回地址等信息被自动保存在堆栈内。 STC15F2K60S2单片机复位后,SP为07H,使堆栈事实上由08H单元开始,考虑08H~1FH单元分别属于工作寄存器组1~3,若在程序设计中用到这些工作寄存器,则在用户初始化程序中,最好把SP的值改变为80H或更大的值。 STC15F2K60S2单片机的堆栈是朝着地址增大的方向生成的,即将数据压入堆栈后,SP的值增大。
59
高128字节RAM和特殊功能寄存器 对于STC15F2K60S2单片机,80H~FFH既为高128字节RAM区的地址范围,又为特殊功能寄存器区(SFR)的地址范围,地址空间重叠,但物理上是独立的。 使用时,通过不同的寻址方式加以区分:高128字节的RAM区使用间接寻址访问,特殊功能寄存器使用直接寻址访问。由于堆栈操作也是间接寻址方式,所以,高 128 位数据 RAM 亦可作为堆栈区使用。
60
除了程序计数器PC和4个工作寄存器组外,其余的寄存器都在SFR区中。
特殊功能寄存器大体分为两类 ①一类与芯片的引脚有关。如P0~P5,它们实 际上是6个锁存器,每个锁存器附加上相应的输 出驱动器和输入缓冲器就构成了一个并行口。 ②另一类为芯片内部功能的控制或者内部寄 存器。如中断屏蔽及优先级控制、定时器、串行 口、SPI接口等。 STC15F2K60S2单片机的特殊功能寄存器及其复位值如表3-2所列。
61
2)扩展数据存储区 外部数据存储区也称为扩展RAM区(简称,XRAM)。片内集成了1792字节的外部RAM,地址范围为0000H~06FFH,可用于存放数据。 注意,这里的“内部”和“外部”是逻辑上的概念,不 是指芯片内部和外部。 在汇编语言中,XRAM使用“MOVX @DPTR” 或者“MOVX @Ri”指令访问。 在C语言中,可使用xdata声明存储类型即可。 如:unsigned char xdata i= 0;
62
访问片内集成的外部RAM时,不影响P0口、P2口、P4.2、P4.4和ALE。
STC15F2K60S2单片机还可以访问片外扩展的64KB外部数据存储器。 STC15F2K60S2单片机的外部扩展I/O端口与扩展数据存储器统一编址,因此外部I/O端口的地址占用扩展数据存储器的地址单元,用MOVX指令访问。
63
1:禁止访问内部扩展RAM。 单片机内部扩展RAM是否可以访问受辅助寄存器AUXR(地址为8EH,复位值为01H)中的EXTRAM位控制。
0:内部扩展RAM可以存取;地址小于700H时,访问内部扩展RAM;地址大于或等于700H时,则访问单片机外部扩展的RAM或I/O空间。 1:禁止访问内部扩展RAM。 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 T0x12 T1x12 UART_M0x6 T2R T2_C/ T2x12 EXTRAM S1ST2
64
空间大小:集成了1K字节的数据Flash存储器,与程序空间是分开的
地址范围:0000H~03FFH。这1K字节的数据Flash存储器分为2个扇区,每个扇区包含512字节,对应的地址范围分别为: 第一扇区:0000H~01FFH 第二扇区:0200H~03FFH
65
使用方法:建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定用满。数据Flash存储器的擦除操作是按扇区进行的。
数据Flash存储器可以作为EEPROM使用,擦写 次数在10万次以上,用于保存一些需要在应用过程 中修改并且掉电不丢失的参数数据。在用户程中, 可以对数据Flash区进行字节读/字节编程/扇区擦除操作。
66
①ISP/IAP数据寄存器IAP_DATA
1)相关特殊功能寄存器 ①ISP/IAP数据寄存器IAP_DATA IAP_DATA是ISP/IAP操作时的数据寄存器(地址为C2H,复位值为FFH)。 ISP/IAP 从数据Flash 读出的数据放在IAP_DATA中,向Flash写的数据也需放在IAP_DATA中。
67
②ISP/IAP地址寄存器IAP_ADDRH和IAP_ADDRL
IAP_ADDRH(地址为C3H,复位值为00H) ISP/IAP 操作时的地址寄存器高八位。 IAP_ADDRL(地址为C4H,复位值为00H) ISP/IAP 操作时的地址寄存器低八位。
68
③ISP/IAP命令寄存器IAP_CMD
ISP/IAP命令寄存器IAP_CMD(地址为C5H,复位值为xxxx x000B)的各位定义如下: 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 - MS1 MS0
69
MS1和MS0组合形成不同的命令。 表3-3 ISP/IAP的命令选择 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 -
命令/操作 待机模式,无ISP操作 1 对“Data Flash/EEPROM区”进行字节读 对“Data Flash/EEPROM区”进行字节编程 对“Data Flash/EEPROM区”进行扇区擦除
70
特别声明 ISP/IAP数据寄存器也可以用MOVC指令读(MOVC访问的是程序存储器)
但起始地址不再是0000H,而是程序存储空间结束地址的下一个地址, 对于STC15F2K60S2单片机而言,使用MOVC访问数据Flash存储器时,其地址范围为F000H~F3FFH。
71
④ISP/IAP命令触发寄存器IAP_TRIG
IAP_TRIG(地址为C6H,复位值为xxxx xxxxB)为ISP/IAP操作时的命令触发寄存器。 在IAPEN(IAP_CONTR.7)= 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寄存器。
72
⑤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
73
SWBS和SWRST用于设置单片机的软件复位。
位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 IAPEN SWBS SWRST CMD_FAIL - WT2 WT1 WT0 IAPEN: ISP/IAP功能允许位。 0:禁止IAP读/写/擦除Data Flash/EEPROM 1: 允许IAP读/写/擦除Data Flash/EEPROM SWBS和SWRST用于设置单片机的软件复位。
74
CMD_FAIL:如果送了ISP/IAP命令,并对IAP_TRIG送5AH/A5H触发失败,则为1,需由软件清零。
位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 IAPEN SWBS SWRST CMD_FAIL - WT2 WT1 WT0 CMD_FAIL:如果送了ISP/IAP命令,并对IAP_TRIG送5AH/A5H触发失败,则为1,需由软件清零。 WT2~WT0用于设置IAP/ISP时,CPU的等待时间,CPU读取数据Flash的等待时间固定为2个时钟。其他等待时间如表3-4所示。
75
WT2~WT0用于设置IAP/ISP时,CPU的等待时间,CPU读取数据Flash的等待时间固定为2个时钟。其他等待时间如表3-4所示。
与等待参数对应 的推荐系统时钟 编程时间(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 表3-4 IAP/ISP时的CPU等待时间
76
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值
77
进行字节读操作时,需要给出要读的地址,设置等待时间,然后送出读字节命令并设置触发器,从IAP_DATA寄存器中读取数据。典型代码如下:
;字节读操作演示代码 MOV IAP_ADDRH, #BYTE_ADDRH ;送地址高字节 MOV IAP_ADDRL, #BYTE_ADDRL ;送地址低字节 MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, # B ;允许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 ;将读出的数据送往累加器
78
进行字节编程(写)操作时,需要保证要写的地址单元内容为空(值为0FFH),如果不为空,则先使用扇区擦除命令,将要进行字节编程的单元所在扇区擦除为空。将要写入的内容送入IAP_DATA寄存器,要编程的单元地址送入IAP_ADDRH和IAP_ADDRL寄存器,设置等待时间,允许ISP/IAP操作,送出字节编程命令并设置触发器。典型代码如下: ;字节编程演示代码,该字节为空时,可对其编程,否则要先执行扇区擦除 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, # B ;允许ISP/IAP操作 MOV IAP_CMD, #ISP_IAP_BYTE_PROGRAM ;送字节编程命令 MOV IAP_TRIG, #5AH ;先送5AH,再送A5H到ISP/IAP触发寄存器 MOV ISP_TRIG, #0A5H ;送完A59H 后,ISP/IAP命令立即被触发启动 ;CPU等待IAP动作完成后,才会继续执行程序.
79
数据Flash擦除时,只有扇区擦除,没有字节擦除。如果要对某个扇区进行擦除,而其中有些字节的内容需要保留,则需将其先读到单片机内部的RAM 中保存,再将该扇区擦除,然后将需保留的数据写回该扇区,所以每个扇区中用的字节数越少越好,操作起来越灵活越快。擦除时,扇区中任意一个字节的地址都是该扇区的地址,无需求出首地址。 ;扇区擦除的典型代码 MOV IAP_ADDRH, #SECTOR_FIRST_BYTE_ADDRH;送扇区起始地址高字节 MOV IAP_ADDRL, #SECTOR_FIRST_BYTE_ADDRL;送扇区起始地址低字节 MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, # B ;允许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动作完成后,才会继续执行程序.
80
总之,对于数据Flash存储器的操作有三个基本命令
读 字节编程 扇区擦除 进行字节编程时,只能将1改为0,或1保持为 1、0保持为0。如果一个字节中有的位为0,要将 其改为1,则须先将整个扇区擦除,因为只有“扇 区擦除”才可以将0变为1。
81
建议: 同一次修改的数据放在同一扇区中,不是同一次修改的数据放在另外的扇区,这样,可以不需要读出保护。
如果一个扇区只用一个字节,那就是真正的EEPROM。STC15F2K60S2单片机的Data Flash比外部EEPROM要快很多,读一个字节大概需要2个时钟周期(0.2us),编程一个字节大概需要55us。 如果在一个扇区中存放了大量的数据,某次只需要修改其中的一个字节或一部分字节时,则另外的不需要修改的数据须先读出放在单片机的RAM中,然后擦除整个扇区,再将需要保留的数据和需修改的数据一并写回该扇区中。这时,每个扇区使用的字节数越少越方便(不需读出一大堆需保留数据)。
82
二、单片机的引脚及功能 1、STC15F2K60S2单片机的引脚 封装 LQFP-44封装
83
DIP-40封装 图3-12 STC15F2K60S2单片机的引脚图
84
STC15F2K60S2单片机的逻辑符号图 图3-13 STC15F2K60S2单片机的逻辑符号图
85
DIP-40封装的STC15F2K60S2单片机和LQFP-44封装相比,除了没有P4. 0、P4. 3、P4. 6、P4
由于DIP封装的单片机焊接比较容易,因此,对于初学者,最好选用DIP封装的单片机进行学习。 注意:在实际应用中,设计单片机应用系统的原理图时,一般应使用逻辑符号图,以便进行电路分析,而设计应用系统的印刷电路板图时,必须使用单片机的引脚图。
86
引脚 电源引脚 外接晶体引脚 控制和复位引脚 输入/输出(I/O)引脚
87
(1)电源引脚 Vcc:一般接电源的+5V。具体的电压幅度应参考单片机的手册。 GND:接电源地。
88
芯片内部一个反相放大器的输入端和输出端。通常用于连接晶体振荡器。 常见的连接方法如图所示。
(2)外接晶体引脚 XTAL1和XATL2 芯片内部一个反相放大器的输入端和输出端。通常用于连接晶体振荡器。 常见的连接方法如图所示。 图3-14 常见的晶振连接方法
89
晶体振荡器M的频率可以在4MHz~48MHz之间选择,典型值是11
晶体振荡器M的频率可以在4MHz~48MHz之间选择,典型值是 MHz(因为设计单片机通信应用系统时,使用这个频率的晶振可以准确地得到9600bits/s和19200bits/s的波特率)。 电容C1、C2对时钟频率有微调作用,可在5~100pF之间选择,典型值是47pF。
90
STC15F2K60S2单片机内部集成高精度R/C时钟,工作时钟可以使用内部振荡器或者外部晶体振荡器(简称晶振)产生的时钟。
40引脚和44引脚封装的STC15F2K60S2单片机出厂标准配置是使用外部时钟。内部集成的高精度R/C时钟工业环境下的温漂为±1%,常温下温飘5‰,频率范围为5MHz~35MHz,可以在编程时设置。对于时钟频率要求不太敏感的场合,内部R/C振荡器完全能够满足要求。 使用内部R/C振荡器时钟时,XTAL1和XTAL2引脚悬空。
91
使用外部晶振时,常见的连接方法与图3-14所示的连接方法相同。
利用在系统编程(In-System Programming,ISP)工具对STC12C5A60S2单片机下载用户程序时,可以在选项中设置选择使用外部晶体振荡器时钟或者使用内部R/C振荡器时钟。
92
(3)控制和复位引脚 ALE(与P4.5复用) 功能:当访问外部存储器或者外部扩展的并行I/O口时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。 标准8051单片机的ALE 脚对系统时钟进行6分频输出,可对外提供时钟。
93
当8051单片机时钟频率较高时,ALE脚是一个干扰源。
STC15F2K60S2单片机直接禁止ALE脚对系统时钟进行6分频输出,彻底清除此干扰源,有利于系统的抗干扰设计。如果设计中需要单片机输出时钟,可以利用STC15F2K60S2单片机的可编程时钟输出脚对外输出时钟。 STC15F2K60S2单片机的ALE引脚在用MOVX指令访问片外扩展器件时输出地址锁存信号。
94
当振荡器运行时,在此引脚上出现两个机器周期的高电平将使单片机复位。 如果需要单片机接上电源就可以复位,则需要使用上电复位电路。
RST(与P5.4复用) 当振荡器运行时,在此引脚上出现两个机器周期的高电平将使单片机复位。 如果需要单片机接上电源就可以复位,则需要使用上电复位电路。 图3-15 上电复位电路图
95
P5.4/RST/MCLKO脚出厂时默认为I/O口,可以通过 STC-ISP编程软件下载程序时,将其设置为RST复位脚。
STC15F2K60S2单片机内部集成了MAX810专用复位电路,时钟频率在12MHZ以下时,复位脚可接1K电阻再接地,也可以使用图3-15所示的传统复位电路。
96
(4)输入/输出(I/O)引脚 STC12C5A60S2单片机最多可以有44根I/O口 线,44根I/O口线分别为:
P0口(8根):P0.0~P0.7 P1口(8根):P1.0~P1.7 P2口(8根):P2.0~P2.7 P3口(8根):P3.0~P3.7 P4口(8根):P4.0~P4.7 P5口(2根):P5.4、P5.5。
97
1)I/O口的工作模式 4种工作模式:准双向口/弱上拉,推挽/强上拉,输入/高阻和开漏模式。 复位后为准双向口/弱上拉工作模式。
每个口的工作模式由2个控制寄存器中的相应位控制(PnM0和PnM1,n=0、1、2、3、4、5)。
98
例如,P0M0和P0M1用于设定P0口的工作模式,其 中P0M0.7和P0M1.7用于设置P0.7的工作模式,
推。 表3-5 I/O口工作模式设置 PnM1 [7:0] PnM0 I/O口模式 准双向口(传统8051单片机I/O口模式),灌电流可达20mA,拉电流为270μA,由于制造误差,实际为270uA~150uA 1 推挽输入输出(强上拉输出,可达20mA,要加限流电阻,尽量少用) 仅为输入(高阻) 开漏(Open Drain),内部上拉电阻断开,要外加上拉电阻
99
例如,若设置P1. 7为开漏模式,P1. 6为强推挽输入输出模式,P1. 5为高阻输入模式,P1. 4、P1. 3、P1. 2、P1
例如,若设置P1.7为开漏模式,P1.6为强推挽输入输出模式,P1.5为高阻输入模式,P1.4、P1.3、P1.2、P1.1和P1.0为弱上拉模式,则可以使用下面的代码进行设置: MOV P1M1,# B MOV P1M0,# B
100
STC15F2K60S2单片机的每个I/O口在弱上拉时都能承受20mA的灌电流(最好还是使用限流电阻,如1KΩ)
整个芯片的工作电流推荐不要超过90mA。即从MCU-Vcc流入的电流不超过90mA,从MCU-GND流出的电流不超过90mA,整体流入/流出电流都不能超过90mA。
101
2)I/O口的复用功能 P0口 P1口 用作数据总线(D7~D0)或者地址总线低8位(A7~A0)。 用作普通I/O。
复用为ADC转换输入、捕获/比较/脉宽调制、SPI通信线、第二串口或者第二时钟输出,如表所示。
102
表3-6 P1口的复用功能 引脚 复用功能 P1.0 ADC0/CCP1(捕获/比较/脉宽调制通道1)/RxD2(串口2输入) P1.1
ADC1/CCP0(捕获/比较/脉宽调制通道0)/TxD2(串口2输出) P1.2 ADC2/ECI(可编程计数器阵列定时器的外部时钟输入)/SS(SPI从器件选择) P1.3 ADC3/ MOSI(SPI主机输出从机输入) P1.4 ADC4/ MISO(SPI主机输入从机输出) P1.5 ADC5/ SCLK(SPI时钟) P1.6 ADC6/ XTAL2(外接晶体引脚)/RxD_3(串口1输入备用切换引脚) P1.7 ADC7/ XTAL1(外接晶体引脚)/TxD_3(串口1输出备用切换引脚)
103
P2口 用作地址总线的高8位输出。 用作通用I/O口使用。 用于SPI和捕获/比较/脉宽调制的备用切换端口 引脚 复用功能 P2.0
A8/RSTOUT_LOW(复位后输出低电平引脚) P2.1 A9/ SCLK_2(SPI时钟备用切换引脚) P2.2 A10/ MISO_2(SPI主机输入从机输出备用切换引脚) P2.3 A11/ MOSI_2(SPI主机输出从机输入备用切换引脚) P2.4 A12/ /ECI_3(可编程计数器阵列定时器的外部时钟输入备用切换引脚)/SS_2(SPI从器件选择备用切换引脚) P2.5 A13/CCP0_3(捕获/比较/脉宽调制通道0备用切换引脚) P2.6 A14/ CCP1_3(捕获/比较/脉宽调制通道1备用切换引脚) P2.7 A15/ CCP2_3(捕获/比较/脉宽调制通道2备用切换引脚) 表3-7 P2口的复用功能
104
P3口 用作通用I/O口使用。 可复用为外部中断输入、计数器输入、时钟输出、第一串口和外部总线的读/写控制,如表所示。
105
表3-8 P3口的复用功能 端口引脚 复用功能 P3.0 RXD(串口1输入)/ /INT4 (外部中断4,只能下降沿中断)/T2CLKO(T2的时钟输出) P3.1 TXD(串口1输出)/T2CLKO(T2的外部输入) P3.2 /INT0(外部中断0输入,既可上升沿中断也可下降沿中断) P3.3 /INT1(外部中断1输入,既可上升沿中断也可下降沿中断) P3.4 T0(定时器0外部输入)/ T1CLKOU(T1时钟输出)/ECI_2(可编程计数器阵列定时器的外部时钟输入备用切换引脚) P3.5 T1(定时器1外部输入)/ T0CLKOU(T0时钟输出)/ CCP0_32(捕获/比较/脉宽调制通道0备用切换引脚) P3.6 /INT2(外部中断2输入,只能下降沿中断)/RxD_2(串口1输入备用切换引脚)/ CCP1_2(捕获/比较/脉宽调制通道1备用切换引脚) P3.7 /INT3(外部中断3输入,只能下降沿中断)/TxD_2(串口1输出备用切换引脚)/ CCP2(捕获/比较/脉宽调制通道2)/ CCP2_2(捕获/比较/脉宽调制通道2备用切换引脚)
106
P4口 作通用I/O口使用。 某些口线具有复用功能,可配置为SPI通信线、捕捉/比较/脉宽调制、第二串口线等。 表3-9 P4口的复用功能
端口引脚 复用功能 P4.0 MOSI_3(SPI主输出从输入备用切换引脚) P4.1 MISO_3(SPI主输入从输出备用切换引脚) P4.2 (外部总线写控制信号) P4.3 SCLK_3(SPI时钟备用切换引脚) P4.4 (外部总线读控制信号) P4.5 ALE(地址锁存控制信号,主要用于外部总线扩展) P4.6 RxD2_2(第二串口输入备用切换引脚) P4.7 TxD2_2(第二串口输出备用切换引脚)
107
P5口 P5.4/RST(复位脚)/MCLKO(内部R/C振荡时钟输出;
输出的频率可为MCLK/1或MCLK/2)/SS_3(SPI接口的从机选择信号备用切换引脚)。 该引脚默认为I/O口,可以通过ISP编程将其设置为RST(复位)引脚。 P5.5没有复用功能。
108
捕获/比较/脉宽调制(CCP)通道的引脚切换、SPI接口的引脚切换以及串口的引脚切换由辅助寄存器AUXR1(也称为P_SW1,地址为A2H,复位值为 B)和外设功能切换寄存器P_SW2(地址为BAH,复位值为xxxx xxx0B)确定。 位号 寄存器名称 D7 D6 D5 D4 D3 D2 D1 D0 AUXR1 S1_S1 S1_S0 CCP_S1 CCP_S0 SPI_S1 SPI_S0 DPS P_SW2 S2_S
109
表3-10 捕获/比较/脉宽调制(CCP)通道的切换
捕获/比较/脉宽调制(CCP)通道可以在三个地方切换,由CCP_S1和CCP_S0两个控制位选择,其选择方法如表3-10所示。 表3-10 捕获/比较/脉宽调制(CCP)通道的切换 CCP_S1 CCP_S0 切换引脚 CCP在[P1.2/ECI,P1.1/CCP0,P1.0/CCP1,P3.7/CCP2] 1 CCP在[P3.4/ECI_2,P3.5/CCP0_2,P3.6/CCP1_2,P3.7/CCP2_2] CCP在[P2.4/ECI_3,P2.5/CCP0_3,P2.6/CCP1_3,P2.7/CCP2_3] 无效
110
SPI可以在三个地方切换,由SPI_S1和SPI_S0两个控制位选择,其选择方法如表3-11所示。
切换引脚 SPI在[P1.2/SS,P1.3/MOSI,P1.4/MISO,P1.5/SCLK] 1 SPI在[P2.4/SS_2,P2.3/MOSI_2,P2.2/MISO_2,P2.1/SCLK_2] SPI在[P5.4/SS_3,P4.0/MOSI_3,P4.1/MISO_3,P4.3/SCLK_3] 无效
111
串口1可以在三个地方切换,由S1_S1和S1_S0两个控制位选择,其选择方法如表3-12示。
表3-12 串口1的引脚切换 S1_S1 S1_S0 切换引脚 串口1在[P3.0/RxD,P3.1/TxD] 1 串口1在[P3.6/RxD_2/XTAL2,P3.7/TxD_2/XTAL1], 串口1在P1口时要使用内部时钟 串口1在[P1.6/RxD_3,P1.7/TxD_3] ,串口1在P1口时要使用内部时钟 无效
112
串口2可以在两个地方切换,由S2_S0控制位选择:
0:串口2在[P1.0/RxD2,P1.1/TxD2] 1:串口2在[P4.6/RxD2_2,P4.7/TxD2_2] GF2:通用标志位。该位是由用户定义的一个状态标志。可以用软件来使它置“1”或清“0”,也可以由软件测试GF2控制程序的流向。 ADRJ:留作备用。 DPS:数据指针选择位。 0:使用缺省数据指针DPTR0; 1:使用另一个数据指针DPTR1。
113
3)STC15F2K60S2单片机I/O口的结构 准双向口工作模式的结构 图3-16 准双向口工作模式的I/O位结构
114
I/O口可用作输出和输入功能而不需重新配置口线输出状态。
每个端口都包含一个锁存器,即特殊功能寄存器P0~P5。这种结构在数据输出时,具有锁存功能,即在重新输出新的数据之前,口线上的数据一直保持不变。但对输入信号是不锁存的,所以外设输入的数据必须保持到取数指令执行为止。
115
为了便于叙述,以后将6个端口及其锁存器都表示为P0~P5。
准双向口有3个上拉场效应管T1、T2、T3,以适应不同的需要。其中,T1称为强上拉,上拉能力可达20mA;T2称为极弱上拉,上拉能力一般为30μA;T3称为弱上拉,一般上拉能力为150μA ~250μA,典型值为200μA。输出低电平时,最大灌电流可达20mA。
116
当口线寄存器为1且引脚本身也为1时,T3导通。T3提供基本驱动电流使准双向口输出为1。如果一个引脚输出为“1”而由外部装置下拉到低时,T3断开,而T2维持导通状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力使引脚上的电压降到门槛电压以下。 当口线锁存为1时,T2导通。当引脚悬空时,这个极弱的上拉源产生很弱的上拉电流将引脚上拉为高电平。 当口线锁存为0时,T1、T2和T3均截止,T4导通,引脚输出为低电平。
117
当口线锁存器由0到1跳变时,T1用来加快准双向口由逻辑0到逻辑1的转换。发生这种情况时,T1导通约2个时钟使引脚能迅速地上拉到高电平。
准双向口带有一个施密特触发输入以及一个干扰抑制电路。 当从端口引脚上输入数据时,T4应一直处于截止状态。假定在输入之前曾输出锁存过数据0,则T4是导通的,这样引脚上的电位就始终被箝位在0电平,使输入高电平无法读入。因此,作为一个准双向口使用时,输入数据时,应先向口写1,使T4截止,然后方可作高阻抗输入。这是准双向口的主要特点。
118
推挽输入输出工作模式的结构 图3-17 推挽输入输出工作模式的I/O位结构
119
推挽输入输出工作模式的下拉结构与准双向口的下拉结构相同,但当锁存器为“1”时可提供持续的强上拉。推挽工作模式一般用于需要更大驱动电流的情况。
工作于推挽输入输出模式时,一个I/O位也带有一个施密特触发输入以及一个干扰抑制电路。此时,若输出高电平,拉电流最大可达20mA;若输出低电平,灌电流也可达20mA。
120
仅为输入(高阻)工作模式的结构 输入口带有一个施密特触发输入以及一个干扰抑制电路。
注意,仅为输入(高阻)工作模式下,I/O口不提供20mA灌电流的能力。 图3-18 仅为输入(高阻)工作模式的I/O位结构
121
开漏输出工作模式的结构 图3-19 开漏输出工作模式的I/O位结构
122
当口线锁存器为0时,开漏输出关断所有上拉场效应管。当作为一个逻辑输出时,这种配置方式必须有外部上拉电阻,即通过电阻外接到Vcc。这种方式的下拉结构与准双向口模式的下拉结构相同。
开漏端口带有一个施密特触发输入以及一个干扰抑制电路。这种工作模式下,输出低电平时,灌电流也可达20mA。
123
§3.3单片机的I/O口的使用 1、P4口和P5口的使用
对STC15F2K60S2单片机P4口和P5口的访问,如同访问常规的P0/P1/P2/P3口一样,并且均可按位寻址,P4的地址C0H,P5口的地址在C8H。
124
2、上拉电阻的连接 虽然作为准双向口使用时,单片机内部已经集成了上拉场效应管,但在实际应用时,一般情况下,最好还是外接上拉电阻。例如,当外接的是SPI/I2C等漏极开漏的电路时。
125
以P0.0为例,接上拉电阻的电路连接如图所示。
典型的上拉电阻的阻值为5.1K或者10K。 图3-20 上拉电阻的连接方法
126
3、拉电流方式和灌电流方式 STC15F2K60S2单片机的I/O口线作为输出可以提供20mA的驱动能力,在使用时,可采用拉电流或灌电流方式。 以P0.0控制发光二极管电路为例说明,电路连接如图所示。 图3-21 拉电流方式和灌电流方式
127
在实际使用时,应尽量采用灌电流方式,这样可以提高系统的负载能力和可靠性。有特别需要时,可以采取拉电流方式,如供电线路要求比较简单时。
采用灌电流方式时,应将单片机的I/O口设置为弱上拉/准双向口工作模式; 采用拉电流方式时,应将单片机的I/O口设置为推挽/强上拉工作模式。 在实际使用时,应尽量采用灌电流方式,这样可以提高系统的负载能力和可靠性。有特别需要时,可以采取拉电流方式,如供电线路要求比较简单时。
128
使用时应该特别注意 图中的限流电阻千万不能省略,否则,会毁坏I/O口。
129
4、典型的三极管控制电路 单片机I/O引脚本身的驱动能力有限,如果需要驱动功率较大的器件,如小型继电器或者固态继电器,可以采用单片机I/O引脚控制三极管进行输出的方法。以P0.0为例。 图3-22 典型的三极管控制电路
130
如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K);如果不加上拉电阻R1,建议R2的值在15K以上,或用强推挽输出。
当需要驱动的功率器件较多时,建议采用ULN2008,其内部采用达林顿结构,是专门用来驱动继电器的芯片,甚至在芯片内部做了一个消去线圈反电动势的二极管。ULN2008的输出端允许通过IC电流200mA,饱和压降VCE约为1V左右,耐压BVCEO约为36V。输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,可以直接驱动继电器或固体继电器(SSR)。ULN2008可以驱动8个继电器。
131
5、I/O外部状态的输入 存在问题:当I/O口工作于准双向口时,由于STC15F2K60S2单片机是1个时钟周期(1T)的8051单片机,速度很快,如果通过指令执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,有时可能读入的状态不对。 解决方法:在软件设置由低变高后加1到2个空操作指令延时,然后再读I/O口的状态。
132
6、P1.7/XTAL1与P1.6/XTAL2的特别说明 STC15F2K60S2系列单片机的所有I/O口上电复位后均为准双向口/弱上拉模式。 但是由于P1.7和P1.6口还可以分别作外部晶体或时钟电路的引脚XTAL1和XTAL2,所以P1.7/XTAL1和P1.6/XTAL2上电复位后的模式不一定就是准双向口/弱上拉模式。 当P1.7和P1.6口作为外部晶体或时钟电路的引脚XTAL1和XTAL2使用时,P1.7/XTAL1和P1.6/XTAL2上电复位后的模式是高阻输入。
133
每次上电复位时,单片机对P1.7/XTAL1和P1.6/XTAL2的工作模式按如下步骤进行设置
然后,单片机会自动判断上一次用户是将P1.7/XTAL1和P1.6/XTAL2设置成普通I/O口还是XTAL1/XTAL2; 如果上一次用户是将P1.7/XTAL1和P1.6/XTAL2设置成普通I/O口,则单片机会将P1.7/XTAL1和P1.6/XTAL2上电复位后的模式设置成准双向口/弱上拉; 如果上一次用户是将P1.7/XTAL1和P1.6/XTAL2设置成XTAL1/XTAL2,则单片机会将P1.7/XTAL1和P1.6/XTAL2上电复位后的模式设置成高阻输入。
134
7、管脚P5.4/RST的特别说明 P5.4/RST即可作普通I/O使用,也可作复位管脚。当用户将P5.4/RST设置成普通I/O口用时,其上电后为准双向口/弱上拉模式。 每次上电时,单片机会自动判断上一次用户是将P5.4/RST设置成普通I/O口还是复位脚。如果上一次用户是将P5.4/RST设置成普通I/O口,则单片机会将P5.4/RST上电后的模式设置成准双向口/弱上拉。如果上一次用户是将P5.4/RST设置成复位脚,则上电后,P5.4/RST仍为复位脚。
135
§3.4单片机应用系统的典型构成 1、单片机最小系统构成 在实际工程应用中,由于应用条件及控制要求的不同,单片机外围电路的组成各不相同。
单片机的最小系统就是指在尽可能少的外部电路条件下,能使单片机独立工作的系统。
136
只需要接上电源,并在Vcc和GND之间接上滤波电容C1和C2
STC15F2K60S2集成了60KB程序存储器、2048字节RAM、高可靠复位电路和高精度R/C振荡器,一般情况下,不需要外部复位电路和外部晶振 只需要接上电源,并在Vcc和GND之间接上滤波电容C1和C2 图3-23单片机最小系统
137
为了能够给单片机下载程序,可以在RXD和TXD引脚上连接RS232和TTL的转换电路,以连接计算机,通过下载工具将用户程序下载到单片机中。RS232和TTL的转换电路如图所示。
138
2、非总线扩展方式的单片机应用系统构成 STC15F2K60S2单片机内部已经有60KB程序存储器和2048字节RAM,这对于一般应用的存储器需求已经足够。 此时,单片机的P0、P2和P4口不用于总线方式,即P0口和P2口用于普通I/O口功能;P4.2和P4.4不用于写控制信号和读控制信号,也用于普通I/O口功能。
139
3、总线扩展方式的单片机应用系统构成 应用背景 组成单片机应用系统时,如果存储器容量不够,或者需要扩展并行I/O,则可以使用端口进行系统的扩展。
140
图3-25 带有总线扩展的STC15F2K60S2单片机应用系统的连接示意图
一个带有数据存储器和并行I/O扩展的单片机应用系统的连接示意图如图所示。 图3-25 带有总线扩展的STC15F2K60S2单片机应用系统的连接示意图
141
由图中可以看出 使用单片机进行系统扩展时,8位的数据总线由P0口提供,16位的地址总线由P2和P0口构成。
P0口通过地址锁存器输出地址总线的低8位,地址总线的高8位由P2口提供。通常用作地址锁存器的芯片有74LS373、74LS273等。 P4口中的/WR(P4.2)和/RD(P4.4)引脚的作用是写控制和读控制。 ALE信号用于锁存器的锁存控制,以锁存由P0口输出的地址。
142
为了说明STC15F2K60S2单片机访问外部RAM的过
程,首先介绍标准8051单片机时序中的相关概念。 (1)时钟周期(T状态):CPU的基本时间计量单位,与晶振频率有关。 (2)机器周期:单片机的基本操作周期为机器周期。标准8051单片机的一个机器周期分为6个状态(S1~S6),每个状态由两个脉冲组成(称为两相),前一个周期叫P1,后一个周期叫P2。
143
一个机器周期由12个时钟周期(也称为振荡周期) 组成,如图所示。
图3-26 标准8051的时序
144
STC15F2K60S2单片机是1时钟周期/机器周期的8051单片机,在同样的外部时钟频率下执行同样的代码,其指令执行速度要比标准8051单片机快8~12倍。
当用户在较低的外部时钟频率下运行时,与标准8051内核相比,不仅降低了系统噪声和电源功耗,而且提高了处理能力。 STC15F2K60S2单片机的总线速度是可以设置的。通过设置总线速度控制寄存器BUS_SPEED寄存器相关的位,可以达到设置总线速度的目的。
145
BUS_SPEED寄存器(地址为A1H,复位值为XXXXXX10B)的定义如下:
其中,EXRST1和EXRTS0用于设置外部RAM定时选择(Extand RAM Time Selector)。 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 - EXRTS1 EXRTS0
146
执行MOVX指令时读写控制信号的脉冲宽度,其设置关系如表3-13所示。
利用MOVX指令访问外部RAM所需的时钟如表3-14所示。 表3-13 EXRTS1和EXRTS0的设置 EXRTS1 EXRTS0 建立/保持/读写时间 1个时钟周期 1 2个时钟周期 4个时钟周期 8个时钟周期
147
访问片外扩展RAM指令所需时钟,可以使用下面的计算公式:
MOVX @R0/R MOVX @DPTR write(写操作) 写操作) ): 5×N write(写操作) 写操作) ): 5×N+2 read(读操作): 5×N read(读操作): 5×N+1 当EXRTS[1:0] = [0,0]时,上式中N=1; 当EXRTS[1:0] = [0,1]时,上式中N=2; 当EXRTS[1:0] = [1,0]时,上式中N=4; 当EXRTS[1:0] = [1,1]时,上式中N=8.
148
对于STC15F2K60S2系列单片机,访问片外扩展RAM指令的速度是可调的。
149
需要特别注意 当STC15F2K60S2应用于总线扩展方式时,用于总线方式的P0、P2和P4口的P4.2和P4.4不可再用于普通I/O口功能,即使在地址空间较宽裕时P2口没有用于高8位地址线的I/O口线也不可用于普通I/O功能。 因为,在总线扩展方式下,P0口当作地址/数据总线口使用时,由于访问外部存储器的操作不断,P0口不断出现低8位地址或者数据,故此时P0口不能再作通用I/O口使用。此时的P2口已当作地址总线口使用,由于访问外部存储器的操作不断,P2口不断送出高8位地址,故此时P2口也不能再作通用I/O口使用。
150
以上介绍了STC15F2K60S2单片机的应用系统构成方式。由于STC15F2K60S2单片机内部已经有60KB程序存储器和2048字节RAM,这对于一般应用的存储器需求已经足够。
因此,非总线扩展方式的应用最常见。
Similar presentations