Download presentation
Presentation is loading. Please wait.
Published byVäinö Hakala Modified 5年之前
1
80C51单片机的内部结构 80C51的外部引脚及功能 80C51的存储器配置 80C51的并行输入/输出接口电路 80C51外围电路设计
2
C51单片机的内部结构 80C51系列单片机是由Intel等各大公司推出的8位主流单片机系列,它是我国目前应用最广泛的一种单片机系列。 以该系列中的典型芯片80C51为线索来介绍单片机的内部结构、外部引脚、存储器配置、并行I/O端口、外围电路等内容。 在51系列单片机里,80C51是最典型的单片机,其它芯片都具有与80C51基本相同的硬件结构和软件特征,其内部结构如图2.1所示。
3
80C51概况 数据总线为8位,地址总线为16位; CMOS工艺; 128B的RAM; 4K的ROM; 2个16位的定时器; 5个中断源; ……….
4
C51的外部引脚及功能
5
引脚共计40根,其中: 电源引脚:2根,Vcc和Vss; 晶振引脚:2根,XTAL1和XTAL2; I/O引脚:32根; 控制引脚:4根 EA RST PSEN ALE
6
C51的存储器配置 80C51的片内集成有一定容量的程序存储器和数据存储器(128B)。当然,还可以根据需要对存储器进行外部扩展。80C51的存储器配置如图2.3所示。 从物理上分,80C51的存储器有4个存储空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。 从逻辑上分,80C51有3个存储器地址空间:片内外统一的64KB的程序存储器地址空间、256B的内部数据存储器地址空间(其中128B的专用寄存器地址空间,仅有部分字节有实际意义)和64KB的外部数据存储器地址空间。 为了区分不同的存储器空间,在用指令访问这三个不同的逻辑空间时采用了不同形式的指令。
7
一、程序存储器 80C51单片机内部有4K的程序存储器,0000H~3FFFH; 程序从0000H开始;
有一些特殊功能的区域,如中断入口地址。
8
中断入口地址表: 中断源 入口地址 外部中断0 0003H 定时器0 000BH 外部中断1 0013H 定时器1 001BH 串行口
9
二、内部数据存储器 内部数据存储器在物理上分为两个不同的存储空间: 数据存储器空间(低128单元) 特殊功能寄存器空间(高128单元)。
这两个空间是相连的。从用户角度而言,低128单元才是真正的数据存储器。
10
1. 数据存储器空间(低128单元) 数据存储器空间(低128单元)按功能划分为: 通用寄存器区 位寻址区 用户区
1. 数据存储器空间(低128单元) 数据存储器空间(低128单元)按功能划分为: 通用寄存器区 位寻址区 用户区 图2.4 内部数据存储器配置
11
(1).通用寄存器区 00H~1FH的32个单元是4个通用工作寄存器区,每个区有8个8位寄存器,其编号为R0~R7。
在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器区。到底选择哪一个工作组为当前工作区,取决于专用寄存器PSW(程序状态字)中的RS1和RS0位的状态。RS1和RS0的状态可通过指令来改变。用户可以通过设置RS1和RS0位的状态来选择/切换当前工作寄存器区,这给用户保护寄存器中的内容提供了极大的方便。
12
(2).位寻址区 RAM中的20H~2FH的16个单元除了可作为一般RAM单元进行字节寻址外,还可进行位寻址,称作位寻址区。
位寻址区共有16个RAM单元,合计128位,位地址为00H~7FH。80C51单片机具有位处理机(又称布尔处理机)功能,位处理机的存储空间就包括这个位寻址区。表2-3为位寻址区的位地址表。
13
表2-3 位寻址区的位地址
14
(3).用户区 在内部RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下的80个单元就是供用户使用的一般RAM区,地址单元为30H~7FH。 对这部分区域的使用不作任何规定和限制,但应当说明的是,堆栈一般开辟在此区。
15
*关于堆栈 堆栈:是一个特殊的存储区域; 特点:“后进先出”。 单片机的堆栈是地址增加型,即压入数据时地址指针增加。 堆站的操作有 压入:PUSH 弹出:POP
16
2.特殊功能寄存器SFR(高128单元) 内部RAM的高128单元是给特殊寄存器使用的,因此称之为专用寄存器区,其单元地址为80H~FFH。因为这些寄存器的功能已作专门规定,所以称其为专用寄存器或特殊功能寄存器(Special Function Registers)。特殊功能寄存器的总数为21个,仅占用了80H~FFH中的很小一部分。表2-4给出了这些特殊功能寄存器的符号、名称和地址等。
17
表2-4 特殊功能寄存器一览表
18
21个特殊功能寄存器是不连读地分散在内部RAM的高128单元之中,尽管其中还有许多空闲地址,但用户不能使用。
程序计数器PC是独立于SFR之外的唯一的一个不可寻址的专用寄存器。PC不占RAM单元,在物理上是独立存在的。它不包括在21个特殊功能寄存器中。 在21个特殊功能寄存器中,有11个寄存器不仅可以字节寻址,也可以进行位寻址。凡是能进行位寻址的SFR,其特征是字节地址都能被8整除(字节地址的末位是0或8)。 IP中有3位、IE中有2位、PSW中有一位对用户无实际意义,所以直接寻址位为82位;再加上数据存储器中的128位,80C51共计有210位可寻址位。
19
(1)程序计数器PC PC是一个16位的计数器。其内容为将要执行的指令地址,寻址范围达64KB。PC有自动加1功能,从而实现程序的顺序执行。PC没有地址,是不可寻址的(但在物理上是存在的),因此用户无法对它进行读写;但可以通过转移、调用返回等指令改变其内容,以实现程序的转移。
20
(2) 累加器A 累加器A为8位寄存器,是最常用的专用寄存器,功能较多。它既可用于存放操作数,也可用来存放中间结果。80C51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。加、减、乘、除运算指令的运算结果都存放在累加器A或AB寄存器对中。
21
(3) B寄存器 B寄存器是一个8位寄存器,主要用于乘除运算。乘法运算时,B是乘数。乘法操作后,乘积的高8位存于B中。除法运算时,B存放除数。除法操作后,余数存于B中。此外,B寄存器也可作为一般数据寄存器使用。
22
(4) 程序状态字PSW(PROGRAM STATUS WORD)
程序状态字PSW是一个8位寄存器,用于存放程序运行的状态信息。其中,有些位的状态是程序执行的结果,是由硬件自动置位的;而有些位的状态则采用软件的方法来设定。PSW的位状态可以用专门指令进行测试,也可以用指令读出。一些条件转移指令会根据PSW有关位的状态进行程序转移。PSW的各位含义如图2.5所示。其中PSW.1为保留位,未用。
23
图2.5 程序状态字PSW 位序 PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 位含义
CY AC F0 RS1 RS0 OV / P
24
图中: CY(PSW.7):进位标志位 CY是PSW中最常用的标志位,其功能有二:一是存放算术运算的进位标志;二是在位操作中作累加位使用。位传送、位与、位或操作,操作数之一为进位标志位。 AC(PSW.6):辅助进位位 当进行加法或减法操作而产生由低4位向高4位的进位或借位时,由硬件将AC置1;否则就被清除。AC还用于十进制调整,同DA A 指令结合起来使用。
25
F0(PSW.5):用户标志位 它是用户定义的一个状态标记,可以用软件来使它置位或清除,也可用软件测试F0以控制程序的流向。 RS1、RS0(PSW.4,PSW.3):当前寄存器区选择位 用软件来置位或清除,以选择和确定当前工作寄存器区。 RS1、RS0与寄存器区的关系如表2-5所示。
26
表2-5 RS1、RS0与寄存器区的关系 RS1 RS0 当前区号(组) R0~R7地址 00H~07H 1 08H~0FH 2
00H~07H 1 08H~0FH 2 10H~17H 3 18H~1FH
27
OV(PSW.2)溢出标志位 ① 在带符号数运算中,OV=1,表示加减运算结果超出了累加器A所能表示的符号数的有效范围(–128~+127),即产生了溢出,因此运算结果是错误的;否则OV=0,运算结果正确,无溢出。溢出标志OV在硬件上是通过一个异或门来实现的,即:OV=C6⊕C7 其中,C6为D6位向D7位的进位或借位,C7为D7向C的进位或借位。 ② 在乘法运行中,OV=1,表示乘积超过255,即乘积分别放在B与A中;否则OV=0,表示乘积只放在A中。 ③ 在除法运行中,OV=1,表示除数为0,除法不能进行;否则,OV=0,除数不为0,除法可正常进行。
28
P(PSW.0):奇偶位 每个指令周期都由硬件来置位或清除,以表示累加器A中1的个数的奇偶性。P=1,则累加器A中1的个数为奇数;若P=0,则累加器A中1的个数为偶数。
29
(5) 栈指针SP 栈指针SP是一个8位专用寄存器。它指示出堆栈顶部在内部数据存储器中的位置。系统复位后,SP初始化为07H,使得堆栈向上由08H单元开始。考虑到08H~1FH单元属于工作寄存器区,若程序设计中要用到这些区,最好把SP的值置为1FH或更大一些,一般将堆栈开辟在30H~7FH区域中。SP的值越小,堆栈深度就越深,但最大为128字节。
30
SP的值除了可以用软件直接改变外(MOV SP, #DATA),在执行堆栈操作,程序调用、子程序返回及中断返回等指令时,SP的值自动增量或减量。堆栈操作指令为:
PUSH ACC (压入堆栈) POP ACC (弹出堆栈)
31
(6) 数据指针DPTR 数据指针DPTR是唯一1个16位的可寻址的专用寄存器; 由两个8位寄存器DPH和DPL拼装而成,其中DPH为DPTR的高8位,DPL为DPTR的低8位。它既可作为一个16位寄存器来使用,也可作为2个独立的8位寄存器(DPH和DPL)来使用。 DPTR通常用来存放16位地址。既可访问外部RAM,也可访问ROM。例如: MOV DPTR, #2000H MOVX A, @PPTR ;将外RAM2000H单元内容→A MOVC A, @A+DPTR ;访问ROM指令
32
(7) 端口P0~P3 专用寄存器P0、P1、P2和P3分别是I/O口P0~P3的锁存器。 在80C51中,I/O 和RAM统一编址,既可以字节寻址,也可以位寻址,使用起来较方便。 有关P0~P3的详细情况,在后续内容中介绍。
33
(8) 串行数据缓冲器SBUF 串行数据缓冲器SBUF用于存放欲发送或接收的数据,它实际上由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。当要发送的数据传送到SBUF时,进入的是发送缓冲器,当要从SBUF取数据时,则取自接收缓冲器,取走的是刚接收到的数据。
34
(9) 定时器/计数器 80C51单片机有两个16位定时器/计数器T0和T1,它们分别由两个独立的8位寄存器组成,共有4个独立的寄存器:TH0,TL0,TH1,TL1,可对这4个寄存器寻址,但不能把T0和T1当成16位寄存器来访问。
35
(10) 其它控制寄存器 IP、IE、TMOD、TCON、SCON和PCON寄存器分别包含有中断系统、定时器/计数器、串行口和供电方式的控制和状态位,这些寄存器将在以后内容中介绍。
36
三、外部数据存储器 当用户需处理的数据量较大而80C51的内部RAM不够用时,单片机需要在芯片外部连接数据存储器(RAM)和I/O接口。
单片机可访问的外部RAM的地址空间为0~64KB,最多可由16位地址线寻址; 外部RAM与外部I/O口统一编址,即CPU对RAM和I/O口不加区分; 对外部数据存储器只能采用间接寻址方式进行访问,访问外部RAM的专用指令为MOVX。
37
R0、R1和DPTR都可作为间接寻址寄存器使用,前者寻址范围仅为256B,后者为64KB。例如:
MOVX ;(i=0,1)范围为256B MOVX ;范围为64K
38
需要指出的是,尽管80C51单片机的存储器有内部ROM、外部ROM、内部RAM和外部RAM,存储器空间也是重叠的,但在实际应用中不会发生混乱。
对内ROM和外ROM,单片机是通过EA引脚来控制的,内外统一,不会出错; 对内外RAM而言,通过指令MOV和MOVX加以区分。 因此,用户在使用时可尽管放心,只要你使用正确的指令,就能指挥单片机为你正常地工作了。
39
2. 4 并行输入/输出接口电路 单片机芯片内的一项重要内容就是并行I/O口。80C51共有四个8位的并行I/O口,分别记作P0、P1、P2和P3。实际上,它们已被归入专用寄存器之列,具有字节寻址和位寻址功能。 口是一个综合概念。在单片机中,口是一个集数据输入缓冲,数据输出驱动及锁存等多项功能为一体的I/O电路。口有时称为端口。 80C51单片机的四个I/O口都是8位双向口,这些口在结构和特性上是基本相同的,但又各具特点。
40
一、P0口 图2.6 P0的结构图
41
它包括1个输出锁存器,2个三态缓冲器,1个输出驱动电路和1个输出控制电路。输出驱动电路由一对FET(场效应管)组成,其工作状态受输出控制电路的控制。控制电路包括:1个与门、一个反相器和1路模拟转换开关(MUX)。 模拟转换开关的位置由来自CPU的控制信号决定,当控制信号为低电平“0”时,开关处于图示位置,它把输出极与锁存器的端接通。同时,因与门输出为0,输出级中的上拉FET处于截止状态。因此输出极是漏极开路的开漏电路。这时P0可作一般的I/O口用。CPU向端口输出数据时,写脉冲加在触发器的时钟端CP上,这样,与内部总线相连的D端的数据取反后就出现在端上,又经输出FET反相,在P0引脚上出现的数据正好是内部总线的数据。P0的输出级可以驱动8个LSTTL输入,但在开漏状态下,为了驱动NMOS输入端,需接外部上拉电阻。
42
1.输出操作(写操作) 当P0口用作输出口使用时,内部的写脉冲加在D触发器的CP端,数据写入锁存器,并向端口引脚输出。即锁存器的输出与引脚的输出状态是一致的。作通用输出口时,输出级属漏极开路,在驱动NMOS电路时应外接上拉电阻。
43
2.输入操作(读操作) 当P0口作为输入口使用时,应区分读引脚和读锁存器(端口)两种情况。为此,在电路中有两个用于读入的三态缓冲器。 有读引脚和读锁存器之分。
44
Ø读引脚 在端口处于输入状态的情况下读引脚。作输入口使用时,应先向锁存器写“1”,这时输出级2个 FET截止,可用作高阻抗输入(系统复位时P0=FFH)。读引脚,就是读芯片引脚的数据。这时使用下方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据经缓冲器通过内部总线读进来。MOV类传送指令进行读口操作就是属于这种情况。
45
Ø读锁存器 在端口已处于输出状态的情况下读锁存器。读锁存器是通过上方的缓冲器读锁存器Q端的状态。在端口已处于输出状态的情况下,不能正常读取引脚的信号,只能读取锁存器的状态;这样安排的目的是适应对端口进行“读—修改—写”操作指令的需要。例如“ANL P0,A”就属于这类指令,执行时先读入P0口锁存器中的数据,然后与A的内容进行逻辑“与”,再把结果送到P0口输出。从这种意义上说,该指令又可看作是输出指令。除MOV类指令外的其它口操作指令都属于这种情况。
46
注意: 当P0口进行一般的I/O输出时,由于输出电路是漏极开路电路,必须外接上拉电阻才能有高电平输出。作输入使用时,应区分读引脚和读锁存器。读引脚时,必须先向电路中的锁存器写入“1”,使FET截止,引脚处于悬浮状态,可作为高阻抗输入。因为,若曾经输出锁存过数据0,则FET导通,引脚上的电位始终被钳在“0”电平上,输入数据不可能被正确地读入。 P0口在实际应用中,多作为地址/数据总线使用,这要比作一般I/O口应用简单。此时,可分为两种情况:一种情况是从P0输出地址或数据,这时控制信号应为高电平“1”,转换开关把反相器输出端与下拉FET接通,同时与门开锁。输出的地址或数据信号既通过与门去驱动上提FET,又通过反相器去驱动下拉FET。另一种情况是从P0输入数据,这时信号仍应从输入缓冲器进入内部总线。
47
3.结论 P0口既可作地址/数据总线使用,又可作通用I/O口用。当P0口作地址/数据总线使用时,就不能再把它当通用I/O口使用了。 作通用输出口时,输出级属漏极开路,在驱动NMOS电路时应外接上拉电阻。 作通用输入口使用时,应区分读引脚和读锁存器。读引脚时,应先向锁存器写“1”,这时输出级2个 FET截止,可用作高阻抗输入。
48
二、P1口 P1口的口线逻辑电路如图2.7。
49
因为P1口通常是用作通用I/O使用的,所以在电路结构上与P0口有一些不同之处。首先,它不再需要多路开关MUX;其次,电路内部已有上拉电阻,与场效应管共同组成输出驱动电路。因此,P1口用作输出口使用时,已能向外提供推拉电流负载,无须再外接上拉电阻。当P1口作为输入口使用时,同样也需向其锁存器写入“1”,使输出驱动电路的FET截止。
50
P1口通常作为通用I/O使用; 作输出口使用时,无须外接上拉电阻; 作输入口使用时,应区分读引脚和读锁存器。读引脚时,应先向锁存器写“1”。
51
四、P3口 P3口的口线逻辑电路如图2.9。
52
P3口的特点在于:为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。
由于第二功能信号有输入和输出两类,因此分两种情况说明。 对于第二功能为输出的信号引脚,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出道路的畅通。当输出第二功能信号时,该位的锁存器应置“1”,使与门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。 对于第二功能为输入的信号引脚,在口线的输入通道上增加了一个缓冲器,输入的第二功能信号就从这个缓冲器的输出端取得,而作为I/O使用的数据输入,仍取自三态缓冲器的输出端,不管是作为输入口使用,还是作为第二功能信号输入使用,输出电路中的锁存器和第二功能输出信号线都应保持高电平。(等于“1”)。
53
P3口的各口线既可作通用I/O口用,又可作第二功能使用。当某些口线作为第二功能使用时,不能再把当通用I/O口使用;其它未用的口线仍可作为通用I/O口线使用。
P3口作通用I/O使用时,与P1口相似。作输出口使用时,无须外接上拉电阻;作输入口使用时,应区分读引脚和读锁存器。读引脚时,应先向锁存器写“1”。
54
五、P0~P3口的使用特点 综上所述,在一般使用情况下,P1和P2口可作为通用I/O口提供给用户,且无须上拉电阻;P0口作为数据总线使用;而P3口通常工作在第二功能状态。当然,在芯片外连接有RAM和I/O口时,P2口作为地址总线使用。
55
C51的外围电路 单片机应该说是一个小系统了;然而,由于实用系统中有一些功能器件无法集成到芯片内部,如晶振、复位电路等,因此需要在片外附加相应的电路,下面就介绍一下实际应用中的单片机外围电路设计。
56
一、时钟电路与时序 时钟电路用于产生单片机工作所需要的时钟信号;而时序研究的是指令中各信号之间的关系。 单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路就应在唯一的时钟信号控制下严格地按时序进行工作。
57
1.时钟信号的产生 Ø采用内部时钟电路 在80C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2;而在芯片的外部, XTAL1 和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路,如图2.10所示。
59
时钟电路产生的振荡脉冲,经过触发器进行二分频之后才能为单片机的时钟脉冲信号。请特别注意时钟脉冲与振荡脉冲之间的二分频关系,否则会造成概念上的错误。
电容C1和C2的典型值为30PF。晶体的振荡频率范围是1.2MHz~12MHz。晶体振荡频率愈高,则系统的时钟频率也高,单片机运算速度也就快;但反过来,运行速度快,对存储器的速度要求就高,对印刷电路板的工艺要求也高。80C51在通常应用情况下,使用振荡频率为6MHz或12MHz的石英晶体。
60
Ø引入外部脉冲电路 在由多片80C51单片机组成的系统中,为了使各单片机之间的时钟信号同步,应当引入唯一的公用外部脉冲作为系统中各单片机的振荡脉冲,这时外部脉冲信号是从从XTAL1引入,XTAL2悬空,其连接如图2.11所示。
62
2.时序的定时单位 时序是用定时单位来说明的,80C51的时序定时单位共有4个,从小到大依次是: 节拍 状态 机器周期 指令周期。
63
Ø节拍与状态 振荡脉冲的周期叫做节拍,用P表示。振荡脉冲经过二分频后,就是单片机的时钟信号,把时钟信号的周期定义为状态,用S表示。 这样,一个状态就包括两个节拍,其前半周期对应的节拍叫节拍1(P1),后半周期对应的节拍叫节拍2(P2)。 Ø机器周期 80C51采用定时控制方式,因此它有固定的机器周期。80C51的一个机器周期的宽度为6个状态,并依次表示为S1~S6,由于一个状态又包括两个节拍,因此一个机器周期总共有12个节拍,分别记作S1P1、S1P2~S6P1、S6P2。 由于一个机器周期共有12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。当振荡脉冲频率为12MHz时,一个机器周期为1μs,当振荡脉冲频率为6MHz时,一个机器周期为2μs。
64
Ø指令周期 指令周期是最大的时序定时单位,执行一条指令需要的时间称之为指令周期。根据指令的不同,80C51的指令周期可以包含有1、2、4个机器周期。当然,1个机器周期的指令执行的最快。
65
3.典型时序分析 有关时序的内容比较繁杂,这里仅以外部RAM或I/O口的访问为例介绍一下单片机的时序,给大家建立时序的初步概念。
67
对此时序说明如下: ①第一个机器周期是读ROM的取指时序。从第二个机器周期开始读外部RAM。 ②第一个机器周期的S4之后,为读外部RAM送出地址,其中包括P0的A7~A0,P2的A15~A8。 ③在第二个机器周期中,第一个ALE信号不再出现,但读选通有效,以进行RAM 读操作,然后从P0口把读出数据送单片机。 ④第二个机器周期的第二个ALE信号仍然出现,无取指操作。
68
二、复位电路 1. 复位的概念 复位是单片机的初始化操作,其主要功能是把PC初始化为0000H ,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死机状态时,也需按复位键复位而进行重新启动。
69
除PC外,复位操作还对其它一些专用寄存器有影响,它们的复位状态如下:
70
寄存器 状态 PC 0000H TCON 00H ACC TL0 PSW TH0 SP 07H TL1 DPTR TH1 P0~P3 FFH SCON IP XXX00000B SBUF 不定 IE 0XX00000B PCON 0XXXXXXXB TMOD
71
2. 复位信号及外部复位电路 RST是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即2个机器周期)以上。若使用频率为6MHz的晶体,则复位信号持续时间应超过4μs才能完成复位操作。
72
复位操作有上电自动复位和按键手动复位两种方式:
上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图2.13(a)所示。这样,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位、初始化。 按键手动复位是通过使复位端经电阻与VCC电源接通而实现的,它兼具上电复位功能。其电路如图(b)所示。 对于6MHz晶振而言,电路中的电阻(R=1K)、电容参数(C=22μf)能保证复位信号高电平的持续时间大于2个机器周期。
73
(a) (b) 图2.13 各种复位电路
74
习题 1 2 3
Similar presentations