1 / 68

第二章 MCS-51 单片机硬件结构

第二章 MCS-51 单片机硬件结构. 2.1.1 MCS-51 单片机结构框图. 2.1 MCS-51 单片机的结构及组成. MCS-51 单片机属于 总线结构. 总线:单片机各部件之间传输信息的公用通道。. 2.1.2 MCS-51 单片机的组成. 一、 1 个 8 位的 CPU. 包括:运算器、控制器以及若干寄存器组成. 运算器. 定时控制部件. 程序计数器 PC. ● PC 用来存放即将要执行的指令地址; ● 共 16 位,编码范围为 0000H ~ FFFFH ,即 51 单片机对 ROM 的寻址范围为 64K 。

hamal
Download Presentation

第二章 MCS-51 单片机硬件结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 MCS-51单片机硬件结构

  2. 2.1.1 MCS-51单片机结构框图 2.1 MCS-51单片机的结构及组成 MCS-51单片机属于总线结构 总线:单片机各部件之间传输信息的公用通道。

  3. 2.1.2 MCS-51单片机的组成 一、1个8位的CPU 包括:运算器、控制器以及若干寄存器组成 • 运算器

  4. 定时控制部件

  5. 程序计数器PC ●PC用来存放即将要执行的指令地址; ● 共16位,编码范围为0000H~FFFFH,即51单片机对ROM的寻址范围为64K。 ●PC低8位经P0口输出,高8位经P2口输出。 • 指令寄存器 存放指令代码

  6. 二、4k/8k字节程序存储器(ROM) 三、128/256字节数据存储器(RAM) 四、2/3个16位定时/计数器

  7. 五、4个8位并行 I/O端口, 六、可寻址64k外部数据存储器(RAM)和64k外部程序存储器(ROM) 七、1个可编程全双工串行口 八、5个中断源、两个优先级嵌套中断结构

  8. 2.1.3 MCS-51单片机芯片引脚

  9. PROG——编程脉冲输入端,对片内程序存储器进行编程时,此脚输入编程脉冲。PROG——编程脉冲输入端,对片内程序存储器进行编程时,此脚输入编程脉冲。 ALE的频率: 不访问外部存储器时,ALE以1/6振荡频率输出; 访问外部存储器时,以1/12振荡频率输出。

  10. I/O口 第二功能 功 能 含 义 P3.0 RXD 串行数据接收端 P3.1 TXD 串行数据发送端 P3.2 INT0 外部中断0请求输入 P3.3 INT1 外部中断1请求输入 P3.4 T0 定时/计数器0 计数输入 P3.5 T1 定时/计数器1 计数输入 P3.6 WR 外部RAM写选通输出 P3.7 RD 外部RAM读选通输出

  11. 2.2 MCS-51存储器

  12. FFFFH 外部ROM 60k 内部 1000H 0FFFH EA=0 内部ROM 外部ROM EA=1 4k 0000H 一、程序存储器ROM 程序存储器ROM的结构 片外专用 片内、片外公用,但不能同时占用

  13. 程序存储器以PC(程序计数器)作为地址指针,可寻址空间为64K字节,范围为0000H~FFFFH。程序存储器以PC(程序计数器)作为地址指针,可寻址空间为64K字节,范围为0000H~FFFFH。 • 8051/8751/8951单片机内部分别驻留4K字节ROM,范围为0000H~0FFFH。 • 8031没有片内ROM,使用时必须扩展外部ROM。 • 51系列单片机64K字节统一编址,地址在逻辑上是相连的。

  14. EA=1 程序从片内ROM开始执行,当PC值超过片内ROM容量时会自动转向外部存储器空间。 • EA=0 程序从外部ROM开始执行。 • 8031单片机EA必须接低电平。

  15. 51单片机复位后PC=0000H,系统从0000H地址开始执行程序。通常在此单元处安排一条跳转指令,因为0003H~0032H单元保留专用于中断服务程序(入口地址). 51单片机复位后PC=0000H,系统从0000H地址开始执行程序。通常在此单元处安排一条跳转指令,因为0003H~0032H单元保留专用于中断服务程序(入口地址).

  16. FFFFH 用户ROM区 0033H 0032H (T2) 002BH 002AH 串行口 0023H 0022H T1 001BH 001AH INT1 0013H 0012H T0 000BH 000AH INT0 0003H 跳转指令 0000H 中断服务程序 首地址 002BH 0023H 001BH 中断服务程序 (入口地址) 0013H 000BH 0003H

  17. MOVX FFFFH 外部RAM (64k) MOV 0100H FFH 00FFH 特殊功能寄存器 128B 80H 7FH 007FH 内部RAM 128B 00H 0000H 二、数据存储器RAM 数据存储器RAM的结构

  18. 片内RAM:

  19. 7FH 用户自由使用区 30H 2FH 位寻址区 20H 1FH 第3组通用寄存器区 R0~R7 18H 17H 第2组通用寄存器区 R0~R7 10H 0FH 第1组通用寄存器区 R0~R7 08H 07H 第0组通用寄存器区 R0~R7 00H • 内部RAM低128字节(00H~7FH) • 通用寄存器区

  20. 位寻址区

  21. 24H 27H 26H 25H 24H 23H 22H 21H 20H 23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H 22H 17H 16H 15H 14H 13H 12H 11H 10H • 位寻址区

  22. 用户自由使用区(数据缓冲区) 8051的堆栈一般设在30H~7FH的范围内。

  23. ——特殊功能寄存器 • 内部RAM高128字节(80H~FFH) 51系列单片机共有21个特殊功能寄存器,每个SFR 占用一个RAM单元,离散地分布在片内RAM高128字节地 址中,并未占满80~FFH,对空闲地址的操作无意义。 在21个SFR中,有11个可进行位寻址。

  24. 累加器A ——地址为:E0H ◇累加器A又记作ACC,是最常用特殊功能寄存器 ◇暂存寄存器,用于提供操作数和存放运算结果 ◇直接与内部总线相连,一般信息传递和交换都要通过A ◇可位寻址

  25. 寄存器B ——地址为:F0H ◇乘法指令两个操作数分别取自A,B,其积的高8位自动放B,低8位自动放A。 ◇除法指令被除数取自A,除数取自B,其商自动放A,余数自动放B。 ◇可位寻址,也可作为RAM的一个单元使用。

  26. PSW.4 PSW.3 PSW.7 PSW.6 PSW.5 PSW.2 PSW.1 PSW.0 • 程序状态控制字PSW ——地址为:D0H Program Status Word C—— 高位进位标志,8位运算产生进位或借位; AC—— 辅助位进位标志,半字节进位标志; F0 —— 用户定义标志;

  27. RS1、RS0—— 工作寄存器区选址位; OV—— 溢出标志位,用于带符号数运算的溢出; P —— 奇偶校验标志位,判别累加器A中1的奇偶性; “1”的个数为偶数P=0 “1”的个数为奇数P=1

  28. 堆栈指针SP (Stack Pointer) 堆栈 ◆数据仓库; ◆数据存取规律为“先进后出”或“后进先出”; ◆51单片机的堆栈区是向地址增大的方向生成的,一般位于RAM区30H~7FH; ◆ 有栈底和栈顶之分。

  29. 栈底 ◆ 栈底地址是固定不变的,它决定了堆栈在RAM中的物理位置,由SP的初始值决定。 ◆51单片机中SP的默认值为07H,栈底就是07H,堆栈区的范围就是07H~7FH,这是不合理的,编程时必须修改栈底值。

  30. 栈顶 ◆ 栈顶地址始终在SP中,即由SP指示,是可以改变的,它决定堆栈中是否存放有数据。 ◆当堆栈中无数据时,栈顶和栈底重合,SP中的值一定时栈底地址。 堆栈指针SP 8位寄存器,能自动加1或减1,总是指向栈顶; 入栈时,SP先加1,数据再压入SP指向的单元。 出栈时, 先将SP指向单元的数据弹出后,SP再减1。

  31. 数据指针DPTR (Data Pointer) 16位寄存器,由DPH、DPL拼装而成; 主要用来存放片外RAM的地址,范围为64K。 • 端口P0~P3、寄存器P0~P3 端口名和寄存器名一一对应; 可采用直接寻址方式参与操作。

  32. 串行数据缓冲器SBUF 存放欲发送或已接收的数据; 只有一个地址单元(99H),既可以发送也可以接收。 • 定时器/计数器 两个16位定时/计数器T0、T1; 各有两个8位独立寄存器组成TH0、TL0,TH1、TL1。

  33. 其它控制寄存器 字节地址能被8整除的话就可以位寻址。 在21个SFR中,有11个可进行位寻址,共88个位地址,其中,5个未用,其余83个位地址离散地分布于80H~FFH范围内。

  34. 2.3 并行I/O端口 一、P0口

  35. 输出0的过程:D=0 → Q=1→ MUX →T2导通→P0.X=0 输出1的过程:D=1 → Q=0→ MUX →T2截止→P0.X为漏极开路,处于高阻悬空状态,无法输出高电平! 1. P0口作通用I/O口 控制信号为0,与门封锁,T1截止,MUX打在下边; 用作输出 可见,P0口作一般I/O口时必须外接上拉电阻。

  36. 用作输入 —— 读引脚:读芯片引脚上的数据 输入同时加在T2、T3上; 若P0.X在用作输入之前刚输出过0,则T2导通, P0.X的电位就始终被钳制为0;P0.X突然转为输入,此时无论输入0或1,最后通过T3检测出来的电平都是0,使输入的1无法读入,导致输入错误! 反之,若P0.X在用作输入之前刚输出过1,T2截止,此1是由外接上拉电阻来获得; P0.X突然转为输入,则可以正确的检测引脚电平情况。

  37. 可见,P0口用作一般输入口用时,CPU不能直接去读引脚电平。在输入数据之前,应先向口锁存器写1,使T2截止。这是输入之前的一个准备工作,鉴于此,P0口在用作一般I/O口时是属于准双向口。可见,P0口用作一般输入口用时,CPU不能直接去读引脚电平。在输入数据之前,应先向口锁存器写1,使T2截止。这是输入之前的一个准备工作,鉴于此,P0口在用作一般I/O口时是属于准双向口。

  38. 用作输入 —— 读锁存器 在有些情况下,端口已处于输出状态,CPU的某些操作是先将端口原来的数据读入,经过修改、运算后再写到端口输出,这称为“读-改-写”。 若此时端口负载是一个三极管基极,且原端口输出为1,PN结导通后将端口电平拉低,若此时直接读端口信息,将会把原来的输出1读成0,为此,单片机提供“读锁存器”操作。

  39. 51单片机约定: 凡属于“读-改-写”方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。 “读-改-写”指令的特点是:从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上

  40. 2. P0口作地址/数据复用总线口 • 输出地址/数据信息 控制信号为1,与门打开,MUX打在上边,T1、T2的输入始终相反,构成推拉式的输出结构,交替导通; • 输入数据——读外部ROM或RAM P0口输出低8位地址信息后,将变为数据总线。 控制信号为0,与门封锁,MUX打在下边,T1截止,类似于作一般I/O口时读引脚的情况,但此时CPU会自动向口锁存器写1,使T2截止,数据由三态缓冲器读入。

  41. 小结 • P0口既可作通用I/O口使用,又可作地址/数据复用总线口。 • P0口作通用I/O口时 ◇ P0 是一个准双向口,输入前必须先向口锁存器写1。 ◇ 输出时,T2为漏极开路,必须接上拉电阻。 • P0口作地址/数据复用总线口时 CPU会自动向口锁存器写1,对用户而言,P0口是一个真正的双向口。

  42. 二、P1口

  43. P1口特点 • 只能作通用I/O口使用,每一位都可单独设为输入或输出; • 内部已有上拉电阻,不是漏极开路输出口,可以直接输出而无需外接上拉电阻; • 准双向口,输入前必须先向口锁存器写1。

More Related