前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。(点击查看学习资料)
一、MCS-51单片机内部结构
单片机是在一块芯中集成了CPU、RAM、ROM、定时/计数器和多功能I/O接口等基本部件的大规模集成电路,又称MCU。
51系列单片机内包含下列部件:
一个8位CPU
一个片内振荡器及时钟电路
4KBROM程序存储器
128BRAM数据存储器
可寻址64KB外部数据存储器和64KB外部程序存储器的控制电路
32条可编程的I/O线(4个8位并行I/O接口)
两个16位的定时/计数器
一个可编程全双工串行接口
五个中断源和两个优先级嵌套中断结构
二、CPU
核心部件,由运算器和控制器等部件组成。
运算器:算术运算,逻辑运算,位操作。
程序计数器PC:16位寄存器,用来存放即将要执行的指令地址,可对64KB程序存储器直接寻址。执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。
指令寄存器:用来存放指令代码,CPU执行指令时,将程序存储器中读取的指令代码送入指令寄存器,经指令译码器译码后由定时与控制电路发出相应的控制信号,完成指令功能。
三、存储器
分程序存储器和数据存储器,分片内和片外,从逻辑地址空间看,又可分为片内数据存储器、片外数据存储器、片内片外统一编址的程序存储器。
引脚EA(上面一横)的接法决定了程序存储器0000H~0FFFH的4KB地址范围是在片内还是片外。为1时,片内0000H~0FFFH,片外1000H~FFFFH;为0时,0000H~FFFFH64KB都是片外。
程序存储器:以PC作为地址指针,通过16位地址总线,可寻址64KB地址空间。
程序存储器中的特殊地址:
地址 | 用途 |
---|---|
0000H | 复位操作后的程序入口 |
0003H | 外部中断0服务程序入口 |
000BH | 定时器0中断服务程序入口 |
0013H | 外部中断1服务程序入口 |
001BH | 定时器1中断服务程序入口 |
0023H | 串行口中断服务程序入口 |
由于两入口地址直接的存储空间有限,通常在这些入口地址开始的两三个地址单元中,放入一条转移类指令(跳转指令),使得相应程序跳转到指定的程序存储器区域。
外部数据存储器:51单片机具有扩展64KB外部数据存储器RAM和I/O端口的能力,它们统一编址,使用相同的选通控制信号、相同的访问指令MOVX,以及相同的寄存器间接寻址。
内部数据存储器:51单片机中只有128字节RAM,地址为00H~7FH,它和SFR的地址(80H~FFH)空间是连续的,而在增强型52子系列中有256字节RAM,高128字节RAM和SFR的地址是重合的,访问高128字节RAM采用寄存器间接寻址,访问SFR则采用直接寻址。
前32个单元(00H~1FH)为寄存器区,共分4组,每组有8个8位寄存器R0~R7,R0和R1可作为间址寄存器使用。使用时,只能选其中一组寄存器,寄存器的选组由程序状态字PSW的RS1和RS0位定。一旦选中了一组寄存器,其它3组只能作为数据存储器使用,而不能作为寄存器使用。初始化或者复位时,自动选中0组。
20H~2FH为位地址区,共16个单元,每个单元有8位,共128位,每位有一个位地址,范围为00H~7FH,该区既可位寻址,又可字节寻址。
51单片机的堆栈设在内部RAM区,深度不大于128字节,初始化时SP指向07H。
四、特殊功能寄存器SFR
用途:
A累加器、状态标志寄存器
单片机内部各部件专用的控制、状态寄存器
并行口、串行口影射寄存器
地址空间:
21个特殊功能寄存器不连续地分布在80H~FFH128个字节地址空间,地址为X0H和X8H是可位寻址的寄存器。
A——累加器,带有全零标志Z,A=0,则Z=1;A不等于0,则Z=0。该标志常用于程序分支转移的判断条件。
B——寄存器,常用于乘除法运算。
PSW——程序状态字,主要起着标志寄存器的作用:
Cy:进/借位标志,反映运算中最高位有无进/借位,有进/借位时为1
AC:辅助进/借位标志,反映运算中低半字节与高半字节间的进/借位情况
F0:用户标志位,可由用户设定其含义
RS1、RS2:工作寄存器组选择位
OV:溢出标志位,补码运算的结果有溢出时为1,OV=Cy异或Cy-1
-:无效位
P:奇偶标志位,反映对累加器A操作后,A累加器中“1”个数的奇偶,奇为1
SP:堆栈指针寄存器
DPTR:16位数据指针寄存器,分DPL和DPH
P0~P3:I/O端口寄存器
五、时钟电路与复位电路
51单片机的时钟信号通常有两种电路形式:内部振荡方式和外部振荡方式。
内部振荡:在引脚XTAL1和XTAL2外接晶体振荡器(晶振),C1和C2起稳定振荡频率、快速起振作用。
外部振荡:把已有的时钟信号引入单片机,这种方式适宜用于使单片机的时钟与外部信号保持一致。对HMOS的单片机(8031),由XTAL2引入,对CHMOS的单片机(8XCXX),由XTAL1引入。
振荡周期:晶振的振荡周期,又称时钟周期,为最小的时序单位。
状态周期:振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期,因此,一个状态周期包含两个振荡周期。
机器周期MC:1个机器周期由6个状态周期即12个振荡周期组成,是计算机执行一种基本操作的时间单位。
指令周期:执行一条指令所需的时间,一个指令周期由1~4个机器周期组成,依据指令不同而不同。
振荡周期和机器周期是单片机内计算其它时间值(例如波特率、定时器的定时时间等)的基本单位。
单片机外接晶振频率12MHZ时:
复位:使片内电路初始化,当复位引脚RST出现5ms以上的高电平时,单片机就完成复位操作。
两种复位操作的形式:上电复位,开关复位
上电复位:接通电源后自动复位
开关复位:在运行期间,按钮使单片机复位
单片机的复位操作使SFR寄存器初始化,而不改变片内RAM中的内容。
几个主要特殊功能寄存器复位状态:
PC=0000H:程序计数器为0表明单片机复位后程序从0000H地址单元开始执行
A=00H:累加器清零
PSW=00H:选寄存器0组为工作寄存器组
SP=07H:堆栈指针指向片内RAM的07H单元,根据先加后压的法则,第一个被压入的数据被写入08H单元中
P0~P3=FFH:向各端口写入1,各端口即可用于输入又可用于输出
六、引脚功能
Vss:接地端
Vcc:电源端
XTAL1、XTAL2:接外部晶体或外部时钟信号
RST/VPD:①复位信号输入②接备用电源
ALE:地址锁存允许,输出脉冲的频率为振荡频率的六分之一
PR0G(上面一横):对片内EPROM编程时,编程脉冲由该引脚引入
PSEN(上面一横):程序存储器允许,输出读取外部程序存储器的选通信号
EA(上面一横):选择访问程序存储器
P0.0~P0.7:P0口,数据/低八位地址复用总线端口
P1.0~P1.7:P1口,静态通用端口
P2.0~P2.7:P2口,高八位地址总线端口
P3.0~P3.7:P3口,双功能静态端口