单片机(中断系统-串口通信)

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)

D7	D6	D5	D4	D3	D2	D1	D0
----------------------------------------------------------
TF1	TR1	TF0	TR0	IE1	IT1	IE0	IT0

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种工作方式选择位

SM0	SM1	方式	工作方式
--------------------------------------------------------------------
0	0	0	同步移位寄存器方式(用于扩展I/O口)
0	1	1	8位异步收发,波特率可变(由定时器控制)
1	0	2	9位异步收发,波特率为fosc/64或fosc/32
1	1	3	9位异步收发,波特率可变(由定时器控制)

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位的状态可供软件查询,且必须由软件清0
RI 接收中断标志位
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)
(fosc
12)/(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 个机器周期组成。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值