MCS-51单片机的结构
(1)一个8位的CPU
(2)一个片内振荡器及时钟电路
(3)4KBROM
(4)128KBRAM
(5)64KB程序存储器可寻址的地址空间
(6)64KB数据存储器可寻址的地址空间
(7)两个16位可编程的定时计数器
(8)一个UART
(9)32条I/O线
HMOS:高速、高封装密度
CMOS:低功耗
引脚
外接晶体引脚XTAL1和XTAL2
RST/VPD——复位信号输入端/备用电源输入端
ALE/PROG——地址锁存允许信号端/编程脉冲信号输入端
PSEN——程序存储器允许输出信号端
EA/Vpp——外部程序存储器地址允许输入端/固化编程电压输入端
P0:(1)通用I/O口
(2)当CPU访问片外存储器时,分时提供低8位地址和8位数据的复用总线
P1:(1)通用I/O口
(2)对片内EPROM编程或校验时输入片内EPROM的低8位地址
P2:(1)通用I/O口
(2)带片外存储器时,与P0口配合,传送片外存储器的高8位地址
P3:(1)通用I/O口
(2)第2功能
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读选通信号 |
指令——>指令寄存器——>指令译码器——>定时控制
PC:专门用来控制指令执行顺序的一个寄存器,其内容可被指令强迫改写
IR:用来存放指令操作码的专用寄存器
DPTR:间址寄存器
运算器:(1)8位算术逻辑运算单元ALU
(2)8位的暂存器1和暂存器2
(3)8位的累加器A、B寄存器、PSW
B寄存器可控制位寻址
在执行乘法运算时,ALU的两输入来自A、B,结果低8位在A中存放,高8位在B中存放
在执行除法运算时,被除数取自A,除数取自B,商存放于A,余数存放于B
PSW.0 |
P |
奇偶标志位 |
PSW.1 |
F1 |
用户标志位 |
PSW.2 |
OV |
溢出标志位 |
PSW.3 |
RS0 |
工作寄存器组 选择位(00H~1FH) |
PSW.4 |
RS1 | |
PSW.5 |
F0 |
用户标识位 |
PSW.6 |
AC |
辅助进位标志位 |
PSW.7 |
CY |
进位标志位 |
堆栈指针SP
存储器
4种物理存储空间:片内ROM、片外ROM
片外RAM、片内RAM
3种逻辑存储空间:(1)片内、片外统一的64KBROM
(2)片外64KBRAM
(3)片内256字节RAM:片内数据RAM(低128字节)、SFR(高128字节)
(1)对于8051,片内与片外ROM在低4KB地址出现重叠,由EA进行控制
当EA=1时,内部ROM有效
当EA=0时,内部ROM无效
(2)片内ROM的某些特定单元被保留用于特定的程序入口地址
启动地址
5个中断的服务程序入口(中断矢量地址)
RAM在物理上和逻辑上都分为两个地址空间:一个是片内256字节的RAM,另一个是片外最大可扩充至64KB的RAM
片内低128字节RAM:工作寄存器区
位寻址区
字节寻址区
堆栈区及堆栈指示区
片内高128字节RAM内有21个特殊功能寄存器访问SFR只允许使用直接寻址方式,有11个具有位寻址能力,有六个属于CPU范围,分别为:ACC、B、PSW、SP、DPH、DPL,余15个属于接口范围
I/O端口的每一位均由锁存器,输出驱动器和输入缓冲器组成
(1)P0口的每一位I/O端口输出可驱动8个LSTTL输入端,而P1~P3可驱动3个LSTTL输入端
(2)P0口作普通I/O口使用时,须外加上拉电阻,P1~P3内部有上拉电阻,无须外加
(3)P0~P3口作普通输入口使用时,应先使锁存器置1,再读引脚
(4)端口的自动识别
定时计数器
8051单片机内有两个16位定时计数器,即T0、T1。他们都有定时和计数的功能。两个16位定时计数器实际上都是16位加1计数器,其功能由SFR寄存器TMOD和TCON控制。
不管是定时还是计数的工作方式,定时器T0和T1在对内部时钟的计数或是对外部事件的计数时都不占用CPU时间,除非溢出,才有可能中断CPU当前的操作。
TMOD(89H):
中断
中断:由于外部或内部事件改变原来CPU正在执行的指令顺序的一种工作机制。
外部中断源有两个,通常是外设产生的中断请求信号,内部中断源有三个,两个定时计数器和一个串口中断源
时序
振荡器:自激振荡器
外部振荡器
振荡器信号fosc——>时钟信号fosc/2
时钟信号的周期称为状态周期S,每个状态周期S有两个节拍P1、P2
机器周期:一个机器周期包含6个状态周期
指令周期:通常含1~4个机器周期
用于T1 |
用于T0 | ||||||
GATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
选通控制 |
更能选择 |
工作模式 |
|
|
|
|
M1 M0 |
工作模式 |
更能描述 |
0 0 |
模式0 |
13位计数器 |
0 1 |
模式1 |
16位计数器 |
1 0 |
模式2 |
自动再装入8位计数器 |
1 1 |
模式3 |
对定时器0:分成两个8位计数器 |
对定时器1:停止计数 |
(1)模式0时选择定时器T0(T1)的高8位和低5位组成一个13位的定时计数器,定时时间为:
t=(213-T0初值)*振荡周期*12
(2)模式1是一个16位定时计数器,用于定时工作方式时,定时时间为:
t=(216-T0初值)*振荡周期*12
(3)模式2把T0(T1)配置成一个可以自动重装载的8位定时计数器,当TL0计数溢出时,不仅使溢出中断标志位TF0置1,同时自动把TH0中的内容重新再装载到TL0中。用于定时工作方式时,其定时时间为:
t=(28-T0初值)*振荡周期*12
这种工作模式可省去软件中重装常数的语句,产生相当精确的定时时间,适用于作串行口波特率发射器。
(4)工作模式为3时对T0和T1是完全不同的,T0在模式3工作时,TL0和TH0被分成两个互相独立的8位计数器,其功能和操作与模式0和模式1完全相同,TL0可工作在定时器方式或计数器方式;但TH0只可用作简单的内部定时功能,它还占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TR1的控制。
定时器T1无工作模式3,若将T1设置为模式3,就会使T1立即停止计数,但可设置T1为模式0、1和2,由于此时中断源已被T0占用,所以仅能作为波特率发生器或用在其他不用中断的地方。
ps:
C/T=0,设置为定时方式,定时器计数8051内部脉冲,对机器周期计数
C/T=1,设置为计数方式,计数器的输入来自T0或T1端的外部脉冲
当GATE=0时,只要用软件使TR0(TR1)置1就启动了定时器,而不管INT0(INT1)电平的高低
当GATE=1时,只要INT0(INT1)为高电平,同时使TR0置1时,才能启动定时器工作
TCON(88H):
TF1 |
TR1 |
TF0 |
TR0 |
GATE |
C/T |
M1 |
M0 |
T1的溢出标志位 |
T1的运行控制位 |
T0的溢出标志位 |
T0的运行控制位 |
|
|
|
|