博主自建博客原博文链接:https://www.little-demon.cn/post/9e0646dd.html
MCS-51单片机的外特性
重要说明
:
MCS-51系列单片机是Intel公司的注册产品;
MCS-51系列包含8051、8031、8751等型号;
AT89系列单片机是ATMEL公司的注册产品;
AT89S51是AT89系列的一个型号;
AT89S51和MCS-51单片机的主要区别仅在内部ROM引脚完全兼容,内部主要结构完全一致,下图为AT89S51的芯片原理图。
引脚说明
电源引脚:VCC、GND
时钟电路引脚:XTAL1、XTAL2
控制信号引脚:RST、ALE/PROG、PSEN、EA/VPP
IO端口引脚:P0、P1、P2、P3
外部总线
地址总线(AB):低8位P0、高8位P2
数据总线(DB):P0分时复用
控制总线(CB):4条控制线和P3部分引脚
MCS-51单片机的内部结构
CPU和时序
CPU由运算部件、控制逻辑构成,CPU的正常工作需要用到部分SFR。
控制部件是单片机的神经中枢,它由定时和控制电路、程序计数器PC,指令寄存器、指令译码器、地址指针等组成。
CPU执行指令的过程:控制电路从程序存储器中取出指令送到指令寄存器IR,然后指令译码器ID进行译码,再由控制电路发出相应的控制信号,完成指令功能。
时钟是单片机内部时序控制的基础,单片机的时钟产生有两种方式:一种是内部方式;一种是外部方式。
这里的外部时钟源一般采用石英晶体和电容组成并联谐振回路
。
晶振:1.2MHz~12MHz之间选择(典型:6M、12M、11.0592M)
电容:50~30PF
在调试单片机系统时,可用示波器观察晶振引脚上的波形(正弦信号)来判断晶振电路是否正常起振。
机器周期是反映单片机执行速度的重要指标。
存储器和存储地址空间
这里存储器类型分为两种:程序存储器和数据存储器 。
程序存储器:用来存放程序代码或常量等只需读取的程序或数据。常见ROM、EPROM、FlashROM。
数据存储器:用来可以存放需要读写的数据,常见SRAM。
8051单片机可以使用的存储空间在物理上分为4个部分:片内程序存储器、片内数据存储器以及片外程序存储器、片外数据存储器 。
这里片内存储容量一般不大,尤其是RAM容量比较小;片外需要外接芯片,分别提供最大64KB的存储空间。
8051单片机可以使用的存储器在逻辑上分为3个逻辑地址空间进行管理:
通过设置EA引脚的电平来选择是使用片内ROM还是使用片外ROM
片内外ROM
ROM的部分地址保留给系统使用(C用户程序不应进入该区域)
000H-O002H是程序入口地址。复位后,CPU从O000H单元开始执行程序,这里一般存放一条跳转指令,跳转到用户编写的程序上。
0003H-002AH均匀地分为五段(8n+3),用作中断服务程序的入口(一般用来存放跳转指令)。
片内外AM
片内RAM地址空间主要起两个作用:
映射内部资源所用的寄存器;存放程序运行所需要用的变量。
普通RAM区:供用户程序使用的普通RAM,大部分用户自定义变量都存放在这个地址范围。
按字节寻址:20H -2FH
按位寻址:00H -7FH
工作寄存器:4组x8字节,每组8个字节记为RO-R7,由PSW中的RSO和RS1来确定当前使用哪一组。
特殊功能寄存器区(SFR区):
单片机所有片内资源的控制和访问寄存器均被称为SFR
为了方便访问和管理,单片机内部把SFR映射在片内RAM地址空间中的80H~FFH的地址范围内,用户程序中可以使用相应的地址通过内部总线对SFR进行访问,从而对单片机的片内资源进行控制。
位寻址空间
针对单片机RAM空间较小的特点,单片机提供了位寻址空间供用户程序使用,该空间可以用来存放标志位等可以以位为单位进行寻址的数据。
位寻址空间位地址范围:00H~FFH
位寻址存储单元的分布:
字节地址为20H2FH的存储单元位地址:00H 7FH
SFR中字节地址以0或8结尾的存储单元
位地址:80H ~FFH
片外RAM
强调 :这三个地址空间都是通过并行总线进行访问的
I/O接口
单片机的输入输出都是通过IO端口实现的。
AT89S51单片机有4组通用I/O端口,每组端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。通常这4组端口表示为PO~P3。
P0口的结构
PO口是一个双功能口:
普通I/O口(准双向口)
外部总线接口(数据/地址复用口)
(一)功能一:作为普通I/O口
输出时:CPU发出控制电平“0”封锁“与门”,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器与输出驱动场效应管T2栅极接通。故内部总线与PO口同相。由于输出驱动级是漏极开路电路若驱动NMOS或其它拉流负载时,需要外接上拉电阻。'PO的输出级可驱动8个LSTTL负载。
输入时:P0作为引脚和读锁存器
读引脚 :由传送指令(MOV)实现;下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。
读锁存器 :有些指令如:ANL PO,A称为“读-修改-写”指令,需要读锁存器。s上面一个缓冲器用于读端口锁存器数据。
准双向口 :在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写‘1’,使T2截止,引脚处于悬空状态,变为高阻抗输入。在输入操作前需要附加一个准备动作,这就是所谓的准双向口。
(二)功能二:作为地址/数据总线
这时多路开关‘控制’信号为‘1’,‘与门’解锁,‘与门’输出信号电平由“地址/数据”线信号决定;多路开关与反相器的输出端相连,地址信号经“地址/数据”线→反相器→T2场效应管栅极→T2漏极输出。
P2口的结构
P2口是一个双功能口:普通IO口(准双向口)和外部总线接口(地址高8位)
(一)功能一:作为普通I/O口
CPU发出控制电平“O”,使多路开关MUX倒向锁存器输出Q端,构成一个准双向口。其功能与P1相同。
(二)功能二:作为地址总线高8位
在系统扩展片外程序存储器扩展数据存储器且容量超过256B(用MOVX@DPTR指令)时,CPU发出控制电平“1”,使多路开关切换到内部地址线。P2输出高8位地址。
P1口的结构
普通I/O口(准双向口)
P3口的结构
P3口是一个双功能口:普通I/O口(准双向口)以及第二功能
当对应内部资源使能时,P3端口相应引脚起第二功能作用,否则起普通IO作用
端口总结
中断系统
中断的作用 :CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU暂停现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序(函数)。当处理完毕后,再返回被暂停程序的断点处,继续执行原来的程序。
TCON:定时/计数器控制寄存器
- 定时计数器中断相关:
TF1 - 定时器1溢出中断标志
TF0 - 定时器0溢出中断标志
- 外部中断相关:
IE1、IEO - 外部中断1、外部中断0中断标志
IT1、ITO - 外部中断1、外部中断0触发方式控制位
(IT=1:下降沿触发)(IT=0:低电平触发)
TF1、TFO、IE1、IEO具有自动清零功能(进入中断响应程序时由硬件清零)
中断的控制
EA - 全局使能
EX0-外部中断0使能
ET0-定时计数器溢出中断使能 EX1-外部中断1使能
ET1-定时计数器溢出中断1使能 Es -串口中断使能
中断的硬件顺序
硬件排序是由单片机内部硬件的中断查询机制确定的,它是固定不变的。
定时器/计数器
AT89S51单片机有两个16位内部定时/计数器,记作T0、T1。(AT89S52有3个定时/计数器,比AT89S51多了个T2。)
本质上,定时/计数器就是一个可以通过编程控制计数脉冲源、计数初值,并具有溢出标志和中断响应机制的硬件加法计数器。
定时/计数器在计数值溢出时置位一个标志位TF,可以供中断或者查询使用。
定时/计数器的计数脉冲源可以通过编程进行设置,从而起到定时或者计数的作用。
定时/计数器的结构
定时/计数器为16位硬件加法计数器,由高8位TH和低8位TL两个计数寄存器组成。
定时/计数器具有可选的两个计数脉冲源:
1、外部输入脉冲
2、内部机器周期脉冲
定时器模式
加法计数器对内部机器周期进行计数。机器周期T己知通过设置计数值N确定定时时间t。
t =N×T
计数器模式
加法计数器对外部脉冲下降沿进行计数,实现计数或频率测量功能。
外部计数脉冲由TO (P3.4)或T1(P3.5)引脚输入到计数器。计数器在检测到外部脉冲下降沿时计数值加1,由于检测一个从1到0的下降沿需要2个机器周期,因此可以计数的外部脉冲最高频率为fosc/24。
定时/计数器具有两个设置寄存器:
TMOD,确定工作方式和功能;
TCON,控制TO、T1的启停,且包含溢出标志。
定时/计数器有关的SFR
共16位,分为高8位和低8位进行存储;
根据工作方式的不同可以使用其中的13位、8位、16位;计数值范围根据使用位数而发生变化;
只能加法计数;
用户在编程时可以向TH和TL写入定时/计数器的计数初始值,在启动定时/计数器后,定时l计数器将从设置的初始值开始加法计数。
当计数到最大值时,产生溢出标志。
定时/计数器的工作方式
8051单片机的定时/计数器具有四种工作方式,可以使用TMOD中的M1和M0进行选择:
-
方式0为13位计数,由TLO的低5位(高3位未用)和THO的8位组成。TLO的低5位溢出时向THO进位,TH0溢出时,置位TCON中的TFO标志,向CPU发出中断请求。
-
方式1的计数位数是16位计数,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。
-
方式2为自动重装初值的8位计数方式。(方式2特别适合用于较为精确的脉冲信号发生器)
TH0=(65536-500)/256;TL0=(65536-500)%256;
TH0=(65536-500)/32;TH0=(65536-500)%32;
- 方式3只适用于T/CO。当方式3时,THO和TLO成为两8个独立的计数器。此时,TLO可用作定时/计数器,占用TRO和TFO; THO只能用作定时器,占用TR1和TF1;T/C1仍可用于方式0、1、2,但不能使用中断。
只有在T/C1被串口占用时,T/C0才使用方式3
定时/计数器的使用
定时器/计数器的初始化及其步骤
使用8051的TO、T1前,应对它进行编程初始化,主要是对TCON和TMOD编程;计算和装载计数初值(TH、TL) 。
一般完成以下几个步骤:
确定定时/计数器的工作方式(编程TMOD寄存器);
计算计数初始值,并赋予TH、TL;
如果在中断方式工作,需使能中断;
启动定时器/计数器(编程TRO或TR1位)。
串行接口
复位电路
复位与复位电路
所有单片机在启动运行前都需要进行复位。
复位的作用:
1、启动前复位,使CPU和单片机中的其他资源处于一个确定的初始状态,并从这个状态开始工作。
2、运行过程中复位,在单片机运行过程中,可能会由于种种原因如外界的干扰而进入死循环状态(跑飞),这时也要求复位,从而使单片机重新开始正常工作。
硬件复位和软件复位
硬件复位:通过外部复位引脚实现的复位功能。
软件复位:有些型号的单片机可以通过设置SFR中相应的标志位实现“受软件控制的复位”功能。
总结
到这里位置把MCS-51单片机的内部结构大概做了记录,内容还是有些死板空洞,接下来通过软件程序的编写以及硬件电路仿真来完善这一块的理解。这里IO口的第二功能尤其需要牢记以及定时器中断等功能使用仍需要进一步的完善。