200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 单片机(中断系统-串口通信)

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

时间:2022-05-13 18:10:17

相关推荐

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

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 个机器周期组成。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。