第2章 AT89C51单片机内部结构基础 2.1 内部结构和引脚功能 2.1.1 内部结构框图和主要部件 2.1.1 内部结构框图和主要部件 1.内部结构框图 AT89C51单片机内部结构框图如图2-1所示。该图包含了该单片机的基本硬件资源。
图2-1 AT89C51单片机内部结构框图
2.内部结构主要部件 (1)1个8位的中央处理器(CPU),是单片机的核心 (2)128个字节的内部数据RAM,地址为00H~7FH (3)21特殊功能寄存器SFR, 离散分布于地址80H~FFH中 (4)程序计数器PC,是物理上独立的16位专用寄存器 (5)4K 字节FLASH内部程序存储器(内ROM) (6)4个8位可编程I/O口(P0、P1、P2、P3) (7)1个UART串行通信口 (8)2个16位定时器/计数器 (9)5个中断源,两个中断优先级的中断控制系统 (10)一个片内振荡器和时钟电路 (11)用于扩展外RAM、外ROM等的结构 地址总线(AB);数据总线(DB)控制总线(CB)
2.1.2 引脚功能 40个引脚分四类: 电源(2)、时钟(2)、控制(4)和I/O引脚(32) 图2-2 AT89C51单片机引脚图和逻辑符号图
1.电源引脚(括号中数为引脚编号) (1)Vss(20):接地端。 (2)Vcc(40):接DC电源端 2.时钟引脚 (1)XTAL1(19);(2)XTAL2(18):外接晶体引脚。 3.控制线 (1)RST(9):复位输入端。 (2)ALE/(/PROG)(30):地址锁存允许/编程脉冲。 (3)/PSEN(29): 外ROM读选通信号。 (4)/EA/Vpp(31): 内、外ROM选择/编程电源 /EA为内、外ROM选择端。ROM寻址范围为64KB。当/EA保持 高电平时,先访问内ROM,当PC的值超过4KB时,自动转向 执行外ROM中的程序。当/EA保持低电平时,只访问外 ROM。 4.P0~P3: 4个8位输入/输出口,一共32条引脚。
2.2 时钟电路与复位电路 2.2.1 时钟电路 时钟电路用于产生单片机工作所需要的时钟信号。通常有两 种方式:内部时钟方式;外部时钟方式。 2.2.1 时钟电路 时钟电路用于产生单片机工作所需要的时钟信号。通常有两 种方式:内部时钟方式;外部时钟方式。 图2-3 时钟电路原理框图 B 外部时钟方式 A 内部时钟方式
只要在XTAL1和XTAL2引脚上跨接振荡器元件(例晶体振荡 1.振荡器元件、振荡周期 只要在XTAL1和XTAL2引脚上跨接振荡器元件(例晶体振荡 器),则构成振荡器。 AT89C51振荡器频率最高24MHz,也可很 低。振荡频率的倒数称振荡周期。如图2-4所示。 2.状态时钟发生器、状态时钟周期 内部时钟发生器实质上是一个二分频的触发器。其输入由振荡器引入,输出为两个节拍(P1节拍和P2节拍)的状态时钟信号。显然状态时钟周期是振荡周期的两倍。每个周期的前半周期,节拍1(P1)信号有效;后半周期,节拍2(P2)信号有效。如图2-4所示。 3.机器周期 一个机器周期由6个状态组成。即S1、S2、S3、S4、S5、S6。机器周期等于6个状态时钟周期或等于12个振荡周期。如图2-4所示 4.指令周期 指令周期是单片机执行一条指令所占用的时间(一般用机器周期表示)。AT89C51单片机有单机器、双机器周期和四机器周期指令。
图2-4 振荡周期、状态时钟周期、机器周期、指令周期间的关系 例:单片机晶振频率为12M,其振荡周期、状态时钟周期、机器周期、单周期指令、双周期指令、四周期指令分别为1/12μs、1/6μs、1μs、1μs、2μs、4μs。
2.2.2复位电路 1.复位 复位是令单片机初始化的操作。其主要功能是初始化单片机工作状态:使(PC)=0H ;并使表2-1中的寄存器取初值。 表2-1 复位状态下受影响寄存器的值(表中×表示不定) 寄存器 复位时的内容 ACC 00H TL0 B TH0 PSW TL1 SP 07H TH1 DPTR 0000H SCON P0~P3 FFH SBUF 不定 IP ×××00000B IE 0××00000B TMOD PCON 0×××0000B TCON
2.复位信号 RST引脚是复位信号的输入端。要实现复位操作,必须使RST引脚上至少保持2个机器周期的高电平,再从高电平变为低电平完成复位。 (A)上电复位 (B)按键复位 图2-5复位电路图 3.复位电路 复位操作有 上电自动复 位、按键电 平复位等方 式。见图2- 5所示。
2.3存储器结构 2.3.1 存储器组成 2.3.2 程序存储器ROM AT89C51存储器由ROM、RAM组成。如图2-6、2-7所示。 2.3存储器结构 2.3.1 存储器组成 AT89C51存储器由ROM、RAM组成。如图2-6、2-7所示。 图2-6 程序存储器ROM结构 2.3.2 程序存储器ROM AT89C51有4KB片内ROM,用于存储(固化)程序,故简称“程序内存”。当程序内存不够用时,可扩展片外程序存储器(外ROM)。其结构如图2-6所示。片内、片外ROM地址空间是统一编址空间。地址范围0000H~FFFFH(64KB)。单片机工作时,只能读ROM,不能写。单片机断电后,存储在ROM中的程序不会消失。低4KB程序可存储在片内FLASH ROM中,也可存储在片外ROM中。外ROM的低4K地址与内ROM重叠。执行选择由/EA引脚来控制。/EA=0(0电平),复位后,从片外ROM中的0000H地址单元开始执行程序,且只能执行外ROM中的程序。/EA=1(高电平),复位后,从片内ROM的0000H地址单元开始执行程序,当(PC)>0FFFH(4KB)时,自动转到片外ROM中执行。
1.内部(片内)数据存储器 2.3.3 数据存储器RAM 如图2-7所示,有三大部分: 1.内部数据RAM为128字节, 地址00H~7FH。 2.专用寄存器,21个字节, 在地址80H ~FFH中。 3.外RAM,地址0000H~FFFFH 1.内部(片内)数据存储器 128个字节,使用时可分四区。 (1)工作寄存器区 片内数据存储器RAM中最低32个 单元(00H~1FH)是工作寄存 器区。按地址由小到大分为四 个组,即0组、1组、2组、 3组。如图2-8(A)所示。
图2-8(A)片内数据存储器结构的工作寄存器区 (2) 位寻址区 每个组有8个8位寄存器,地址由低到高依次命名为R0~R7。当前工作的只能一个组。选哪个工作寄存器组,由专用寄存器PSW中的RS0和RS1位确定。该两位由指令设置。复位值RS0=0、RS1=0,即使用的是0组,它为默认工作寄存器组。在程序不很复杂的情况下,一般只使用工作寄存器0组。不使用的另外三个组可作别用。 地址范围 分 组 18 ~ 1F 3组(R0~R7)工作寄存器组 10 ~ 17 2组(R0~R7)工作寄存器组 08 ~ 0F 1组(R0~R7)工作寄存器组 00 ~ 07 0组(R0~R7),默认工作寄存器组 图2-8(A)片内数据存储器结构的工作寄存器区 (2) 位寻址区 工作寄存器区上面的16个单元(20H~2FH)构成固定的可位寻址存储区。每个单元有8位,16个单元共128位,每个位都有一个位地址,如图2-8(B)所示。可用位操作指令。若程序中对它们无位操作,则该区的地址单元可作别用。
图2-8 (B)片内数据存储器的位寻址区 字节地址 可 寻 址 位 地 址 2F 7F 7E 7D 7C 7B 8A 79 78 2E 77 可 寻 址 位 地 址 2F 7F 7E 7D 7C 7B 8A 79 78 2E 77 76 75 74 73 72 71 70 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 27 3F 3E 3D 3C 3B 3A 39 38 26 37 36 35 34 33 32 31 30 25 24 23 22 21 20 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 图2-8 (B)片内数据存储器的位寻址区
(3)数据缓冲区 片内数据存储器RAM中,30~7FH地址单元一般(若堆栈未设置在该区中)可作数据缓冲区用。用于存放各种数据和中间结果。但要注意:没有使用的工作寄存器单元和没使用的可位寻址单元都可用作数据缓冲区用。 (4)堆栈区(堆栈) 是在片内数据存储器RAM中开辟的一片特殊数据存储区,是CPU用于暂时存放数据的特殊“仓库”。用堆栈指针SP指向堆栈栈顶地址。堆栈的最低地址叫栈底。其特殊在于:栈底可根据片内数据存储器的使用情况由指令设定,对堆栈存取数据遵守“先进后出”原则,在此过程中堆栈栈顶地址也相应变化,即(SP)内容相应变化。复位后栈底为07H地址单元,因这时堆栈内还未存数据,指示栈顶的堆栈指针SP的内容与栈底值同为7H,即(SP)=07。用户也可根据需要与程序设计情况设置SP的初值。
2.特殊功能寄存器(SFR) 特殊功能寄存器(SFR,也称专用寄存器)是单片机各功能部件所对应的寄存器,是用来存放相应功能部件的控制命令、状态或数据的区域。AT89C51单片机内的端口锁存器、程序状态字、定时器、累加器、堆栈指针、数据指针,以及其它控制寄存器等都是特殊功能寄存器。它们离散地分布在片内RAM的高128B(80H ~FFH)中。共21个(字节)。它们的分配情况见表2-3。 表2-3 特殊功能寄存器(SFR) 特殊功能寄存器 符号及名称 字节 地址 位地址、位标志 D7 D6 D5 D4 D3 D2 D1 D0 B:B寄存器 F0 F7 F6 F5 F4 F3 F2 F1 B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0 ACC:累加器 E0 E7 E6 E5 E4 E3 E2 E1 ACC.7 ACC.6 ACC.5 ACC.4 ACC.3 ACC.2 ACC.1 ACC.0 PSW:程序状态字 CY AC RS1 RS0 OV --- P IP:中断优先级寄存器 B8 BC BB BA B9 ---- PS PT1 PX1 PT0 PX0
特殊功能寄存器 符号及名称 位地址、位标志 不可位寻址 字节 地址 位地址、位标志 D7 D6 D5 D4 D3 D2 D1 D0 P3:P3口 B0 B7 B6 B5 B4 B3 B2 B1 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 IE:中断允许寄存器 A8 AF AE AD AC AB AA A9 /EA --- ES EY1 EX1 ET0 EX0 P2:P2口 A0 A7 A6 A5 A4 A3 A2 A1 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 SBUF:串行口数据缓冲寄存器 99 不可位寻址 SCON:串行口控制寄存器 98 9F 9E 9D 9C 9B 9A SM0 SM1 SM2 REN TB8 RB8 TI RI P1:P1口 90 97 96 95 94 93 92 91 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 TH1:T1寄存器高8位 8D TH0:T0寄存器高8位 8C TL1 :T1寄存器低8位 8B TL0 :T0寄存器低8位 8A
特殊功能寄存器 符号及名称 字节地址 位地址、位标志 D7 D6 D5 D4 D3 D2 D1 D0 TMOD: 定时器/计数器方式寄存器 89 不可位寻址 GATE C/(/T) M1 M0 TCON: 定时器/计数器控制寄存器 88 8F 8E 8D 8C 8B 8A TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 PCON:电源控制寄存器 87 SMOD --- GF1 GF0 PD IDL DPH:数据指针0高8位 83 DPL:数据指针0低8位 82 SP:栈指针寄存器 81 P0:P0口 80 86 85 84 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 注意1:其中有些可字节寻址又可位寻址,有些只可字节寻址。 凡是地址能被8整除(字节末位为0H或8H)的特殊功能寄存器都是可字节寻址又可位寻址的特殊功能寄存器。
(2)通用寄存器B: F0H, 乘除法指令中要用它。可字节寻址也可位寻址。 例: (1)累加器ACC: E0H, 助记符为A,是一个最为常用的特殊功能寄存器。许多指令的操作数取自于它,许多运算的结果存放在它中。可字节寻址也可位寻址。 (2)通用寄存器B: F0H, 乘除法指令中要用它。可字节寻址也可位寻址。 (3)程序状态字PSW :D0H,是一个八位的标志寄存器,用来存放指令执行后的有关状态。可字节寻址也可位寻址。 它的各位定义如表2-4 所示。 表2-4 PSW各位定义 PSW.7 (最高位) PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 (最低位) C AC F0 RS1 RS0 OV — P 进位标志 辅助进位 用户可用位 工作寄存器选择位 溢出标志 未定义位 奇偶标志 (4)中断优先级寄存器IP:B8H,用于设置中断优先级。可字节寻址也可位寻址。 (5)P1口:90H,输入/输出(I/O)口寄存器。可字节寻址也可位寻址。
注意2:凡是地址不能被8整除(字节末位非0H或非8H)的特殊功能寄存器都是只能字节寻址不能位寻址的特殊功能寄存器。 例: (1)SP堆栈指针寄存器: 81H,不可位寻址。 (2)DPTR数据指针:DPTR是一个16位特殊功能寄存器,由两个八位寄存器DPH(高8位,83H)和DPL(低8位,82H)组成。不可位寻址。 (3)SBUF串行通信数据缓冲器:99H,不可位寻址。 (4)定时器/计数器的两对寄存器(TH0,TL0和TH1,TL1)不可位寻址。 3.片外数据存储器RAM 若片内RAM不够用时可扩展片外数据存储器RAM,最大范围为0000H~FFFFH,共64KB。 从图2-7可看出外RAM有部分地址(0~FFH)与内RAM是重叠的。汇编语言中,内、外RAM以不同的指令操作码区别,内RAM指令用MOV表示,外RAM指令用MOVX表示。
练习与思考2 1,2,3,4,5,6,10,11,14 点击进下章点击进上章