单片机复习Word格式文档下载.docx
《单片机复习Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机复习Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
∙AC:
辅助进位标志AC。
又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。
∙F0:
标志0(用户可用途一般用途)
∙RS1,RS0:
在四组工作寄存器中选择
∙OV:
溢出标志位OV。
MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。
∙P:
奇偶标志P。
反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。
所选择的寄存器组
0区(00H~07H)
1
1区(08H~0FH)
2区(10H~17H)
3区(18H~1FH)
PC
PC是程序计数器,正常时存放着下一条将要执行的指令,在程序跳转以及子程序调用的时候会有变化。
PC是16位的,216=65536,所以51可以寻址64KB的存储器空间。
复位后PC的值是0000H。
ROM
RAM称为数据存储器,ROM称为程序存储器,SFR称为特殊功能寄存器。
RAM又分为内部RAM与外部RAM,ROM也分为内部ROM与外部ROM,不过ROM的区分仅仅是物理上的,逻辑上ROM不区分内外。
ROM中有5个特殊地址:
中断源
处理程序地址
外部中断0(INT0)
0003H
定时器0中断(T0)
000BH
外部中断1(INT1)
0013H
定时器1中断(T1)
001BH
串口中断
0023H
RAM
7FH
30H
用户RAM区
2FH
20H
位寻址区
1FH
18H
第3工作寄存器区
17H
10H
第2工作寄存器区
0FH
08H
第1工作寄存器区
07H
00H
第0工作寄存器区
SFR
特殊功能寄存器以及其地址见下图。
空白地区不能读写,行为随机。
SFR列表
时钟周期、机器周期与指令周期
时钟周期:
Tosc=1/fosc。
机器周期:
12Tosc=12/fosc。
指令周期:
1~3个机器周期。
单字节指令一个机器周期,双字节可能1或2个机器周期,而3字节指令肯定是两个机器周期,乘除法个别、是4个机器周期。
标识符号
地址
寄存器名称
ACC
0E0H
累加器
B
0F0H
B寄存器
PSW
0D0H
程序状态字
SP
81H
堆栈指针
DPTR
82H、83H
数据指针(16位)含DPL和DPH
IE
0A8H
中断允许控制寄存器
IP
0B8H
中断优先控制寄存器
P0
80H
I/O口0寄存器
P1
90H
I/O口1寄存器
P2
0A0H
I/O口2寄存器
P3
0B0H
I/O口3寄存器
PCON
87H
电源控制及波特率选择寄存器
SCON
98H
串行口控制寄存器
SBUF
99H
串行数据缓冲寄存器
TCON
88H
定时控制寄存器
TMOD
89H
定时器方式选择寄存器
TL0
8AH
定时器0低8位
TH0
8CH
定时器0高8位
TL1
8BH
定时器1低8位
TH1
8DH
定时器1高8位
单片机指令系统
指令寻址方式
MCS-51设有7种寻址方式:
∙寄存器寻址
∙直接寻址
∙寄存器间接寻址
∙立即寻址
∙基址寄存器加变址寄存器间接寻址
∙相对寻址
∙位寻址
一、数据传送类指令
说明:
∙#data:
8位立即数
∙#data16:
16位立即数
∙Ri:
工作寄存器中的寄存器R0或R1
∙Rn:
工作寄存器中的寄存器R0、R1…R7之一,
∙常用符号
∙direct:
片内RAM或SFR的地址(8位)
∙@:
间接寻址寄存器
∙Bit:
片内RAM或SFR的位地址
∙addr11:
11位目的地址
∙addr16:
16位目的地址
∙rel:
补码形式的8位地址偏移量。
偏移范围为-128~127
∙/:
位操作指令中,该位求反后参与操作,不影响该位
片内RAM的直接地址或寄存器
∙(X):
相应地址单元中的内容
单片机中断系统
概念:
引起CPU中断的根源,称为中断源。
中断源向CPU提出的中断请求。
CPU暂时中断原来的事务A,转去处理事件B。
对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。
实现上述中断功能的部件称为中断系统(中断机构)。
80C51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套(就是可以在嵌套过程中再次响应嵌套)。
1、INT0(P3.2),外部中断1。
可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。
当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。
2、INT1(P3.3),外部中断2。
可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。
当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。
3、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。
当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
4、TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。
当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。
当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
中断请求标志
1、TCON的中断标志
IT0(TCON.0):
外部中断0触发方式控制位。
∙当IT0=0时:
为电平触发方式。
∙当IT0=1时:
为边沿触发方式(下降沿有效)。
IE0(TCON.1):
外部中断0中断请求标志位。
IT1(TCON.2):
外部中断1触发方式控制位。
IE1(TCON.3):
外部中断1中断请求标志位。
TF0(TCON.5):
定时/计数器T0溢出中断请求标志位。
TF1(TCON.7):
定时/计数器T1溢出中断请求标志位。
单片机TCON辅助设置工具
2、SCON的中断标志
RI(SCON.0),串行口接收中断标志位。
当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。
同样,RI必须由软件清除。
TI(SCON.1),串行口发送中断标志位。
当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。
每发送完一个串行帧,由硬件置位TI。
CPU响应中断时,不能自动清除TI,TI必须由软件清除。
80C51中断的控制
中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
∙EX0(IE.0):
外部中断0允许位;
∙ET0(IE.1):
定时/计数器T0中断允许位;
∙EX1(IE.2):
∙ET1(IE.3):
定时/计数器T1中断允许位;
∙ES(IE.4):
串行口中断允许位;
∙EA(IE.7):
CPU中断允许(总允许)位。
单片机IE自动设计工具
中断优先级控制
80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。
每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的。
∙PX0(IP.0),外部中断0优先级设定位;
∙PT0(IP.1),定时/计数器T0优先级设定位;
∙PX1(IP.2),外部中断0优先级设定位;
∙PT1(IP.3),定时/计数器T1优先级设定位;
∙PS?
(IP.4),串行口优先级设定位;
∙PT2(IP.5),定时/计数器T2优先级设定位。
中断优先级规则:
∙CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
∙正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
∙正在进行的低优先级中断服务,能被高优先级中断请求所中断。
中断系统总结:
TCON和SCON是中断请求,以及控制外部中断的有效方式。
IE控制是否允许CPU响应中断,是否允许响应某一个中断。
IP控制中断的优先级。
单片机定时器/计数器
定时器/计数器的初始化
由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。
初始货的步骤一般如下:
1、确定工作方式(即对TMOD赋值);
2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);
3、根据需要开放定时器/计数器的中断(直接对IE位赋值);
4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;
若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。
当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。
下面介绍一下确定时时/计数器初值的具体方法。
因为在不同工作方式下计数器位数不同,因而最大计数值也不同。
现假设最大计数值为M,那么各方式下的
最大值M值如下:
方式0:
M=213=8192
方式1:
M=216=65536
方式2:
M=28=256
方式3:
定时器0分成两个8位计数器,所以两个M均为256。
因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算:
X=M-计数值
下面举例说明初值的确定方法。
例1、选择T1方式0用于定时,在P1.1输出周期为1ms方波,晶振fosc=6MHz。
解:
根据题意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可。
则M1M0=0;
因是定时器方式,所以C/T=0;
在此用软件启动T1,所以GATE=0。
T0不用,方式字可任意设置,只要不使其进入方式3即可,一般取0,故TMOD=00H。
系统复位后TMOD为0,可不对TMOD重新清0。
下面计算500us定时T1初始值:
机器周期T=12/fosc=12/(6×
106)Hz=2μs
设初值为X,则:
(1013-X)×
2×
10-6s=500×
10-6s
X=7942D=1111100000110B=1F06H
因为在作13位计数器用时,TL1的高3位未用,应填写0,TH1占用高8位,所以X的实际填写应为:
X=111100000000110B=F806H
结果:
TH1=F8H,TL1=06H
源程序如下:
ORG2000H
MOVTL1,#06H;
给TL1置初值
MOVTH1,#0F8