单片机笔记(1)

文章目录

  • 第2章 89C51单片机的结构与原理
    • 2.1 89C51单片机的主要特性
    • 2.2 89C51单片机的内部总体结构
    • 2.3 89C51单片机的引脚功能
      • 2.3.1 89C51单片机引脚功能
      • 2.3.2 三总线结构
      • 2.3.3 单片机工作原理
      • 2.3.4 点亮最小单片机系统
    • 2.4 89C51单片机的主要组成部分
      • 2.4.1 CPU
      • 2.4.2 存储器
        • 1. 程序存储器
        • 2. 数据存储器
        • 3. 特殊功能寄存器(SFR)
          • (1)程序计数器 PC (不属于SFR)
          • (2)累加器A
          • (3)寄存器B
          • (4)状态字寄存器 PSW
          • (5)堆栈指针SP
          • (6)数据指针DPTR
            • *关于DPTR与PC的比较
    • 2.4.3 并行I/O口
      • 1. P0口的结构
      • 2. P1口的结构
      • 3. P2口的结构
      • 3. P3口的结构

第2章 89C51单片机的结构与原理

2.1 89C51单片机的主要特性

89C51具有如下特性:
(1)面向控制的8位CPU;
(2)一个片内振荡器和时钟产生的电路;
(3)片内4 KB Flash ROM 程序存储器;
(4)128B的片内数据存储器;
(5)可寻址64 KB的片外程序存储器和片外数据存储器控制电路;
(6)2个16位定时/计数器;
(7)4个并行I/O口,共32条可单独编程的的I/O线;
(8)5个中断源,2个中断优先级;
(9)一个全双工的异步串行口;
(10)21个特殊功能寄存器(SFR);
(11)具有节点工作方式

2.2 89C51单片机的内部总体结构

       有8个部件组成,CPU、片内数据存储器、片内程序存储器、输入/输出接口、可编程串行口、定时/计数器、中断系统和特殊功能寄存器。见书P8 图2-1。 单片机笔记(1)_第1张图片

       CPU:单片机的最核心部分,它是整个单片机的控制和指挥中心,完成所有的计算和控制任务。
       程序存储器:用于存放单片机的程序。
       数据存储器:用于存放内部待处理的数据和处理后的结果。
       并口和串口:数据传输通道,方便CPU从芯片外部取得待处理的对象及将处理结果送到芯片外部。
       中断控制逻辑:处理临时到达的突发事件。
       定时器/计数器:完成对外部输入脉冲的计数或者根据内部的时钟及定时设置,周期性的产生定时信号。
       内部总线:内部CPU与程序存储器、数据存储器、并行I/O接口、串行I/O接口和定时器/计数器之间都是通过内部总线联系在一起。

2.3 89C51单片机的引脚功能

2.3.1 89C51单片机引脚功能

       本书讨论的是40脚双列直插封装。

       如图是89C51单片机的引脚图(导出自Proteus,DIP40) 。

单片机笔记(1)_第2张图片

  1. 电源引脚 VSS 和 VCC
    VSS(20脚):接地端;
    VCC(40脚):电源端;

  2. 时钟振荡电路引脚
    XTAL1(19脚)和XTAL2(18脚)的内部是一个振荡电路。
    当使用内部振荡电路时在这两个管脚上外接石英晶体和微调电容;
    当使用外部时钟时,用于接外部时钟脉冲信号,此时XTAL1接外部时钟脉冲,XTAL2悬空。

  3. 输入/输出引脚
    P0,P1,P2,P3共四个8位并行I/O口。

    口 线 第二功能 名称
    P3.0 RXD 串行数据接收端
    P3.1 TXD 串行数据发送端
    P3.2 I N T 0 ‾ \rm \overline {INT0} INT0 外部中断 0 申请输入端
    P3.3 I N T 1 ‾ \rm \overline {INT1} INT1 外部中断 1 申请输入端
    P3.4 T0 定时器 0 计数输入端
    P3.5 T1 定时器 1 计数输入端
    P3.6 W R ‾ \rm \overline {WR} WR 外部 RAM 写选通
    P3.7 R D ‾ \rm \overline {RD} RD 外部 RAM 读选通
  4. 控制信号引脚 RESET、 A L E / P R O G ‾ ​ \rm {ALE/}\overline {PROG}​ ALE/PROG P S E N ‾ ​ \rm \overline{PSEN}​ PSEN E A ‾ / V P P ​ \rm \overline{EA}/VPP​ EA/VPP

    A L E ​ \rm ALE​ ALE :地址锁存允许信号输出端;
    P S E N ‾ ​ \rm \overline{PSEN}​ PSEN:外部程序存储器读选通信号输出端,低电平有效;
    E A ‾ ​ \rm \overline{EA}​ EA:访问内部/外部程序存储器选择控制信号;
    R E S E T ​ \rm RESET​ RESET:复位信号输入端。

2.3.2 三总线结构

       单片机的引脚除了电源、复位、时钟接入和用户I/O外,扩展出的其他引脚构成了三总线,如下图。

单片机笔记(1)_第3张图片

       地址总线:16位,可寻址64K,由P0口(A0~A7), P2口(A8~A15)组成;
       数据总线:8位,由P0口提供;
       控制总线:由P3口的部分引脚实现( R D ‾ , W R ‾ \rm \overline{RD},\overline{WR} RD,WR)及 R E S E T \rm RESET RESET E A ‾ , P S E N ‾ \rm \overline{EA},\overline{PSEN} EA,PSEN, A L E \rm ALE ALE 4根独立控制线。

2.3.3 单片机工作原理

       单片机在电路连接无误后,将程序下载到单片机的程序存储器中,单片机系统就可以上电工作了。
       上电复位后,从存储器的0000H单元开始取指令,并执行指令。

2.3.4 点亮最小单片机系统

       按图连线,上电工作后,点亮一个发光二极管。
       由仿真结果可见,当P2.0引脚输出低电平时,PN结导通,发光二极管LED-GREEN上有电流流过,发光二极管发光。

单片机笔记(1)_第4张图片

       代码部分如下

		ORG  0000H
		MOV  P2,#11111110H  ;P2.0引脚输出低电平
		END

2.4 89C51单片机的主要组成部分

       89C51单片机的主要组成:CPU、存储器和I/O接口。

2.4.1 CPU

       CPU是单片机的核心部分,89C51单片机内部有一个8位的CPU,由运算器和控制器组成。
        运算器:主要用来实现数据的传送,数据的 算术和逻辑运算,位变量处理等。
        存储器:统一指挥和控制计算机工作的部件。

2.4.2 存储器

       89C51可寻址范围64KB(16位地址线);

       89C51单片机在物理上有4个独立的存储空间
               64K字节程序存储器空间;
               128字节内部RAM;
               128字节内部特殊功能寄存器空间;
               64K外部数据存储器空间

       64KB的程序存储器中,有4KB的地址对片内ROM(程序存储器)和片外ROM是公共的,地址为0000H~0FFFH, 从1000H~FFFFH为外部ROM的地址, 即内部ROM地址为0000H~0FFFH, 外部ROM地址为0000H~FFFFH;

       128B的内部RAM(数据存储器)地址从00H~7FH(8位地址); 64KB外部RAM地址从0000H~FFFFH.
单片机笔记(1)_第5张图片

1. 程序存储器

       89C51内部有 4KB Flash ROM,片外最多可扩展 64 KB ROM,两者统一编址,CPU的控制器专门提供 一个控制信号 E A ‾ \rm \overline{EA} EA 来区分内部ROM和外部ROM的公共地址区0000H~0FFFH;当 E A ‾ \rm \overline{EA} EA接高电平,单片机从片内4KB的ROM取指令,指令地址超过0FFFH后,自动转向片外ROM。当 E A ‾ \rm \overline{EA} EA接低电平时,CPU只从片外ROM取指令。

       89C51复位后,CPU总是从0000H开始执行程序。

2. 数据存储器

       RAM分为内外两部分,89C51内部有128B RAM,地址为00H~7FH;片外最多可扩展64KB RAM,地址为0000H~FFFFH。

       内部128B RAM 从功能和用途可以划分为三个区域:

       工作寄存器区:00H~1FH, 4组工作寄存器,由PSW中的RS0和RS1选择。每组有R0~R7共8个工作寄存器;

       位寻址区:20H~2FH,不仅可以字节寻址,8个字节的每一位都可以位寻址 ;
               位地址范围 00H~7FH, 地址范围 20H~2FH
               位地址表示方法:位地址,字节地址.位
               位地址与字节地址的转换关系 : 位地址=(字节地址-20H)*8+Di的 i 值

       用户RAM区:30H~7FH,可用作堆栈或数据缓冲器。
               若用作堆栈,后进先出。可用于保护现场和断点地址。
               堆栈指针sp,指示栈顶的位置。
               堆栈操作指令:

          %进栈指令%
			PUSH ; (sp)+1→sp,数据进栈
          %出栈指令%
			POP  ; (sp)-1→sp,数据出栈

3. 特殊功能寄存器(SFR)

       离散地分布在80H~FFH中,共21个 :

​        (1)是MCS-51单片机中各个功能部件所对应的寄存器
​         (2)用以存放相应功能部件的控制命令、状态或数据的区域。

       与片内RAM统一编址(未占用的地址单元无定义)。
        (1)部分可以位寻址,也可以字节寻址。其中带*号的(能被8整除)寄存器即可字节寻址又可位寻址。
       (2)编程中,可使用符号,也可使用地址。
        (3)可位寻址的可用位符号,可用位地址,也可用“字节 地址.位”,还可用“寄存器名.位”

寄存器符号 地 址 寄存器名称
* ACC E0H 累加器
* B F0H 乘法寄存器
* PSW D0H 程序状态字
SP 81H 堆栈指针
DPL 82H 数据存储器指针(低8位)
DPH 83H 数据存储器指针(高8位)
* IE A8H 中断允许控制器
* IP D8H 中断优先级控制器
* P0 80H 通道0
* P1 90H 通道1
* P2 A0H 通道2
* P3 B0H 通道3
PCON 87H 电源控制和波特率选择
* SCON 98H 串行口控制器
SBUF 99H 串行数据缓冲器
* TCON 88H 定时控制器
TMOD 89H 定时方式选择
TL0 8AH 定时器0 低8位
TL1 8BH 定时器1 低8位
TH0 8CH 定时器0 高8位
TH1 8DH 定时器1高8位

       CPU中使用的特殊功能寄存器:

(1)程序计数器 PC (不属于SFR)

       16位,存放下一条将要从程序存储器中 取出的指令的地址。 用户无法对其进行读写,只能通过转移、调用和返回等指令来改变其内容。
基本工作方式:每取出1字节机器码后,自动加1 ;
执行转移指令时,被置入新的数值。

(2)累加器A

       最常用的8位特殊功能寄存器,它既可用于存放操作数,也可用来存放中间结果。

(3)寄存器B

       一个8位寄存器,主要用于乘除法运算。也可作一般寄存器使用。

(4)状态字寄存器 PSW

8位,用于存放程序运行的状态信息。

D7 D6 D5 D4 D3 D2 D1 D0
CY AC FO RS1 RS0 OV P

       CY(PSW.7):进位标志,是累加器 A的溢出位,如果操作结果在最高位有进位或借位时,置1;
        AC(PSW.6):辅助进位标志,低半字节进位位,加减法运算中低4位向高4位有进位或借位时,置1;
        FO(PSW.5):用户标志位;
        RS1(PSW.4)、RS0(PSW.3):工作寄存器组选择位;

RS1 RS0 当前寄存器组 对应的RAM地址
0 0 第0组 00H~07H
0 1 第1组 08H~0FH
1 0 第2组 10H~17H
1 1 第3组 18H~1FH

       OV(PSW.2):溢出标志位;
        P(PSW.0):奇偶标志位,跟踪累加器A内容的奇偶性。如果有奇数个“1”,则P置1,反之为0.

(5)堆栈指针SP

       堆栈式在内存中专门开辟出来按照 “先进后出、后进先出” 的原则进行存取的RAM区域。

       堆栈可设置在内部 RAM 的任意区,堆栈共有两种操作:进栈和出栈,都是对栈顶单元进行的。

单片机笔记(1)_第6张图片

       89C51单片机复位后,堆栈指针SP总是初始化到内部 RAM 地址07H。

(6)数据指针DPTR

       DPTR是要给16位寄存器,用来存放16位的存储器地址,以实现对外部RAM的访问。可以分为两个8位寄存器:DPH、DPL。

*关于DPTR与PC的比较

       相同点:都是与地址有关的16位寄存器。
                      作为地址寄存器时,PC与DPTR都通过P0,P2口(作为16为地址总线)输出。

       不同点:PC与程序存储器有关,DPTR与数据存储器有关;
                      PC的输出与ALE及/PSEN引脚有关,DPTR与 A L E \rm ALE ALE R D ‾ \rm \overline{RD} RD W R ‾ \rm \overline{WR} WR引脚有关。
                      PC只能作为16位寄存器;
                      PC不可访问,其内容变化与程序流程有关。

2.4.3 并行I/O口

       基本功能:
P0:I/O口(系统扩展时作为地址/数据总线口,分时复用)。
P1: I/O口
P2: I/O口(系统扩展时作为高8位地址总线口)
P3: I/O口(特殊输入/输出线)

1. P0口的结构

       P0口字节地址为80H,位地址为80H~87H
单片机笔记(1)_第7张图片
       如图,当控制线C=0时,MUX开关向下,P0口作为普通 I/O口使用;当C=1时,MUX开关向上,P0口作为地址/数据总线使用。由于P0内部没有上拉电阻,每根口线必须 外接上拉电阻。P1~P3口内部有上拉电阻,不用外接。

2. P1口的结构

       P1口的字节地址为90H,位地址为90H~97H,只能作为普通I/O口使用,没有转换开关MUX。

单片机笔记(1)_第8张图片

       当P1口输出高电平时,可以向外提供拉电流负载,所以不必再接上拉电阻;

       当输入时,与P0口一样,必须先向锁存器写 “1” ,使场效应管截止

       通过一条指令将数据写入P1的数据锁存器,然后通过输出驱动器送到端口引脚。

       MOV P1, A      ;累加器A中内容送P1口 

       读端口,为适应对口进行“读-修改-写”类指令的需要。

	   ANL P1,#0FH    ;读P1锁存器中数据,与立 即数 0FH进行逻辑与操作后,将结果写回P1口。

3. P2口的结构

       P2口的字节地址为0A0H,位地址为0A0H~0A7H, 可以作为普通I/O口或高8位地址线。

单片机笔记(1)_第9张图片

       P2口作第二功能时:作为系统扩展的地址总线口,输出高8位地址A8~A15。

       P2口高8位地址来源:CPU访问外部程序存贮器时,来源于PC 的高8位。 CPU访问外部数据存贮器时,来源于DPH。

3. P3口的结构

       P3口的字节地址为0B0H,位地址为0B0H~0B7H, 可以作为普通I/O口或特殊输入/输出线。

单片机笔记(1)_第10张图片

你可能感兴趣的:(笔记)