最新MCS51单片机复习要点.docx
- 文档编号:9968266
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:41
- 大小:194.32KB
最新MCS51单片机复习要点.docx
《最新MCS51单片机复习要点.docx》由会员分享,可在线阅读,更多相关《最新MCS51单片机复习要点.docx(41页珍藏版)》请在冰豆网上搜索。
最新MCS51单片机复习要点
MCS-51单片机
8051单片机是8位单片机,有40个管脚,8根数据线,16根地址线。
单片机的八大组成部分:
CPU、ROM、RAM、I/O、定时/计数器、串口、SFR、中断服务系统
一、MCS-51机的内存结构(如图1所示)
FFFFH
FFFFH
1000H
0FFFH0FFFHFFH
80H
7FH
0000H0000H00H0000H
7F
程序存储器内部数据存储器外部数据存储器
图1MCS-51机的内存结构
物理上分为:
4个空间,片内ROM、片外ROM
片内RAM、片外RAM
逻辑上分为;3个空间,程序内存(片内、外)统一编址MOVC
数据存储器(片内)MOV
数据存储器(片外)MOVX
1、程序内存
寻址范围:
0000H~FFFFH容量64KB
EA=1,寻址从内部ROM;EA=0,寻址从外部ROM
地址长度:
16位存储器地址空间为64KB
作用:
存放程序及程序运行时所需的常数。
8051单片机6个具有特殊含义的单元是:
0000H——系统复位,PC指向此处;
0003H——外部中断0入口
000BH——T0溢出中断入口
0013H——外中断1入口
001BH——T1溢出中断入口
0023H——串口中断入口
2、内部数据存储器
物理上分为两大区:
00H~7FH即128B内RAM和SFR区。
如图2所示。
7FH
资料缓冲区
堆栈区80字节数据缓冲器用
工作单元
30H
2FH
位地址:
16字节
00H~7FH128可位寻址位
20H
1FH3区
2区
1区32字节4组R0~R7工作寄存器
0区
00H
图2内部数据存储器
二、殊功能寄存器SFR
寻址空间离散分配在:
80H~FFH,
注意PC不在此范围内。
地址末尾为0或8的SFR具有位寻址功能
1、CPU是运算器加控制器
2、算术运算寄存器
(1)累加器A(E0H)
(2)B寄存器:
乘、除法运算用
(3)程序状态字PSW寄存器:
包含程序运行状态信息。
PSWCYACFORS1RS0OV—P
CY(PSW.7)——进位/借位标志;位累加器。
AC(PSW.6)——辅助进/借位标志;用于十进制调整。
F0(PSW.5)——用户定义标志位;软件置位/清零。
OV(PSW.2)——溢出标志;硬件置位/清零。
P(PSW.0)——奇偶标志;A中1的个数为奇数P=1;否则P=0。
RS1、RS0——寄存器区选择控制位。
00:
0区R0~R7
01:
1区R0~R7
10:
2区R0~R7
11:
3区R0~R7
2、指针寄存器
(1)程序计数器PC
PC的内容是指明即将执行的下一条指令的地址,16位,寻址64KB范围,
复位时PC=0000H具有自动加1功能不可寻址即不能通过指令访问。
(2)堆栈指针SP
指明栈顶元素的地址,8位,可软件设置初值,复位时SP=07H
(3)数据指针DPTR
@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。
DPTR=DPH+DPL,也可单独使用。
没有自动加1功能通过软件INCDPTR内容加1
时序
单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。
执令周期:
即从取指到执行完,所需时间。
不同机器指令周期不一样;即使相同机器,不同的指令其指令周期也不一样。
机器周期:
机器的基本操作周期。
一个指令周期含若干机器周期(单、双、四周期)
状态周期:
一个机器周期分6个状态周期Si
每个状态周期含两个振荡周期,即相位P1、P2。
振荡周期:
由振荡时钟产生。
振荡周期Tosc=1/fosc
一个机器周期=12个振荡周期=12×1/fosc。
例如,若fosc=12MHz,则一个机器周期=1μs。
时钟的产生:
通过XTAL1(19)、XTAL(18)。
这两个管脚外部加石英晶体和电容组成振荡器
系统复位
通过给RST管脚加高电平理论上大于两个机器周期,实际大于10ms,系统复后
除了SP=07H,P0、P1、P2、P3为FFH外,所有的寄存器均为00H,PC=0000H,PSW=00H工作寄存器组R0~R7工作在0组。
并行I/O端口
并行I/O端口
四个8位I/O口P0、P1、P2、P3
作为通用I/O使用,是一个准双向口:
“读管脚在输入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态,可作高阻抗输入”MOVP1.#0FFH
MOVA,P1
读端口数据方式是一种对端口锁存器中数据进行读入的操作方式,CPU读入的这个数据并非端口引脚的数据。
(对端口进行读-修改-写类指令列如CPLP1.0是读端口锁存器而不是管脚)
一、P0口地址80H系统复位后P0=FFH
(1)P0口可作通用I/O口使用,又可作地址/数据总线口;
(2)P0既可按字节寻址,又可按位寻址;
(3)P0作为输入口使用时:
是准双向口;
(4)作通用I/O口输出时:
是开漏输出;(外部管脚必须接上拉电阻)
(5)作地址/数据总线口时,P0是一真正双向口,分时使用,提供地址线A0~A7由ALE控制信号锁存,数据线D0~D7
二、P1口地址90H地址90H系统复位后P1=FFH
2、特点
(1)无地址/数据口功能
(2)可按字节寻址,也可按位寻址
(3)作I/O输入口时:
是一准双向口,不是开漏输出(无需外接上拉电阻)。
三、P2口地址A0H系统复位后P2=FFH
2、特点
(1)当P2口作为通用I/O时,是一准双向口。
(2)从P2口输入数据时,先向锁存器写“1”。
(3)可位寻址,也可按字节寻址
(4)可输出地址高8位A8~A15。
四、P3口地址B0H系统复位后P3=FFH
2、特点
(1)作通用I/O时,是一准双向口,不是开漏输出(无需外接上拉电阻)。
(2)P3口具有第二功能
1、P0口:
地址低8位与数据线分时使用端口,
2、P1口:
按位可编址的输入输出端口,
3、P2口:
地址高8位输出口
4、P3口:
双功能口。
若不用第二功能,也可作通用I/O口。
5、按三总线划分:
地址线:
P0低八位地址,P2高八地址;
数据线:
P0输入输出8位数据;
控制线:
P3口的8位(RXD、TXD、INT0、INT1、T0、T1、WR*、RD*加上PSEN*、ALE、EA组成制总线。
)
中断系统
五个中断源,两个优先级
一、中断请求源(“五源中断”)
五个中断源:
入口地址
外部中断0(/INT0)0003H
T0溢出中断000BH
外部中断1(/INT1)0013H
T1溢出中断001BH
串口中断0023H
有了中断请求,如何通知CPU?
通过中断请求标志位来通知CPU。
外部中断源、定时/计数器的中断请求标志位分布在TCON中;
串口中断标志位分布在SCON中。
TCONTF1TR1TF0TR0IE1IT1IE0IT0
SCONTIRI
中断请求标志位
IE0(INT0)IE1(INT1)TF0(T0)TF1(T1)TI/RI(串口)
TF1——T1的溢出中断标志。
硬件置1,硬件清0(也可软件清0)。
TF0——T0的溢出中断标志。
(同TF1,只是针对T0的)
IE1——外部中断1(/INT1)请求标志。
外部有中断请求时,硬件使IE1置1,硬件清0。
IE0——外部中断0(/INT0)请求标志。
IT1——外部中断1(/INT1)触发类型控制位。
IT1=0,低电平触发。
IT1=1,下降沿触发。
IT0——外中断0(/INT0)触发类型控制位,用法同IT1。
外部中断INT0、INT1触发方式有电平触发和跳变触发
TI——串口发送中断标志位。
发送完数据,硬件使TI置1,软件清0(CLRTI)
RI——串行口接收中断标志位。
硬件置1,软件清0。
二、中断控制(两级管理)
1、中断屏蔽
在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关,
第二级为五个分开关,由IE控制。
IEEAESET1EX1ET0EX0
EA——总控制位
ES——串口控制位若为“1”,允许(开关接通)
ET1——T1中断控制位若为“0”,不允许(开关断开)
EX1——/INT1控制位例如,SETBEA
ET0——T0中断控制位CLRIE.7
EX0——/INT0控制位
2、中断优先级
为什么要有中断优先级?
CPU按中断申请时间先后顺序响应中断,同一时间只能响应一个中断请求。
若同时来了两个或两个以上中断请求CPU响应高级别中断。
为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。
同时同级的中断源申请中断CPU按优先顺序响应中断。
IPPSPT1PX1PT0PX0
以上各位与IE的低五位相对应,为“1”时为高级。
初始化编程时,由软件确定。
例如,SETBPT0或SETBIP.1
CLRPX0等。
同一级中的5个中断源的优先顺序是:
(注意是同级)
/INT0中断高
T0中断厂家出厂时已固化好顺序
/INT1中断——事先约定
T1中断
串口中断低
中断嵌套同级或低级中断不能打断正在响应的中断的服务程序,高级中断能够打断低级中断服务程序而形成中断嵌套
定时/计数器
定时/计数器两个定时器/计数器T0、T1四种工作方式
中断方式定时器程序初始化主要部分如下
MOVTMOD,#DATA;设置定时器工作方式
MOVTH0(TH1),#DATA;给定时器计数器装入初值
MOVTL0(TL1),#DATA
SETBEA;开中断
SETBET0(ET1);开中断
SETBTR0(TR1);启动定时器计数器
一、定时/计数器的结构
T0、T1均为16位加1计数器。
TH0TH1
TL0TL1
TMOD
工作方式TCON
1、工作方式控制寄存器TMOD
T1T0
TMODGATEC//TM1M0GATEC//TM1M0
GATE——门控位。
GATE=0软件启动,仅由软件置TR0(TR1)为1启动定时器/计数器;置0停止定时/计数
GATE=1硬件启动,软件置TR0(TR1)为1后.INT0管脚或/INT1管脚高电平启动定时器/计数器。
C//T——外部计数器/定时器方式选择位
C//T=0定时方式;
C//T=1计数方式。
M1M2——工作模式选择位。
M1M0模式说明
00013位定时/计数器八位TH(7~0)+低五位TL(4~0)
01116位定时/计数器TH(7~0)+TL(7~0)
1028位计数初值自动重装TL(7~0)TH(7~0)
113T0工作在两个8位定时/计数。
运行,而T1只能工作方式2,
TCONTR1TR0
TR0——定时/计数器0运行控制位。
软件置位,软件复位。
与GATE有关,分两种情况:
GATE=0时,若TR0=1,开启T0计数工作;
若TR0=0,停止T0计数。
GATE=1时,若TR0=1且/INT0=1时,开启T0计数;
若TR0=1但/INT0=0,则不能开启T0计数。
若TR0=0,停止T0计数。
TR1——定时/计数器1运行控制位。
用法与TR0类似。
C//T=0——定时
C//T=1——对外计数。
定时:
fosc/12=1/(12/fosc)=1/Tcy
等间隔,次数已定,时间确定
Tcy即对机器周期进行计数。
左图定时时间为n×Tcy。
n
计数:
脉冲不等间隔。
外部管脚输入(T0P3.4、T1P3.5)每个下降沿计数一次
确认一次负跳变需两个机器周期,(要求计数脉冲的高、低
电平要大于一个机器周期)所以,计数频率最高为fosc/24。
定时器初值计算
计数脉冲的个数N=t(定时时间)/Tcy(机器周期
计数初值X=M(定时计数器的模)-N
方式0X=213-N=8192-N
方式1X=216-N=65536-N
方式2X=28-N=256-N
推荐工作方式1和方式2
例1、设计一个P1.0能产生t=1ms的周期信号发生器,主频试编程。
解:
选T0;C//T=0,GATE=0定时时间0.5ms
N=t/Tcy=t/(12×(1/fosc))=500
所以,X=M-500,问:
M取多少?
模式0、模式1均可,取模式1,M=216
X=65536-500=65036=FE0CH
TH00FEH
TL00CH
程序:
ORG0000H
LJMPMAIN
ORG000BH
LJMPINSE1
ORG1000H
MAIN:
MOVSP,#60H
MOVTL0,#0CH
MOVTH0,#0FEH
MOVTMOD,#01H
SETBTR0;
SETBET0;
SETBEA
SJMP$
INSE1:
MOVTL0,#0CH
MOVTH0,#0F0H
CPLP10
RETI
单片机串行接口
8051单片机有一个异步全双工串行通讯口通过RXD(P3.0)接收,通过TXD(P3.1)发送,(串行通信有单工、半双工、全双工),8051单片机串行口有4种工作方式。
异步通信一帧数据的格式如下
空闲位起始位5~8位数据奇偶校验位停止位空闲位
3、串行通信方向
AB
发单工收
AB
发半双工发
收收
A全双工B
发收
收发
4、波特率
即串行通信速率。
b/s、bps
举例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为
240个字符。
求波特率。
解:
(1+8+1)×240=2400b/s=2400波特。
5、串行通信接口
发送:
CPU通过指令MOVSBUF,A来启动发送发送一帧数据完毕后TI置1,通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0(CLRTI)
D7D6D5D4D3D2D1D0发送数据寄存器
SBUF(99H)
1D7D6D5D4D3D2D1D00发送数据
发送时钟
接收:
必须置位寄存器SCON,REN位为1才能启动串口接收数据,当接收一帧数据后,RI置1,CPU通过查询RI=1或中断方式,通过指令MOVA.SBUF来取走接收的数据,并软件复位RI=0(CLRRI)
接收时钟
0D0D1D2D3D4D5D6D71接收数据
D0D1D2D3D4D5D6D7接收数据寄存器
SBUF(99H)
CPU
二、MCS-51机串行接口
单片机内有:
通用异步接收/发送器UART
全双工,4种工作方式,波特率可编程设置,可中断。
1、串口的组成
从编程角度讲来看主要由以下寄存器组成。
PCONSMOD
SCONSM0SM1SM2RENTB8RB8TIRI
SBUFD7D6D5D4D3D2D1D0SBUF发
SBUF收
SM0、SM1:
工作方式选择位
SM2:
多机通信控制位,常与RB8配合,决定是否激活RI
REN:
允许接收
TB8:
发送的第九位数
RB8:
接收的第九位数
TI:
中断标志
RI
SMOD:
波特系数选择位,0——20=1
1——21=2
2、串行口的工作方式
(1)SM0、SM1=00;方式0:
是8位同步移位寄存器方式,波特率固定为fosc/12
RXD——接收/发送数据
TXD——产生同步移位脉冲
接收/发送完,置位RI/TI,(要求SM2=0)
方式0D7D6D5D4D3D2D1D0发送
D0D1D2D3D4D5D6D7接收
无起始位,无停止位
(2)SM0、SM1=01方式1:
8位UART,波特率为(2SMOD×T1的溢出率)/32
停止位D7D6D5D4D3D2D1D0起始位发送位TXD
起始位D0D1D2D3D4D5D6D7停止位接收位RXD
1帧信息,10位。
送RB8位
波特率可变:
2SMOD/32×(T1的溢出率)
发送完置位TI。
接收完数据置位RI。
置位RI是有条件的。
即:
REN=1,RI=0且SM2=0或SM2=1但是接收到的停止位为1。
此时,数据装载SBUF,停止位进入RB8,RI置1。
(3)方式2(SM0、SM1=10)、方式3(SM0、SM1=11):
9位UART,多机通信。
多机通信只能工作在方式2、方式3
停止位TB8D7D6D5D4D3D2D1D0起始位发送数据
起始位D0D1D2D3D4D5D6D7TB8停止位接收数据
送SCON寄存器RB8位
方式2波特率:
(固定)2SMOD/64×fosc
方式3波特率:
2SMOD/32×(T1溢出率)
数据发送
串口方式2、3发送第九位数据必须通过软件置事先写入寄存器SCON的TB8位,把要发送的数据发送到SBUF(MOVSUBF,A)启动数据发送,发送完数据置位TI。
CPU通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0(CLRTI)
数据接收
接收:
必须置位寄存器SCONREN位为1才能启动串口接收数据,当接收一帧数据后此时,数据装载SBUF,接收到的第9位数据(TB8)送SCON寄存器RB8位,RI置1。
,CPU通过查询RI=1或中断方式,通过指令MOVA.SBUF来取走接收的数据,并软件复位RI=0(CLRRI)
3、波特率的设置
方式0、方式2固定。
方式1,方式3可变。
波特率=2SMOD/32×(T1的溢出率)
T1溢出率=单位时间内溢出次数=1/(T1的定时时间)
而T1的定时时间t就是T1溢出一次所用的时间。
此情况下,一般设T1工作在模式2(8位自动重装初值)。
N=28-t/T,t=(28-N)T=(28-N)×12/fosc
所以,T1溢出率=1/t=fosc/12(28-N),
故,波特率=2SMOD/32×fosc/12(256-N)。
若已知波特率,则可求出T1的计数初值:
y=256-2SMOD×fosc/(波特率×32×12)
例、若fosc=6MHz,波特率为2400波特,设SMOD=1,则定时/计数器T1的计数初值为多少?
并进行初始化编程。
解:
y=256-2SMOD×fosc/(2400×32×12)=242.98≈243=F3H
同理,fosc=11.0592MHz,波特率为2400,设SMOD=0,则
y=F4H
初始化编程:
MOVTMOD,#20H
MOVPCON,#80H
MOVTH1,#0F3H
MOVTL1,#0F3H
SETBTR1
MOVSCON,#50H
指令系统
指令按寻址方式分有7种寻址方式,直接寻址(direct)、立即寻址(#20H)、寄存器寻址(Rn)、寄存器间接寻址(@Ri)、相对寻址(rel)、寄存器变址寻址(@A+PC)、位寻址(ACC.1)
指令按功能上分有5种,传送类指令、算术运算类指令、逻辑运算及移位类指令、控制转移类指令、位操作类指令
指令三大属性。
功能属性、空间属性(指令站用的字节数)、时间属性(指令执行的机器周期数)
传送类指令有四种寻址方式对A的数据传送只影响状态标志位P
访问片内RAM和SFR指令格式MOV
唯一的一条16位传送指令MOVDPTR,#DATA16
访问片外RAM4条指令
MOVXA,@RiMOVXA,@DPTR(这两条指令是读片外RAM的数据伴随着控制信号RD*有效)
MOVX@Ri,AMOVX@DPTR,A(这两条指令是写片外RAM的数据伴随着控制信号WR*有效)
访问程序存储器ROM2条指令
MOVCA,@A+PCMOVCA,@A+DPTR(这两条指令是读程序ROM的数据伴随着控制信号PSEN*有效)
2、栈操作指令
PUSHdirect
POPdirect
不影响任何标志位。
Direct可以是内存RAM128个单元任意一个单元也可以特殊功能寄存器这里注意PUSHACC(ACC是直接地址,不能写A)
PUSHdirect指令执行中,机器自动进行两步操作:
(1)(SP)(SP)+1
(2)((SP))(direct)
例1、设分析:
执行PUSHDPL
PUSHDPH
后,各单元中的内容。
(0AH)=23H(0BH)=01H(SP)=0BH
POPdirect指令执行中,机器也自动进行两步操作:
(1)(direct)((SP))
(2)(SP)(SP)-1
例2、设(SP)=40H,(40H)=12H,(3FH)=34H
执行POPDPH
POPDPL
后,各单元中的内容。
(SP)=3EH,(DPTR)=1234H,
结论:
1)PUSH与POP操作过程刚好相反;
2)进、出栈规则:
先进后出,后进先出。
应注意指令书写先后顺序;
3)可用于“保护现场,恢复现场”
3、字节交换指令
XCHA,Rn
XCHA,direct整字节交换
XCHA,@Ri
XCHDA,@Ri
SWAPA半字节交换
不影响任何标志位。
算术运算类指令
包括:
加、减、乘、除;加一、减一。
一、加法指令
AD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 MCS51 单片机 复习 要点