1、RETI:中断操作指令
这条指令的功能和RET指令相似,2条指令的不同之处是:本指令清除了中断响应时,被置1的MCS-51内部不可寻址的 “优先级生效”触发器清零。中断程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。中断指令“RETI”作为中断跳出指令,除了将堆栈中保存着的地址取出,送回PC,使程序从主程序的中断处继续往下执行的作用外,还有将“优先级生效”触发器清零的功能。
2、中断请求标志寄存器
1)TCON(字节地址88H):
TF1:片内定时器/计数器T1的溢出中断请求标志位
TF0:片内定时器/计数器T0的溢出中断请求标志位
IE1:外部中断请求1的中断请求标志位
IE0:外部中断请求0的中断请求标志位
IT1:选择外部中断请求1为跳沿触发方式还是电平触发方式
IT0:选择外部中断请求0为跳沿触发方式还是电平触发方式
2)SCON(字节地址98H):
TI:串行口的发送中断请求标志
RI:串行口的接收中断请求标志
3、中断允许寄存器IE(字节地址A8H)
EA:中断允许总开关控制位
EA=0,所有中断请求被屏蔽
EA=1,所有中断请求被开放
ES:串行口中断允许位
ES=0,禁止串行口中断
ES=1,允许串行口中断
ET1:定时器/计数器T1的溢出中断允许位
EX1:外部中断1的中断允许位
ET0:定时器/计数器T1的溢出中断允许位
EX0:外部中断0的中断允许位
4、中断优先级寄存器IP(字节地址B8H)
PS:串行口中断优先级控制位
PS=1,串行口中断位高优先级
PS=0,串行口中断位低优先级
PT1:定时器T1中断优先级控制位
PX1:外部中断1中断优先级控制位
PT0:定时器T0中断优先级控制位
PX0:外部中断0中断优先级控制位
5、优先级中断查询次序
中断源 中断级别(由高到低)
----------------------------------------------------
外部中断0 最高
T0溢出中断
外部中断1
T1溢出中断
串行口中断
T2中断 · 最低
6、中断入口地址表(5颗星*****)
中断源 中断入口地址
----------------------------------------------------
外部中断0 0003H
定时器/计数器T0 000BH
外部中断1 0013H
定时器/计数器T1 001BH
串行口中断 0023H
定时器/计数器T2(T2+EXF2) 002BH
7、工作方式控制寄存器TMOD(字节地址89H)
D7 D6 D5 D4 D3 D2 D1 D0
GATE C/T M1 M0 GATE C/T M1 M0
GATE 门控位
GATE=0时,仅有运行控制位TRx(x=0,1)来控制定时器/计数器运行
GATE=1时,用外中断引脚(INT0或INT1)上的电平与运行控制位TRx共同来控制定时器/计数器运行
M1,M0工作方式选择位
M1 M0 工作方式
--------------------------------------------------------------------
0 0 方式0,为13位定时器/计数器
0 1 方式1,为16位定时器/计数器
1 0 方式2,8位的常数自动重新装入的定时器/计数器
1 1 方式3,仅适用于T0,此时T0分为两个8位计数器,T1停止计数
C/T 计数器模式和定时器模式选择位
C/T=0,为定时器工作模式,对单片机的时钟振荡器12分频后的脉冲进行计数
C/T=1,为计数器工作模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)上的外部脉冲(负跳变)计数.
8、定时器/计数器控制寄存器TCON(字节地址88H)
D7D6D5D4D3D2D1D0----------------------------------------------------------TF1TR1TF0TR0IE1IT1IE0IT0
TF1、TF0 计数溢出标志位
当计数器计数溢出时,该位置为1。应使用软件及时将该位清0。使用中断方式时,此位作为中断请求标志位
进入中断服务程序后由硬件自动清0
TR1、TR0 计数运行控制位
TR1位(或TR0位)=1,为启动定时器/计数器工作的必要条件
TR1位(或TR0位)=0,则停止定时器/计数器工作
9、串行口控制寄存器SCON(字节地址98H)
[可进行位寻址,位地址为98H-9FH]
[SCON的所有位都可使用位操作指令清零或置1]
D7 D6 D5 D4 D3 D2 D1 D0
----------------------------------------------------------
SM0 SM1 SM2 REN TB8 RB8 TI RI
位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
SM0、SM1-串行口4种工作方式选择位SM0SM1方式工作方式--------------------------------------------------------------------000同步移位寄存器方式(用于扩展I/O口)0118位异步收发,波特率可变(由定时器控制)1029位异步收发,波特率为fosc/64或fosc/321139位异步收发,波特率可变(由定时器控制)
SM2多机通信控制位
SM2=1,则只有当接收到的第9位数据(RB8)为1时,才使RI置1,产生中断请求,并将接收到的前8位
数据送入到SBUF;当接收到的第9位数据(RB8)为0时,则接收到的前8位数据丢弃。
SM2=0,则不论接收到的第9位数据是1还是0,都将前8位数据送入SBUF中,并使RI置1,产生中断请求
在方式1时,如果SM2=1,则只有收到有效的停止位才会激活RI
在方式0时,SM2必须为0。
REN 允许串行接收位
由软件置1或清0
REN=1,允许串行口接收数据
REN=0,禁止串行口接收数据
TB8 发送第9位数据
在方式2或方式3时,TB8是要发送的第9位数据,其值由软件置1或清0
在双机串行通信时,TB8一般作为奇偶检验位使用
在多机串行通信中用来表示主发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0位数据帧
RB8 接收的第9位数据工作方式2或工作方式3时,RB8存放串行口接收到的第9位数据.在方式1,如果SM2=0,RB8是接收到的停止位.在方式0,不使用RB8.TI 发送中断标志位TI=1,表示一帧数据发送结束.串行口工作在方式0时,串行发送的第8位数据结束TI由硬件置1在其他工作方式中,串行口发送停止位的开始时置TI为1.TI=1,则可申请中断,CPU响应中断后,在中断服务程序中向"发送SBUF"写入要发送的下一帧数据TI位的状态可供软件查询,且必须由软件清0RI 接收中断标志位RI=1,表示一帧数据接收完毕.串行口工作在方式0时,接收完第8位数据时,RI由硬件置1在其他工作方式中,串行接收到停止位时,该位置1.RI=1,则可申请中断,要求CPU从"接收SBUF"取走数据.RI位的状态也可软件查询,且必须由软件清0
10、特殊功能寄存器PCON(字节地址87H)
D7 D6 D5 D4 D3 D2 D1 D0
----------------------------------------------------------
SMOD GF1 GF0 PD IDL
SMOD位:波特率选择位
11、波特率定义:串行口每秒钟发送或(接收)的位数称为波特率.
12、定时器T1产生波特率的计算(时钟晶体的振荡频率为fosc)
1)串行口工作在方式0,波特率固定为时钟频率fosc的1/12
例:若fosc=12MHz,波特率为fosc/12,即1Mbits.
2)串行口工作在方式2,波特率仅与SMOD位的值有关
方式2波特率=(2^SMOD/64)fosc
例:若fosc=12MHz:SMOD=0,波特率=187.5kbit/s;SMOD=1,波特率为375kbit/s
3)串行口工作在方式1或方式3时,常用定时器T1作为波特率发生器,其关系式为
方式3波特率=(2^SMOD/32)定时器T1溢出率----------------------(1)
定时器T1溢出率=计数速率/(256-X)=(fosc/12)/(256-X)-----------(2)
将(2)代入(1),
波特率=(2^SMOD/32)(fosc12)/(256-X)
13、时钟周期、机器周期、指令周期
时钟周期Tosc=1/fosc
机器周期Tcy=12/fosc[AT89S52单片机的每12个时钟周期为一个机器周期]
状态周期T状=2*Tosc
指令周期:执行一条指令所需的时间.可分为单字节,双字节,三字节指令.
【
时钟周期,又称为震荡周期,是为单片机提供定时信号的震荡源的周期,
是单片机最基本的时间单位。谈到时钟周期就必须说晶体振荡器即即晶
振,晶振可以说是单片机的心脏,它为单片机提供一个时钟频率 fosc(震荡频率)。
而所谓的震荡频率(时钟频率)自然是晶振一秒钟震荡的次数。时钟频率越高,
单片机运行速度越快,就如电脑的CPU什么可以加速到多少GHz一样。自然时钟周期Tosc=1/fosc.
例如 震荡频率为12MHz的单片机即 fosc = 12MHz,那么震荡周期
Tosc = 1/fosc= 1/12 us。
状态周期状态周期是CPU从一个状态转换到另一状态所需要的时间。简单地说每个状态周期Ts 分为两个震荡周期(时钟周期),即Ts = 2Tosc。机器周期这里我们以MCS-51单片机为例,它有固定的机器周期,一个机器周期包含六个状态例如,取指令、存储器读、存储器写等。即机器周期等于6个状态周期,而一个状态周期是2个时钟周期,因此一个机器周期又等于12个时钟周期。那么晶振频率为12MHz的的单片机的机器周期 T = 12*Tosc = 1 us。指令周期顾名思义,指令周期就是执行一条指令所需的全部时间。MCS-51单片机的指令周期通常是 1 ~ 4 个机器周期组成。
】