第06-07章--MCS51串行通信技术和扩展技术

第06-07章–MCS51串行通信技术和扩展技术


参考教材:《单片机原理与工程应用》向敏 朱智勤 等编著

这是MCS-51单片机系列的最后一篇啦。对各位有帮助就好。

第06章串行通信技术

6.1 串行通信的基本知识

6.1.1 串行通信的概念

并行通信方式是指能同时传送多个数据位;串行通信方式是指数据一位一位按顺序传送。

在这里插入图片描述

串行通信在发送和接收双方只需要一条或两条传输信道,连接方便、易于实现且成本低,适合于计算机之间、计算机与单片机或者单片机之间等设备相互通信。

6.1.2 串行通信的工作方式

根据通信双方连接方式或者是信息传输模式的不同,可以将串行通信工作方式分成三种:

  1. 单工通信:只允许数据由设备A的串口发送器传输到设备B的串口接收器。
  2. 半双工方式:设备A与设备B的数据传送是双向的,但同一时刻只允许单方向传送。
  3. 全双工方式:数据的传送是双向的,且可以同时接收和发送数据。

在这里插入图片描述

根据通信双方是否存在同步时钟控制要求,串行通信分为同步传送异步传送两种方式。

  1. 异步传送:异步传送方式的特点是数据在线路上传送是不连续的。它是以字符为单位来传送的,各个字符可以是连续传送也可以是间断传送。

    在异步通信中,数据分为一帧一帧地传送。每一帧首尾必须加上特定的控制位,用于控制和识别一个字符发送或接收的开始与结束状态。每一帧由四部分组成:起始位、数据位(发送的字符)、奇偶校验位和停止位。

    在这里插入图片描述

  2. 同步通信:同步传送方式的特点是数据是连续传送的,即数据是以数据块为单位传送的。同步传送方式要求接收端与发送端必须具有同步时钟并要求严格同步。

    在这里插入图片描述

6.1.3 串行通信总线的电气标准

MCS-51单片机串行口的输入(RX)、输出(TX)管脚均为TTL电平,抗干扰性差,传输距离短。为提高串行通信的可靠性,增大串行通信的距离,通常采用接口转换芯片实现标准串行接口通信,如RS-232C、RS-422A、RS-485等标准。

在这里插入图片描述

6.2 MCS-51单片机的串行口

6.2.1 MCS-51单片机串行口的基本结构

MCS-51单片机的串行口主要由发送缓冲寄存器、接收缓冲寄存器、输入移位寄存器和移位时钟等几部分组成,MCS-51单片机串行口基本结构如图所示。

在这里插入图片描述

  1. 发送缓冲寄存器SBUF存放将要发送的数据,只能写入,不能读出
  2. 接收缓冲寄存器SBUF存放接收到的数据,它只能读出,不能写入
  3. 这两个物理上完全独立的缓冲寄存器共用一个地址99H,根据读/写指令可以确定访问的是接收数据缓冲器还是发送数据缓冲器。
6.2.2 MCS-51单片机串行口的寄存器

与MCS-51单片机串口工作相关的寄存器主要有:寄存器SCON、寄存器PCON、寄存器IE和寄存器IP。

1.串行口控制寄存器(SCON)

SCON用于串行数据通信的控制,其中包括串行接口工作方式的设定、串行通道某些功能的控制,可用于发送和接收第九位数据(TB8和RB8)。

在这里插入图片描述

!!!这个表,工作模式2的波特率是错的,串口通信工作模式2的波特率只有f/64或者f/32,没有f/12,具体是除64还是32由于SMOD决定

  • (1) SM0(SCON.7)和SM1(SCON.6)为串口工作方式选择位,用于控制串口通信模式

在这里插入图片描述

  • (2)方式2和方式3中的多机通信控制位。
    • 在方式2和方式3中,如果SM2=1,则当接收到的第9位数据(RB8) 为0时激活接收中断标志RI(RI=1)。
    • 在方式1中,如果SM2=1,则只有当接收到有效停止位时才激活RI,若没有接收到有效停止位,则RI清0。
    • 在方式0中,SM2必须为0。
  • (3)REN:允许串行接收位。REN=1允许接收;0禁止接收,由软件置位或清零。
  • (4)TB8:**是工作在方式2和3时,要发送的第9位数据。**可由软件置1或清0。在许多的通讯协议中该位是奇偶校验位。在多机通讯中来表示是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。在模式0中,SCON中的TB8位没用。
  • (5)RB8:当工作在方式2和3时,**为接收到的第9位数据。 **
  • (6)TI:发送中断标志位,在方式0串行发送第8位数据结束时由硬件置1,或在其它方式串行发送停止位后置1,并申请中断。CPU响应中断后,可发送下一帧数据,TI必须由软件清0。
  • (7)RI:为接收结束中断标志。在方式0中,当接收到一帧数据的第8位结束时,RI=1。在其他方式中,接收到停止位后,RI=1,表示可读取接收SBUF中的内容。RI必须用软件清0。
6.2.3 MCS-51单片机串行口的工作模式

MCS-51单片机可通过设置串行口控制寄存器SCON的SM0、SM1位的状态,进行4种不同工作模式选择。

1. 工作模式0

RXD(P3.0)引脚接收或发送数据,TXD(P3.1)引脚发送同步移位时钟。数据的接收和发送以8位为一帧,低位在前,高位在后,不设起始位和停止位。

D0D1D2D3D4D5D6D7

串行口工作于模式0时,其波特率是固定的,仅与单片机所接的晶体振荡频率有关,为晶体振荡频率的1/12。

2. 工作模式1

在模式1下,串行口是10位为一帧的异步串行通信方式,主要包括:1位起始位、8位数据位和1位停止位。其主要特点是:以RXD(P3.0)引脚接收数据,TXD(P3.1)引脚发送数据;数据位的接收和发送为低位在前,高位在后。

起始位D0D1D2D3D4D5D6D7停止位

在模式1下,波特率是可变的,与定时器/计数器的溢出率有关。当串行口工作于模式1时,其波特率计算与寄存器PCON的最高位SMOD有关,具体计算公式如图所示。

在这里插入图片描述

  • T1溢出率:T1溢出时间的倒数。

  • T1用于波特率发生器时一般工作于非门控定时器方式2

在这里插入图片描述

【例】MCS-51单片机以模式1进行串行数据通信,波特率为1200bit/s。若晶体振荡频率fosc为6MHz,试确定定时器/计数器1的计数初值。

在这里插入图片描述

实际应用中,常常使用11.0592MHz频率的晶体振荡器,提供出1200bit/s、2400bit/s、4800bit/s、9600bit/s等多种常用串行通信波特率。

在这里插入图片描述

3. 工作模式2

在工作模式2下,串行口是11位为一帧的异步串行通信方式,包括:1位起始位、9位数据位和1位停止位。其主要特点是:以RXD(P3.0)引脚接收数据,TXD(P3.1)引脚发送数据;数据位的接收和发送为低位在前,高位在后。

起始位D0D1D2D3D4D5D6D7可编程位停止位

第9数据位TB8、RB8可作串行通信的奇偶校验位用,也可作为多机通信时的地址、数据帧辨别用。

工作模式2下波特率以及计算公式:

在这里插入图片描述

4. 工作模式3

在模式3下,串行口是以11位为一帧的异步串行通信方式,主要包括:1位起始位、9位数据位、1位停止位,其通信过程与模式2完全相同,所不同的是通信波特率。

模式3的通信波特率由定时器/计数器1的溢出率决定,与模式1相同,是可变的。

在这里插入图片描述

四种工作模式比较

在这里插入图片描述

需要注意的是,串口通信双方必须采用相同的工作模式,且数据帧格式与波特率设置也需相同。

6.3 单片机多机通信与通信协议

6.3.1 多机通信原理

主从式多机通信是多机通信系统中最简单的一种。在主从式多机系统中,只有一台主机,但从机可以有多台。主机发送的信息可以传送到所有的从机或指定的从机,从机发送的信息只能为主机所接收,各从机之间不能直接通信。

在这里插入图片描述

MCS-51单片机工作于多机通信时,必须在方式2或方式3下工作作主机的MCS-51单片机的SM2应设定为0,作从机的SM2应设定为1。

SM2设置原因:

当串行口以方式2(或方式3)接收时,SM2=1,则只有接收到第9位数据为1,才将接收的数据装入接收SBUF,并置位RI标志;否则,不会置位RI,也不产生中断请求,一帧信息被丢弃。若SM2=0,则接收到的第9位不论为0还是为1,都会将数据装入SBUF,并置位RI标志。

根据这一功能,可实现多机系统中的主从一对一通信。

多机通信步骤如下:

  1. 令所有从机SM2=1,处于只接收地址帧状态(第9位为1)。
  2. 主机令TB8=1,并发送地址呼叫信息。(这个操作即将发送数据的第9位置1,目的是让所有从机开始接受地址信息)
  3. 各从机接收到地址帧后,将接收到的地址与本机地址编号相比较,确认是否为被呼叫目标。
  4. 被呼叫从机使SM2清0,变为接收数据帧状态,而未被呼叫从机仍保持SM2=1。(这个操作使得目标从机无条件接受主机信息,其他从机则需要发送数据的第9位为1才能接受数据,即使主机的TB8=1)
  5. 主机使TB8=0,发送控制或数据信息。(使得只有目标从机才能接受信息)
  6. 只有SM2=0的从机能接收到控制或数据信息,仍保持SM2=1的从机不予理睬。

多机通信中,主机向从机发送信息,需指定向哪台从机发送;同样,从机向主机发送信息时,主机需要知道信息来自哪个地址的从机。主从式多机通信约定有如下通信协议。

  1. 系统中最多允许255台从机,地址编码为00H~FEH。

  2. 地址FFH是对所有从机都起作用的控制命令,命令各从机恢复SM2=1。

  3. 联络过程:主机首先发送地址帧,被寻址从机返回本机地址给主机,判断地址相符合后,主机向目标从机发送控制命令,目标从机更具命令向主机返回自己的状态,若主机判断状态正常,则开始发送或接受数据,发送或接受的第一个字节是数据块的长度。

  4. 主机发送的控制命令代码为:

    • 00:要求从机接受数据块;
    • 01:要求从机发送数据块。
  5. 从机的状态字格式如下:

D7D6D5D4D3D2D1D0
ERR00000TRDYRRDY

其中:若ERR=1,从机接收到非法命令;若TRDY=1,从机发送准备就绪;若RRDY=1,从机接收准备就绪。

6.3.2 串口通信协议

串口通信协议是通信双方在串口数据收发过程中,除了需要传输的实际数据外,再加入多个控制字节、校验字节等信息,用于提高通信可靠性或者实现在串口工作于模式1下的多机通信功能。

在这里插入图片描述

  • 起始字节:发送设备用于通知接收设备准备接收数据,该字节为通信双方约定的一个特定字节,如64H,通常为一个字节长度
  • 数据长度:发送方用于控制写入到SBUF的次数,而接收方用于判断本次通信数据是否接收完毕。
  • 地址字节:该字节主要应用在多机通信系统中,而通信中各个设备均可工作在模式1下。
  • 命令字节:该字节主要用于在通信中控制不同任务。
  • 数据域:当通信中有一方需要向另一方传输数据。
  • 校验字节:用于控制或识别本次通信数据是否正常,通常为一个字节长度。如果是采用冗余校验,校验码可以有多个字节。

6.4 MCS-51单片机串行通信应用实例

【例】单片机与PC机串口通信控制,不使用通信协议控制。电路连接示意图如图所示。通信帧格式为:1个起始位,8位数据,1位停止位;波特率:2400bit/s。单片机晶体振荡器频率为fosc=11.0592MHz,采用中断方式收发数据。PC机间隔1秒钟向单片机发送数据55H,现编写单片机程序实现:单片机接收到PC机发送的数据后,判断出数据为55H,则向PC回送55H,否则回送0AAH。

在这里插入图片描述

题目分析如下:

  • 1个起始位,8位数据,1位停止位:使用通信方式1。
  • 波特率:2400bit/s。单片机晶体振荡器频率为fosc=11.0592MHz:定时计数器1初值:F4H
  • PC机间隔1秒钟向单片机发送数据55H:定时计数器使用工作模式2,即8位重载模式。

汇编程序如下:

		ORG	0000H
		LJMP MAIN
		ORG 0023H;			中断入口地址
		LJMP IRQ_UART
MAIN:   MOV TMOD, #20H;		初始化T1
		MOV TH1, #0F4H;		设置定时计数器1初值
		MOV TL1, #0F4H
		MOV SCON, #50HL;	串口工作方式1,REN=1
		MOV PCON, #00H;		SMOD=0,波特率不倍增
		SETB TR1
		SETB EA
		SETB ES
HERE:	SJMP HERE
;以下为中断服务程序
IRQ_UART:	CLR RA
			CLR RI
			PUSH PSW
			SETB RS0
			CLR RI
			PUSH ACC
			MOV A, SBUF;		    接受来自PC发来的字符
			CJNE A, #0X55, ErrData; 与 55H 相比较
			SJMP TXDBUF;
ErrData:    MOV A, #0XAA;			发送0xAA
TXDBUF:		MOV SBUF, A;			将55H或者0AAH发送回PC
WAIT:		JNB TI, WAIT;			等待数据发送完成
			CLR TI
			POP ACC
			POP PSW
			SETB EA
			RETI
			END

c语言代码如下:

void main(){
    Init_Comm();
    while(1);  
}

void Init_Comm(){
    TMOD = 0x20;		//定时器T1工作方式设置为2
    TH1 = 0xf4;
    TL1 = 0xf4;
    TR1 = 1;			//启动定时器1
    SCON = 0x50;
    PCON = 0x00;
    ES = 1;
    EA = 1;
}

// 串口中断服务程序
void IRQ_Comm() interrupt 4{
    if (RI == 1)		//接收到数据
    {
        RI = 0;
        cRxData = SBUF;
     	if (cRxData != 0x55)
            cRxData = 0xAA;
        else
            cRxData = cRxData;
        SBUF = cRxData;	//回送给PC
    }
    if (TI == 1)		//等待发送完成
        TI = 0;
}

第07章单片机扩展技术

7.1 MCS-51单片机的I/O口扩展技术

MCS-51有4组8位I/O口,共占用32个引脚:P0、P1、P2和P3口。P0口、P2口通常作为总线使用,即P0口工作于地址总线低8位和数据总线,P2口工作于地址总线高8位;P3口通常工作于第二功能,即特殊功能。这样,MCS-51单片机真正可以使用的普通I/O管脚非常少,在测控应用场合中,需要进行I/O接口扩展。

7.1.1 用8255扩展并行I/O接口
1.8255芯片简介

8255是一种可编程控制的输入/输出接口芯片,即可以通过命令字用软件对其进行控制,来选择或改变其功能。

**8255具有3个8位的并行I/O口,具有三种工作方式,可通过程序改变其功能,**使用灵活方便,通用性强,可作为单片机与多种外围设备连接时的中间接口电路。

2.8255引脚

在这里插入图片描述

3.内部结构

8255内部包括:

  • 三个并行数据输入/输出端口
  • 两个工作方式控制电路
  • 一个读/写控制逻辑电路和8位数据总线缓冲器。

在这里插入图片描述

  • 三个并行数据输入/输出端口介绍:

    • 通常A口、B口作为输入/输出端口。

    • C口既可以作为输入/输出端口,又可以作为控制/状态信息端口。

      C口在“方式控制字”的控制下可分为两个4位端口(高4位PC4~PC7,低4位PC0~PC3),分别与A口和B口配合使用,作为控制信号输出和状态信息输入端口。

  • 两个工作方式控制电路:工作方式控制电路有两个,一个是A组控制电路,一个是B组控制电路。这两组控制电路具有一个控制命令寄存器,用来接收单片机发来的控制字,以决定两组端口的工作方式,也可根据控制字的要求对C口进行位操作。

  • 一个读/写控制逻辑电路和8位数据总线缓冲器:

    读/写控制逻辑电路用来实现对8255的硬件管理,包括芯片的选择、端口的寻址以及数据的传送方向。各端口的工作状态如图所列。

    8255工作状态如下

在这里插入图片描述

4.工作方式

8255在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种。

  1. 方式0—基本输入/输出,无条件传送。;

    方式0下,3个端口都可设置为输入或输出,不需应答联络信号。PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制端口写入工作方式控制字,规定各端口为输入或输出方式

  2. 方式1—应答联络的输入/输出工作方式(PA、PB)

    方式1下,PA和PB口常用于I/O数据的传送,**PC口用作PA口和PB口的应答联络信号线,**以实现中断方式来传送I/O数据。

  3. 方式2—双向传送(仅PA口有此工作方式)。

    PA7~PA0为双向I/O总线。

5.8255初始化编程

8255的A,B,C三个端口的工作方式是在初始化编程时,**通过向8255的控制端口写入控制字(内部寄存器)来设定的。**8255控制字有两个:

  • 方式控制字和置位;
  • C口置位/复位控制字。

(1)方式控制字的格式

在这里插入图片描述

(2)C口置位/复位控制字的格式

在这里插入图片描述

8255初始化编程即使配置好控制端口写入控制字即可,其中A口、B口只需要将工作方式控制字写入控制端口即可,C口置位/复位控制字的写入只对C口指定位输出状态起作用,对A口和B口的工作方式没有影响,因此当需要指定C口某一位的输出电平时,只需在初始化时写入C口的置位/复位控制字。

【例】设8255的A口工作在方式0,数据输出,B口工作在方式1,数据输入,编程初始化程序(设8255的端口地址为1F3CH~1F3FH)

  • 控制寄存器的地址:1F3FH

    1F3CH A口地址,1F3DH B口地址,1F3EH C口地址, 1F3FH 控制寄存器地址。具体推理见8255工作状态表,A1, A0为1,1的时候是控制寄存器,也就是控制寄存器的地址是最大的。也就是1F3FH 。

  • A口工作在方式0,数据输出:D7 = 1; D6, D5 = 0, 0D4 = 0

  • B口工作在方式1,数据输入:D2 = 1D1 = 1

编程如下:

MOV DPTR, #1F3FH
MOV A, #10000110B
MOV @DPTR, A

【例】设8255的端口地址为1F3CH~1F3FH,将8255的C口中PC0设置为高电平输出,PC5设置为低电平输出,编写初始化程序。

这里使用对PC口位操作即可,对照字格式编写即可。

编程如下:

MOV DPTR, #1F3FH
MOV A, #00000001B;	PC0口高电平输出
MOV @DPTR, A
MOV A, #00001010B;	PC5口低电平输出
MOV @DPTR, A

接下来我们直接从接线图中读取8255地址。

有接线图如下

在这里插入图片描述

上图是MCS-51扩展1片8255的电路图。74ALS573是地址锁存器,P0.6、P0.7经74ALS573与8255的地址线A0、A1连接;P0.5经74ALS573与8255片选/CS端相连,其他地址线悬空。

  • 51中P2口全部悬空,地址高八位为FF

  • 51中P0口接入锁存器,控制地址第八位,锁存器Q1~Q5悬空全部为1,决定地址的只有Q6~Q8。分别对应8255芯片A0,A1,CS口,!CS选通,因此全取0,接下来A1,A0,对照工作表,则可以列出地址如下表。

    Q8Q7Q6Q5Q4Q3Q2Q1选择地址
    A1A0!CS11111
    00011111端口A0FF1FH
    01011111端口B0FF5FH
    10011111端口C0FF9FH
    11011111控制寄存器0FFDFH

在8255与MCS-51硬件电路实现中,CPU与8255的地址线有多种连接方式,因此8255的寄存器端口地址也将有多种编码。在软件设计中,必须正确配置8255的控制寄存器,才能合理使用8255的各个端口。

7.1.2 用74系列芯片扩展并行I/O接口

在MCS-51单片机应用系统中,在采用TTL芯片实现MCS-51单片机I/O接口扩展时,通常采用单片机总线,配合地址译码实现输入和输出接口的扩展。作为输出的端口时,要求具有信号锁存功能,因此得选用具有锁存功能的芯片(如74ALS573/373);输入时,根据数据是常态还是暂态,要求接口芯片应能三态缓冲,或具有选通功能(如74ALS245)。

在这里插入图片描述

假设单片机地址总线的高8位不用,且A6 A7为0 0,则输入、输出端口控制芯片选通的地址编码如表7-3所列。

在这里插入图片描述

7.2 半导体存储器及MCS-51单片机的存储器扩展技术

1.半导体存储器的性能指

半导体存储器有多个性能指标,主要指标是存储容量存取时间存储周期

(1)存储容量

存储容量是存储器能够存储的二进制信息的数量,它是表示存储器大小的指标。计算公式如下:

在这里插入图片描述

其中M为芯片的地址线根数,N为芯片的数据线根数。

(2)存取时间和存储周期

存取时间也称为存储器访问时间,指的是从启动一次存储器操作到完成该操作所用的时间,其单位通常用ns表示,用TA表示。

存储周期也称为存取周期、访问周期、读/写周期。指的是连续两次启动同一存储器进行读/写操作(例如连续两次读操作)所需的最小时间间隔,用TM表示。

对任一种存储器,当进行一次访问后,存储介质和有关控制线路都需要恢复时间,若是破坏性读出,还需重写时间,因此通常TM>TA。

2.半导体存储器的分类及其特点

(1)半导体存储器的分类

  1. 按存储器的读/写功能分类

按存储器的读/写功能,半导体存储器可分为读/写存储器(Read/Write Memory,RWM)和只读存储器(Read Only Memory,ROM)。

  1. 按数据存取方式分类

按数据存取方式,半导体存储器可分为直接存取存储器(Direct Access Memory,DAM)、顺序存取存储器(Sequential Access Memory,SAM)和随机存取存储器(Random Access Memory,RAM)

  1. 按器件原理分类

按器件原理,半导体存储器可分为:A. 双极性TTL器件存储器(相对速度高,功耗大,集成度低);B. 单极性MOS器件存储器(相对速度低,功耗小,集成度高)。

在这里插入图片描述

3. 半导体存储器容量的扩充

(1)存储器位数的扩展

位扩展指只在位数方向扩展(加大字长),而芯片的字数和存储器的字数是一致的。位扩展的连接方式是将各存储芯片的地址线、片选线和读/写线相应地并联起来,而将各芯片的数据线单独列出。

在这里插入图片描述

当访问该存储器时,单片机发出的地址和控制信号同时传给2个芯片(图中A0A9为地址信号,A10为控制信号)**,选中每个芯片的同一单元,其单元的内容被同时读至数据总线的相应位,或将数据总线上的内容分别**同时写入相应单元(D0D7为写入内容)

(2)存储器存储单元的扩展

当存储器的位数满足要求,而需要扩展存储容量时,也需要用若干芯片来构成芯片组。仅在字数(单元数)方向扩展,而位数不变的扩展方法为字扩展。

存储单元扩展的芯片片选控制通常有两种方法,即“线选法”和“译码法”,而译码法又可以分为“全译码”和“部分译码”。

  1. 线选法

线选法是用低位地址线来对每片内的存储单元进行寻址,所需地址线数由每片的单元数决定。如图。

在这里插入图片描述

其中A0~A11为数据地址总线,A12~A14为片选信号,D0~D7为读写数据。综合来看,上例中线选法地址编码如下。

在这里插入图片描述

线选法的优点是不需要地址译码器,线路简单,选择芯片不需外加逻辑电路。但从上表中可看出3个芯片的地址空间不连续,而且每个存储单元的地址不唯一( 由于A15没有使用,在表中被设置为0,也可以设置为1,因此取值可以根据需求确定)。因此,线选法不能充分利用系统的存储器空间,且把地址空间分成了相互不连续的区域,给编程带来了一定的困难。它仅适用于连接存储芯片较少的场合。

  1. 全译码法

全译码法将片内寻址外的全部高位地址线作为地址译码器的输入,把经译码器译码后的输出作为各芯片的片选信号,将它们分别接到存储芯片的片选端,以实现对存储芯片的选择。

在这里插入图片描述

同理,全译码法的地址编码如下。

在这里插入图片描述

采用全译码时,每块芯片的地址范围是唯一的,不会出现片选混乱的情况,寻址范围得到充分利用。

  1. 部分译码

若只将片内寻址之外的高位地址线的一部分接到译码器的变量输入端,用这样的译码器输出接到各个存储器的片选输入,就是用部分译码的方法来组成存储器芯片组。

在这里插入图片描述

芯片基本地址和前面全译码连接的地址范围是相同的,但两者存在区别。因为寻址各存储器芯片时未用到高位地址A15~A14,所以只要A13=A12=0,而无论A15~A14取何值,均选中第一片,只要A13=0,A12=1,而无论A15~A14取何值,均选中第二片,……,也就是说,12KB存储器中的任一个存储单元,都对应有 2 ( 16 − 12 ) = 16 2^{(16-12)}=16 2(1612)=16个地址。这种一个存储单元出现多个地址的现象称为地址重叠。


写在最后

至此,51单片机的所有内容就已经写完啦。感谢看到这里的小伙伴。当然,也代表我的作业全部写完啦(哈哈哈)。当然还有很多内容没有写,没用总结,但肯定有比我厉害的大神有做总结说明,大家可以多方借鉴学习啊,也欢迎小伙伴们一起交流进步啊。特别感谢给我点赞的小伙伴,能够对你们有所帮助就好。

现在时间是2024/12/15。还有16天,2024就已经过完了,回想起这一年来,还是感慨万千。这一年也是第一次开始尝试自己写博客,开始尝试分享自己的知识。对于我来讲,写博客是一件很有意义的事情,他在分享知识的同时,也记录了自己的成长,记录着自己的所学所知。看着自己写下的这些东西,如同深深浅浅的脚印一般,或许多年以后我在还在从事技术领域的相关工作,又或许多年以后我不再从事相关工作,去到别的领域谋得一缕温饱,但无论如何,我想多年以后再来看到这些我写的东西,我会回想起在那个青春最后的4年,自己留下的脚印,这是我的来时路,亦是我的归途。

最后提前祝小伙伴们蛇年快乐!(这图我从我同学那里偷来的,感觉还挺有意思的哈哈哈)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值