MCS-51单片机复习要点文档格式.doc
《MCS-51单片机复习要点文档格式.doc》由会员分享,可在线阅读,更多相关《MCS-51单片机复习要点文档格式.doc(31页珍藏版)》请在冰点文库上搜索。
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
(1)当P2口作为通用I/O时,是一准双向口。
(2)从P2口输入数据时,先向锁存器写“1”。
(3)可位寻址,也可按字节寻址
(4)可输出地址高8位A8~A15。
四、P3口地址B0H系统复位后P3=FFH
(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
发单工收
发半双工发
收收
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、串口的组成
从编程角度讲来看主要由以下寄存器组成。