500 likes | 711 Views
第二章 MCS-51 单片机芯片硬件结构. 2.1 MCS-51 系列单片机结构及组成 2 .1 .1 MCS-51 系列单片机结构框图. MCS-51 系列单片机属于 总线结构. 一个 8 位 CPU. 2 .1 .2 MCS-51 系列单片机组成. 包括运算器、控制器以及若干 寄存器 等部件组成。. ( 1 ) 运算器. 算术和逻辑运算,可对半字节( 4 位)和单字节数据进行操作; 加、减、乘、除、加 1 、减 1 、比较等算术运算; 与、或、异或、求补、循环等逻辑运算; 布尔处理器。. ( 2 )程序计数器 PC.
E N D
第二章 MCS-51单片机芯片硬件结构 2.1 MCS-51系列单片机结构及组成 2 .1 .1 MCS-51系列单片机结构框图 MCS-51系列单片机属于总线结构
一个8位CPU 2 .1 .2 MCS-51系列单片机组成 包括运算器、控制器以及若干寄存器等部件组成。 (1)运算器 算术和逻辑运算,可对半字节(4位)和单字节数据进行操作; 加、减、乘、除、加1、减1、比较等算术运算; 与、或、异或、求补、循环等逻辑运算; 布尔处理器。
(2)程序计数器PC PC用来存放即将要执行的指令地址,共16位,可对64KROM直接寻址。PC低8位经P0口输出,高8位经P2口输出。 (3)指令寄存器 指令寄存器存放指令代码。 CPU执行指令过程: 由程序存储器(ROM)中读取指令代码送入指令寄存器,经译码器译码后由定时与控制电路发出相应的控制信号,完成指令功能。
(4)定时与控制部件 时钟电路: MCS-51芯片内部有一个高增益反相放大器,其输入端为XTAL1,输出端为XTAL2。 有两种时钟生成电路,内部方式,外部方式。
4k/8k字节程序存储器(ROM) 51系列4k字节;52系列8k字节 128/256字节数据存储器(RAM) 51系列128字节;52系列256字节 2/3个16位定时/计数器 51系列2个16位定时/计数器;52系列3个
32条可编程I/O口线(4个8位并行I/O端口) 可寻址64k外部数据存储器(RAM)和64k外部程序存储器(ROM) 一个可编程全双工串行口; 五个中断源、两个优先级嵌套中断结构
ALE/ (30),ALE:允许地址锁存信号。(数据线、地址线复用)当访问外部存储器时,ALE信号负跳变将P0口上低8位地址送入锁存器。 ALE低电平时,P0口上的内容和锁存器输出一致 引脚分布(40脚双列直插封装(DIP)方式) 1)主电源引脚; 2)外接晶体或外部振荡器引脚;XTAL1、XTAL2 3)控制、选通或复用电源引脚:
为编程脉冲输入端,对片内程序存储器进行 编程时,此脚输入编程脉冲。 非访问外部存储器期间,ALE以1/6振荡频率输出,访问外部存储器时以1/12振荡频率输出。 RST(9脚):复位信号 延续两个机器周期以上的高电平,复位有效。
(29脚):访问外部程序存储器选通信号, 低电平有效。 /Vpp(31脚):访问内部或外部ROM选择信号。 高电平时( ) ,访问内部ROM(PC指针超过4K, 0FFFH时,自动转向外部ROM),保持低电平,则访问外部ROM。(对于8031, 接低电平)
4)I/O口引脚(32个引脚) 四个8位双向I/O端口(P0、P1、P2、P3); 每一条I/O线都能独立地用作输入或输出。 P0口(32—39)低8位地址/数据线复用或I/O口。 P1口(1—8)常用的I/O口。 P2口(21—28)常用I/O口或高8位地址线。 P3口(10—17)双功能口。
信号引脚的第二功能 P3口第二功能
程序存储器(ROM)--用来存放程序和始终要保留的数据。程序存储器(ROM)--用来存放程序和始终要保留的数据。 2-2 MCS-51存储器 数据存储器(RAM)--用来存放程序运行中所需要的常数和变量。当然,全局数据也可以放在RAM中。 特点:程序存储器(ROM)、数据存储器(RAM)分开, 各有各的寻址系统、控制信号和功能。
从物理空间上看: MCS-51单片机有四个存储器地址空间。 片内程序存储器 片外程序存储器 片内数据存储器 片外数据存储器
程序存储器映象 数据存储器映象 8051存储器映象
程序存储器以PC(程序计数器)作地址指针,可寻址空间为64K(0000H—FFFFH)字节。程序存储器以PC(程序计数器)作地址指针,可寻址空间为64K(0000H—FFFFH)字节。 8051/8751单片机内部分别驻留4K(0000H—0FFFH)字节ROM/EPROM。 8031则没有片内程序存储器。 2.2.1 程序存储器
程序从片内ROM开始执行,当PC值超过片内ROM容量时会自动转向外部存储器空间。程序从片内ROM开始执行,当PC值超过片内ROM容量时会自动转向外部存储器空间。 程序从外部存储器开始执行。 8031单片机 接低电平。 51系列单片机64K字节程序存储器统一编址。
51系列单片机复位后PC=0000H,系统从0000H开始执行程序。安排一条跳转指令。51系列单片机复位后PC=0000H,系统从0000H开始执行程序。安排一条跳转指令。 0003H—0032H单元被保留专用于中断服务程序(入口地址)。 每个中断服务程序只有8个字节单元存放,显然不够,故此8个单元通常放一条跳转指令。指向被实际分配的中断服务程序段。
中断服务程序首地址: 外部中断0( ) 0003H 定时器0溢出中断 000BH 外部中断1( ) 0013H 定时器1溢出中断 001BH 串行口中断 0023H 定时器2溢出/T2EX(负跳变) 002BH
MCS-51系列单片机的数据存储器在物理和逻辑上都分为两个地址空间。MCS-51系列单片机的数据存储器在物理和逻辑上都分为两个地址空间。 2-2-2 数据存储器 00H—7FH(0—127)128字节RAM区; 80H—FFH(128—255)128字节专用寄存器区。
内部RAM低128字节(00H—7FH) 寄存器区 四个通用寄存器区,每个区有8个工作寄存器R0—R7 根据程序状态字PSW(特殊功能寄存器,地址D0H)中的D4D3位来指示的。通过对PSW的D4D3的修改,便能任意选择一个工作寄存器区。 D4D3=00—0区; D4D3=01—1区; D4D3=10—2区; D4D3=11—3区
位寻址区 位寻址区(20H—2FH)16个字节。 16*8=128位,每一位都有一个位地址,范围为:00H—7FH,位地址区也可作为一般RAM使用。
用户RAM区(数据缓冲区) 单元地址:30H~7FH 在此区域中,用户只能以存储单元(字节)形式使用。 通常将堆栈建立在此区域中。
内部RAM高128字节(80H—FFH) 专用功能寄存器区(SFR) 2-2-3 外部数据存储器 以后介绍
2-2-3 专用功能寄存器(SFR) 分布在RAM区域80H—FFH中,具体执行功能: 锁存器、定时器、串行口数据缓冲器、各种控制寄存器、状态寄存器等。
常用专用功能寄存器 ●累加器ACC(最常用专用寄存器) 暂存寄存器,用于提供操作数和存放运算结果。 直接与内部总线相连。一般信息传递和交换都 要通过ACC。
●寄存器B 乘法指令两个操作数分别取自A、B,其结果放在A、B寄存器队中;除法指令,被除数取自A,除数取自B,商放A,余数放B。
●程序状态控制字PSW RS1,RS0--选择工作寄存器区; CY--高位进位标志,8位运算产生进位或借位; AC--辅助进位标志,半字节进位标志; OV--溢出标志位,用于带符号数运算的溢出。 P—奇偶校验标志位,A寄存器中奇偶性判别。 “1”的个数为偶P=0 “1”的个数位奇P=1 F0:用户标志位。
●数据指针DPTR 16位寄存器,DPH,DPL 用来访问外部RAM的地址寄存器,地址范围64K。 ●端口P0—P3专用寄存器P0—P3 端口名和寄存器名一一对应 可采用直接寻址方式参与操作。MOV A,P0
●串行数据缓冲器SBUF 存放欲发送或已接收的数据。虽然用一个缓冲器99H,但却以两个独立的缓冲器出现。一个发送,一个接收。 ●定时器/计数器 两个16为定时/计数器T0、T1。各有两个8为独立寄存器组成,TH0、TL0,TH1、TL1。 ●其他控制寄存器
P0口:地址/数据复用口 2-3 并行I/O端口电路
锁存器:数据输出 三态输入数据缓冲器:数据输入 多路转换器MUX,控制电路 作为一般I/O口使用 数据输出时(写P0口):由于锁存器的存在,故P0端口可以直接和外设相连。 内部写脉冲加在D触发器CP端,数据写入锁存器,由端口引脚输出。
数据输入时(读P0口),有两种情况: 读引脚:读芯片引脚上的数据,“读引脚”缓冲器打开,通过内部数据总线读入;MOV指令的读口操作。 读端口:通过打开读锁存器缓冲器读锁存器Q端的状态,例如语句:ANL P0,A 。 作为地址/数据复用口使用 打开控制与门,使得内部地址/数据线与驱动场效应管栅极反相接通状态。
根据端口特点,P0,P2口结构基本一致,内部有一个多路开关MUX,根据CPU控制可作为I/O口,也可作为外部存储器扩展时用作16位地址总线。根据端口特点,P0,P2口结构基本一致,内部有一个多路开关MUX,根据CPU控制可作为I/O口,也可作为外部存储器扩展时用作16位地址总线。 P1,P3口结构基本一致,为双向口。 注意,一般地说,P1口多用作I/O或位操作;而P3口多用于第二功能。
端口功能 P0口:为三态双向口,扩展外部存储器时,它是地址总线和数据总线的复用(低8位)。低8位地址通过ALE信号负跳变将其锁存在外部锁存器中。单独作I/O口用时,由于输出电路是漏极开路,必须外接上拉电阻。能带8个LSTTL电路。
P1口:常用I/O口,每一位都能作为可编程的输入或输出线。输出端无需上拉电阻。P1口:常用I/O口,每一位都能作为可编程的输入或输出线。输出端无需上拉电阻。 P2口:可以作为输入口或输出口使用;但一般作为扩展系统的地址总线,输出高8位地址。与P0口一起组成16位地址总线。 P3口:双功能口。作为第一功能使用同P1口。第二功能如下表:
振荡有两种方式:外部、内部 时钟发生器:将震荡频率2分频,为芯片提供一个两相时钟信号。 时序定时单位: (1)拍节P:振荡脉冲周期,用P表示; (2)状态S:时钟信号周期,用S表示; 2-4 振荡器\时钟及时序
(3)机器周期:MCS-51采用定时方式,因此有固定的机器周期,一个机器周期等于6个状态周期,12个振荡周期;(3)机器周期:MCS-51采用定时方式,因此有固定的机器周期,一个机器周期等于6个状态周期,12个振荡周期; (4)指令周期:执行一条指令所需要的时间。可包含一、二、三或四个机器周期。 时钟频率是振荡频率2分频;机器频率是振荡频率12分频。
当振荡频率为12M时,一个机器周期是1微秒(s)当振荡频率为12M时,一个机器周期是1微秒(s) 频率=1/周期,周期=1/频率 一个振荡周期=1/12(s),一个机器周期是1(s)。 当振荡频率为6M时,一个机器周期是2微秒(s) MCS-51共有111条指令。按其长度可分为: 单字节指令、双字节指令、三字节指令。
单字节单周期指令 例:INC A 双字节单周期指令 例:ADD A,DATA 单字节双周期指令例:INC DPTR
当ALE(ALE信号为振荡频率6分频)正跳变时,对应单片机进行一次读指令操作。一个机器周期二次出现,在S1P2和S2P1及S4P2和S5P1期间。当ALE(ALE信号为振荡频率6分频)正跳变时,对应单片机进行一次读指令操作。一个机器周期二次出现,在S1P2和S2P1及S4P2和S5P1期间。 有效宽度为一个状态。 (1)单字节单周期指令:INC A 只需进行一次读指令操作(指令只有一个字节),当第二个ALE有效时,由于PC没有加1,读出的还是原指令。属于一次无效操作。
(2)双字节单周期指令:ADD A,#data ALE两次读操作都有效,第一次读操作码(指令第一字节),第二次读立即数(指令第二字节)。 (3)单字节双周期指令:INC DPTR 两个机器周期共进行四次读指令操作,但其后三次的读操作都是无效的。
MOVX:先在ROM中读出指令,然后对外部RAM进行读/写操作。MOVX:先在ROM中读出指令,然后对外部RAM进行读/写操作。 第一个机器周期和其他指令一样,第一次读指令 (操作码)有效,第二次读指令操作无效。第二机 器周期时,进行外部RAM访问(与 , 信号有关) 与ALE无关(ALE保持低电平),因此不产生读指令操作(取指操作)。
P0、P2提供16位地址。 第一周期S4之后为读外部RAM送出地址; 第二周期,第一个ALE不出现,读选通 信号有效, 进行RAM读操作,从P0口将读出数据送单片机; 第二个机器周期的第二个ALE信号出现,进行外部ROM读操作,属无效操作。