单片机定时器串行口中断完美总结版.docx
《单片机定时器串行口中断完美总结版.docx》由会员分享,可在线阅读,更多相关《单片机定时器串行口中断完美总结版.docx(7页珍藏版)》请在冰豆网上搜索。
单片机定时器串行口中断完美总结版
单片机定时器、串行口、中断完美总结版(总6页)
定时器/计数器接口
TMOD(方式寄存器)设定定时器/计数器T0和T1的工作方式
定时器1:
定时器0:
D7
D6
D5
D4
D3
D2
D1
D0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
GATE:
门控位(定时器的启动是否受到外部中断请求信号的影响)。
GATE=0定时器的启动不受到外部中断请求信号的影响一般情况下GATE=0。
GATE=1T0的启动受到/INT0控制,T1的启动还受到/INT1控制,只有当外部中断信号/INT0和/INT1为高电平的时候才启动。
C/T:
定时/计数方式选择位
C/T=0工作于定时方式
C/T=1工作于计数方式
M1和M0为工作方式选择位
M1
M0
工作方式
方式说明
0
0
0
13位定时计数器
0
1
1
16位定时计数器
1
0
2
8位自动重置定时计数器
1
1
3
两个8位定时计数器(只有T0有)
方式0(13位)
TL0(TL1)的低5位和TH0(TH1)的8位
满值为2的13次幂为8192初值X=8192-N
方式1(16位)
TL0(TL1)的8位和TH0(TH1)的8位
满值为2的16次幂为65536初值X=65536-N
方式2(8位自动重置定时计数器)
16位计数器只用了8位(TL0或者TL1)来计数;TH0或者TH1用来保存初值。
满值为2的8次幂为256初值X=256-N
方式3(只有T0才有)
Tl0可以作为定时/计数器使用;TH0只能用作定时器使用
满值为2的8次幂为256初值X=256-N
特殊功能寄存器TCON:
①定时/计数器的控制寄存器(定时/计数器的启动与溢出(D4-D7))
②外部中断控制(D0-D3)
D7
D6
D5
D4
D3
D2
D1
D0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF1、TF0:
定时计数器T1、T0的溢出标志位(溢出中断),计满时,由硬件使它置位;如果中断允许,则触发T1、T0中断,进入中断处理后由硬件电路自动清除。
TR1、TR0:
定时计数器T1、T0的启动位(可由软件置位或者清零)
TR1=1启动TR1=0停止
TR0=1启动TR0=0停止
IT0、IT1:
外部中断0(或者1)触发方式控制位。
IT0=0(IT1=0)选择外部中断为电平触发方式
IT0=1(IT1=1)选择外部中断为边沿触发方式
IE0、IE1:
外部中断0(或者1)的中断请求标志位
电平触发的时候【IT0=0(IT1=0)】若()引脚为高电平,则IE0(IE1)清零
若()引脚为低电平,则IE0(IE1)置1,向CPU请求中断,CPU响应后不能由硬件自动将IE0(IE1)清零
边沿触发的时候【IT0=1(IT1=1)】若第一个机器周期采样到()为高电平,第二个机器周期采样到()为低电平,
则IE0(IE1)置1,向CPU请求中断,CPU响应后由硬件自动将IE0(IE1)清零
经常要用到的位:
TMOD:
【定时/计数器的选择以及他们的工作方式】MOVTMOD,#02H;定时器0方式2
TH0、TL0(TH1、TL1):
【赋初值】
EA:
【中断允许总控制位】SETBEA;开启中断
ET0(ET1):
【定时计数器T0(T1)的溢出中断允许位】SETBET0;T0溢出中断允许
TR0(TR1):
【启动定时/计数器】SETBTR0;开启定时器T0
51单片机串行口的功能与结构
串行口控制寄存器SCON
SCON
D7
D6
D5
D4
D3
D2
D1
D0
98H
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0、SM1为串行口工作方式选择位
SM0
SM1
方式
功能
波特率
0
0
方式0
移位寄存器方式
fosc/12
0
1
方式1
8位异步通信方式
可变
1
0
方式2
9位异步通信方式
fosc/32或者fosc/64
1
1
方式3
9位异步通信方式
可变
SM2为多机通信控制位:
A、方式0时,SM2必须为0
B、方式1时,若SM2=1则接收到有效的停止位,接受才有效
C、方式2和方式3接受数据,SM2=1,①RB8=0(接收到的第九位数据),则输入移位寄存器中接受的数据不能移入到接收数据寄存器SBUF,RI不置1(接收中断标志位),接收无效;
②RB8=1(接收到的第九位数据),则输入移位寄存器中接受的数据将移入到接收数据寄存器SBUF,RI置1(接收中断标志位),接收有效;
REN:
允许接收控制位
REN=1允许接收
REN=0禁止接收
TB8(发送数据的第9位)
在方式2和方式3中,TB8为发送数据的第9位,可以用来做奇偶校验位
在多机通信当中,用来表示主机发送的是地址还是数据,TB8=0表示数据,TB8=1表示地址。
RB8(接收数据的第9位)
在方式2和方式3中,RB8为接收数据的第9位,
在方式1中,若SM2=0,则RB8为接收到的停止位
在方式0中,不使用RB8
TI:
发送中断标志位
在一组数据发送完毕后被硬件置位。
在方式0时,当发送数据第8位结束后,由内部硬件使TI置位
在方式1、2、3时,在停止位开始发送时由硬件置位
TI置位标志着上一个数据发送完毕,CPU可以通过串口发送下一个数据了
在CPU响应中断后,TI不能自动清零,必须用软件清零,此外,TI可以供查询使用
RI:
接收中断标志位
在一组数据发送完毕后被硬件置位。
在方式0时,当接收数据第8位结束后,由内部硬件使RI置位
在方式1、2、3时,当接收有效,由硬件使RI置位
TI置位标志着上一个数据已经接收到,CPU可以从接收数据寄存器中来取接收的数据
在CPU响应中断后,RI不能自动清零,必须用软件清零,此外,RI可以供查询使用
对于串口发送中断TI和接收中断RI,无论哪个响应,都触发串口中断
电源控制寄存器PCON
PCON
D7
D6
D5
D4
D3
D2
D1
D0
87H
SMOD
SMOD:
波特率加倍位
当SMOD=1,则串行口方式1、方式、2方式3的波特率加倍。
PCON不能进行为寻址,只能按字节方式访问。
串行口的工作方式
方式0:
通常用来外接移位寄存器,用作扩展I/O接口,波特率固定为fosc/12
中断
中端允许控制
IE
D7
D6
D5
D4
D3
D2
D1
D0
A8H
EA
ET2
ES
ET1
EX1
ET0
EX0
EA:
中断总允许位
EA=0屏蔽所有的中断请求
EA=1开放中断
EA的作用是使中断允许形成2级控制,即各中断源首先受到EA控制,其次还要受到中断源自己的中断允许控制。
ET2:
定时/计数器T2的溢出中断允许位(只用与52系列,51系列没有此位)
ET2=1允许T2中断
ET2=0禁止T2中断
ET1:
定时/计数器T1的溢出中断允许位
ET1=1允许T1中断
ET1=0禁止T1中断
ET0:
定时/计数器T0的溢出中断允许位
ET0=1允许T0中断
ET0=0禁止T0中断
ES:
串行口中断允许位
ES=1允许串行口中断
ES=0禁止串行口中断
EX1:
外部中断/INT1的中断允许位
EX1=1允许外部中断/INT1的中断允许位
EX1=0禁止外部中断/INT1的中断允许位
EX0:
外部中断/INT0的中断允许位
EX0=1允许外部中断/INT0的中断允许位
EX0=0禁止外部中断/INT0的中断允许位
优先级控制(优先级控制寄存器)
IP
D7
D6
D5
D4
D3
D2
D1
D0
B8H
PT2
PS
PT1
PX1
PT0
PX0
如果某一位被置1,则对应的中断源就被设置为最高优先级
PX0:
外部中断/INT0的中断优先级控制位
PT0:
定时/计数器T0的中断优先级控制位
PX1:
外部中断/INT1的中断优先级控制位
PT1:
定时/计数器T1的中断优先级控制位
PS:
串行口的中断优先级控制位
PT2:
定时/计数器T2的中断优先级控制位,只用于52子系列
中断响应条件
中断源有请求且中中断允许
中断响应时间:
单片机响应中断的最短时间为3个机器周期(长调用指令的两个机器周期和检测的一个机器周期)