第二章单片微机的基本结构浙江大学电气学院彭勇刚第二章单片微机的基本结构2.180C51单片微机的内部结构2.280C51单片微机的引脚及其功能2.380C51CPU的结构和特点2.4存储器结构和地址空间2.5并行输入/输出端口2.6布尔(位)处理器2.780C51单片微机的工作方式2.180C51单片微机的内部结构单片机的8大部件:中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行输入/输出口(P0口-P3口)、串行口、定时/计数器、中断系统及特殊功能寄存器。总之,单片机是由片内总线连接8大部件构成。2.2MCS-51单片机的引脚及片外总线结构1.MCS-51单片机的引脚(40引脚PDIP封装)P0.0—P0.78P1.0—P1.78P2.0—P2.78P3.0—P3.78引脚名称引脚个数Vcc,GND2XTAL1,XTAL22RESET1EA/Vpp1ALE/PROG1PSEN1电源端,接+5V;接地端片内振荡电路输入/输出端复位信号输入端读片外ROM控制端/编程电源输入端低8位地址锁存允许信号输出端/编程脉冲输入端读片外程序存储器选通信号输出端4组8位并行I/O口⑴地址总线AB(AddressBus)地址线A0~A15共16位,P2口提供高8位地址A8~A15,P0口经地址锁存器提供低8位地址A0~A7。片外存储器可寻址范围达64KB(即=65536个字节)。⑵数据总线DB(DataBus)数据线D0-D7共8位,由P0口提供。所以,P0口分时输送低8位地址(通过地址锁存器锁存)和8位数据信息。⑶控制总线CB(ControlBus)控制总线由P3口的第二功能(P3.6)、(P3.7)和3根独立的控制线、ALE和组成。WRRDEAPSEN2、MCS-51单片机的片外三总线结构所谓总线,就是连接单片机与系统中各部件的一组公共的信号线。2.380C51CPU的结构图2.380C51CPU的结构和特点2.3.1CPU的组成(1)运算器8位算术逻辑运算单元ALU累加器A(ACC)寄存器B程序状态字寄存器PSW(2)控制器程序计数器PC堆栈指针SP数据指针DPTR指令寄存器IR定时与控制逻辑完成算术运算、逻辑运算和位操作。a、以主振频率为基准产生时钟信号,控制取指令、执行指令、存取操作数或运算结果等操作。b、向其他部件发出各种微控制信号,使各部件自动协调工作。是程序中最繁忙的特殊功能寄存器,功能是向ALU提供操作数、存放运算的中间结果、数据传送的中转站。主要用于乘、除运算8位寄存器,用于存放指令执行状态,供程序查询和判断16位自动加1功能的计数器8位专用寄存器,存放堆栈栈顶存储单元的地址存放16位地址,用特定指令来访问片外数据存储器或程序存储器2.3.2指令执行的基本过程向存储器装入程序执行指令取指令执行指令程序——为了完成某项工作,将一系列指令有序地组合指令——要求单片机执行某种操作的命令从存储器中取出指令,对指令进行译码,明确该指令执行何种操作,以及操作数的存放地址,再根据这个地址获取操作数按操作码指明的操作类型对获取的操作数进行操作程序计数器PC(ProgramCounter)——16位自动加1功能的计数器。PC中的内容总是CPU将要执行的那条指令所存放的存储单元的首地址,在CPU从存储单元取指令的过程中,每取1个字节的内容,程序计数器PC就自动加1,在取完这条指令后,PC的内容是下一条要执行的指令所存放的存储单元的首地址。2.3.3单片机硬件最小系统单片机最小系统指单片机正常工作需要的最少元件,以一以AT89C51最小系统为例,常为4部分:工作电源、时钟电路、复位电路、存储器设置电路。单片机硬件系统通常以最小系统作为基本部分,配以不同的外围电路,实现不同的电路功能。单片机最小控制系统的结构图X1X2P0P1P2P3TXDRXDINT0INT1返回CPURAMROM中断系统串行口并行口定时计数器振荡电路T0T1外设外设外设RST+5V单片机最小硬件系统CPURAMROM定时中断串口CBP2P3P1P0P0P2P3P1锁存器ALE单片机扩展系统的结构图RST+5VX1X2ABDB存储器I/O口外设返回2.3.3.1时钟电路用于产生单片机工作所需要的时钟信号单片机芯片内部有一个高增益反向放大器,通过引脚XTAL1和XTAL2,接晶体振荡器CYS和微调电容器C1、C2形成反馈电路(通常取值在20~30pF),构成稳定的自激振荡器并产生振荡脉冲。振荡电路产生的振荡脉冲不直接使用,而是经分频后为系统所用。fosc外部振荡方式:引入外部脉冲信号作为单片机的振荡脉冲,对于80C51单片机而言,这时外部脉冲信号是经XTAL1引脚注入,而XTAL2引脚悬空,这种方式常用于多块芯片同时工作,这样便于同步。1、节拍与状态把振荡脉冲的周期定义为节拍(用“P”表示)。振荡脉冲经过二分频后,就是单片机的时钟信号,把时钟信号的周期定义为状态(用“S”表示)。这样,一个状态就包含两个拍节,其前半周期对应的节拍叫节拍1(P1),后半周期对应的节拍叫节拍2(P2)。2、机器周期规定一个机器周期的宽度为6个状态,并依次表示为:S1~S6。由于一个状态又包括两个节拍,因此一个机器周期总共有12个节拍,分别记作S1P1、S1P2、……S6P12。由于一个机器周期共有12个振荡脉冲周期,因此机器周期就是振荡频率的十二分频。2.3.3.2时序与时序定时单位3、指令周期指令周期是最大的时序定时单位,执行一条指令所需要的时间称之为指令周期。指令周期以机器周期的数目来表示,MCS-51的指令周期根据指令的不同,可包含有一(单周期)、二(双周期)、三或四个机器周期。指令的运算速度和指令所包含的机器周期数有关,机器周期数越少的指令执行速度越快。例如当振荡脉冲频率为12MHz时,一个机器周期为1微秒,当振荡脉冲频率为6MHz时,一个机器周期为2微秒。对于振荡脉冲频率为12MHz的单周期指令、双周期指令、三周期指令和四周期指令其指令的执行时间分别为:1微秒、2微秒、3微秒和4微秒。各种周期之间的关系P1P2S1振荡周期状态周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2时序要点:•一个指令周期=1,2或者4个机器周期•一个机器周期=12个晶振周期•一个机器周期输出两个ALE脉冲即:•ALE的输出频率fALE=(1/6)fOSC•如果使用晶振频率为12MHZ,则fALE=2MHZ,指令执行时间=1,2,4微秒。例:单片机外接晶振频率12MHZ时,求各时序单位的值。振荡周期=状态周期=机器周期=指令周期=1/fosc=1/12MHZ=0.0833us2/fosc=2/12MHZ=0.1667us12/fosc=12/12MHZ=1us(1~4)机器周期=1~4us2019/12/2220a)单字节单周期;b)双字节单周期指令;c)单字节双周期字节;d)单字节双周期指令2019/12/2221时序的共同点:每一次ALE信号有效,CPU均从ROM中读取指令码(包括操作码和操作数),但不一定有效,读了之后再丢弃(假读)。有效时,PC+1→PC(程序计数器PC加1);无效时不变。其余时间用于执行指令操作功能,但在时序中没有完全反映出。如双字节单机器周期,分别在S1、S4读操作码和操作数,执行指令就一定在S2、S3、S5、S6中完成。2.3.3.3MCS-51单片机的复位复位操作通常有两种基本形式:上电自动复位、手动按键复位接通电源后自动实现复位操作电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位如何进行复位呢?在8C051单片机的RST引脚上输入高电平并至少保持两个机器周期(即24个振荡周期)以上时,复位过程即可完成。如果RST引脚持续保持高电平,单片机就处于循环复位状态。使系统回复到初始状态的操作上电瞬间,RST获得高点平,随着电容C的充电,RST上的高电平逐渐下降。想一想,如果12M晶振,高电平维持的时间至少多少?MCS-51单片机复位后的状态寄存器复位状态寄存器复位状态PC0000HTCON00HA00HT2CON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0~P3FFHSCON00HIPXX000000BSBUFXXHIE0X000000BPCON0XXX0000BTMOD00H2.4MCS-51存储器结构和地址空间计算机的两种不同结构——冯·诺依曼型:中央处理器(CPU)输入/输出部件存储器逻辑部件(ALU)控制部件计算机的两种不同结构——哈佛型:中央处理器(CPU)输入/输出部件程序存储器逻辑部件(ALU)控制部件数据存储器单片机的存储器——几个有关的概念:计算机中的存储器就是一个用来存放货物(包括数据和程序)的仓库,仓库中有很多用来存放货物(数据)的货架,货架分成很多格子,格子的大小是1个字节,这就是存储器中的存储单元。在这个仓库中存放数据可以一个字节一个字节的放、也可以一个位一个位的放,为了存取货物(数据)方便,每个格子都有一个编号,这个编号被称为地址,即存储单元地址,地址用一个2位或4位的十六进制数来表示。MCS51单片机存储器结构及地址空间MCS-51单片机存储器可分为5类:片内程序存储器,片外程序存储器,片内数据存储器,片外数据存储器,特殊功能寄存器。MCS-51单片机存储器的地址空间可分为3个:1、片内片外统一编址的64KB程序存储器地址空间(用16位地址);2、片内数据存储器与特殊功能寄存器统一编址的256字节内部数据存储器地址空间(用8位地址);3、64KB片外数据存储器地址空间(16位地址)低4KB(0000H~0FFFH)的片外程序存储器和4K的片内程序存储器的地址空间是公共的,控制信号EA来区分片内和片外程序存储器程序存储器的某些单元是保留给系统使用的:1、0000H-0002H单元,系统的启动单元,即是所有执行程序的入口地址。单片机复位后,程序计数器PC的内容为0000H,使单片机必然从0000H单元取指令执行程序。2、0003H-002AH单元,中断服务程序的入口地址,共40个单元,分成5段,每段8个单元,分配给5个中断源。用户程序不应该进入这个区域。因此,一般从0000H开始,存放一条绝对转移指令,用户程序则由转移后的地址开始执行,从而避开以上给系统使用的ROM单元。64KB数据存储器RAM在地址上是和64KB程序存储器ROM的地址重叠,8051通过不同的信号来选通RAM和ROM:当对片外RAM读、写数据时,用读、写控制信号RD或WR来选通;当对片外ROM取指令时,采用选通信号PSEN•程序存储器的0000H-002AH共43个单元用作存储特定程序的入口地址。0000H-0002H这3个单元是系统的启动单元;0003H-002AH共40个单元是中断服务程序地址区,它被分为五段,每段8个单元,分别分配给5个中断源:•0003H-000AH外部中断0中断服务程序地址区;•000BH-OO12H定时/计数器0中断服务程序地址区;•0013H-001AH外部中断1中断服务程序地址区;•001BH-0022H定时/计数器1中断服务程序地址区;•0023H-002AH串行口中断服务程序地址区。2FH存储器配置(片内RAM):片内RAM128字节(00H—7FH)00H20H7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SFR分布在80H-FFH其中92个位可位寻址80HFFH所有的RAM区(包括工作寄存器区、位寻址区、通用RAM区)都可以用于存放据。80C51128字节特殊功能寄存器区128字节统一编址R0R2R1R3R4R5R6R707H02H01H00H06H04H05H03H08H1FH工作寄存器区3工作寄存器区2工作寄存器区1工作寄存器区00FH10H17