Never save something for a special occasion. Every day in your life is a special occasion.
分类: 嵌入式
2011-01-03 23:03:39
《MCS-51单片机的中断系统》
中断概述: 中断源、中断优先级、中断响应
① 8051中断源 (8051有5个, 8052有6个; 2个中断优先级)
int0 |
外部中断0 |
P3.2引脚输入,低电平/负跳变有效,标志 IE0 |
T0 |
定时器0溢出中断 |
T0溢出,标志TF0. 计数引脚P3.4 |
|
外部中断0 |
P3.3引脚输入,低电平/负跳变有效,标志 IE1 |
T1 |
定时器1溢出中断 |
T1溢出,标志TF1. 计数引脚P35 |
串行口 |
串行中断 |
一个串行帧收发完成,标志 RI/TI |
② 中断相关寄存器 (TCON、 SCON、 IE、IP)
TCON 定时/计数器和外部中断控制
TF 内部定时器溢出标志
TR 内部定时器运行控制
IE 外部中断请求标志
IT 外部中断触发方式选择位
SCON 串行中断控制
SM0、SM1 串口操作模式选择
SM2 多机通信使能位
REN 接收允许位
TB8、RB8 收发数据位8
TI、RI 串行口收发中断标志
IE 中断允许, IP 中断优先级
EA 中断总允许位
各中断允许位,各中断优先级设定位
③ 中断响应
④ 中断服务程序入口地址表
中断源 |
中断向量 |
同级内第二优先级次序 |
外部中断0 |
0003H 000BH 0013H 001BH 0023H 002BH |
高 IE0 IF0 IE1 IF1 RI/TI 低 TF2/EXF2 |
《MCS-51 单片机内部定时/计数器及串行接口》 之 内部定时/计数器
① 定时/计数器的结构及工作原理
计数单元:向上计数
工作方式寄存器: TMOD
控制寄存器: TCON
② 定时/计数器工作状态与初值计算
设模为M, 计数值为N, 应设初值为X, 则
计数状态下: X=M-N
定时状态下: X=M-定时时间/T, 其中 T=12*晶振周期, 为51的机器周期。提示,定时的实质是计数机器周期。
③ 定时/计数器工作方式和控制寄存器 (TMOD、TCON)
TMOD
其中:
GATE 定时/计数器运行门控标志位
C/t 定时/计数工作状态选择位
M1M0 工作方式选择:
方式0为13位定时器(TH的高8位和TL的低5位);
方式1为16位定时/计数器;
方式2为自动装载初值的8位计数器;
方式3 时T0分为两个独立的8位计数器:TL0利用了T0本身的一些控制位(GATE、C/T、TR0、INT0和TF0),它的操作与方式0、1类似;而TH0借用了T1的控制位TR1和TF1,并规定只能用作定时器功能,对机器周期计数。TH0控制了T1的中断,T1可设置为方式0~2,主要用于任何不需要中断控制的场合或用作串行口的波特率发生器。通常,当T1用作串行口波特率发生器时,T0才定义为方式3,以增加一个8位计数器。
《MCS-51 单片机内部定时/计数器及串行接口》 之 串行接口
① 串行通信的基本概念
CPU与外设交换数据有并行和串行通信两种方式。
串行通信依据收发功能分为3种:单工方式、半双工方式、全双工方式
在串行通信过程中,数据传送方式有2种:同步方式、异步方式
同步方式:同步方式是将一大批数据分成几个数据块,数据块之间用同步字符予以隔开,而传送的各位二进制之间都没有间隔。其基本特征是发送与接收时钟始终保持严格同步。如SPI总线利用CLK同步收发双方。
异步方式:异步通信是按帧传送数据,它利用每一帧的起止信号来建立发送与接收之间的同步,每帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔的随机的。其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志,这是以字符为单位一个个地发送和接收的。
② 与串行口有关的特殊功能寄存器
使用串行口时,要用SBUF作收发数据缓冲器,用SCON和IE、IP作串行中断控制,必要时还可能用到T1和PCON以设定波特率。
SBUF 收发缓冲器。逻辑上是一个寄存器,物理上是两个独立的寄存器。
SCON 串行口控制寄存器。 格式如下:
SM0、SM1,SM2,REN,TB8、RB8,TI
其中:
SM0 SM1:串行口操作模式选择
SM0 SM1 |
模式 |
功能 |
波特率 |
0 0 0 1 1 0 1 1 |
0 1 2 3 |
同步移位寄存器 8位UART 9位UART 9位UART |
fosc/12 可变(T1溢出率) fosc/64或fosc/32 可变(T1溢出率) |
SM2:多机通信时的接收允许标志位
在模式2、3中,若SM2=1,且接收到的第9位数据RB8是0,则接收中断标志RI不会被激活。 在模式1中,若SM2=1且没胡接收到有效的停止位,则R1不会被激活。 在模式0,SM2必须是0。
REN:接收允许位
TB8:发送数据位8
在模式2、3中,它是要发送的第9位数据,在许多通信协议中,该位是奇偶位。在多机通信中,该位用于表示是地址帧还是数据帧。
RB8:接收数据位8
在模式2、3中,它是接收的第9位数据。在模式1中,若SM2=0,则RB8是接收的停止位。
PCON 电源控制寄存器
其中:
SMOD:波特率倍增位
GF1 GF0:通用标志位
PD:掉电方式控制位
IDL:空闲方式控制位
③ 串行口的4种工作方式
④ 多机通信
如前所述,串行口以模式2、3接收时:若SM2=1 则 当RB8=1时数据才装入SBUF,并使RI=1;当RB8=0时,不产生中断标志(RI=0),信息丢失。 若SM2=0 则 不管RB8是0还是1都将接收数据装入SBUF,并产生中断标志(RI=1)。 利用这一特点可实现多机通信。
每一个从机有一个地址编码,从机初始化串口为模式2或3的接收方式:SM2=1,REN=1。
当主机要发送数据给某一从机时先发送地址帧,目标从机确认这个地址与本机相符后令SM2=0 准备接收数据。 其余从机因SM2=1 且第9位RB8=0,不满足接收数据的条件,而将所接收的数据丢失。
⑤ 波特率计算
l 模式0波特率=Fosc/32, 即一个机器周期收发一位。
l 模式2波特率=9Fosc*2^SMOD)/64,即 Fosc/32 或 Fosc/64.
l 模式1和3:T1作为波特率发生器,常选用定时方式2(8位自动装载初值),并且禁止T1中断
模式1或3波特率=T1溢出率*(2^SMOD)/32
=Fosc/(12*(256-TH1)) * (2^SMOD)/32
l 初值TH1由以上公式计算
9.6k波特率:串口模式1或3,Fosc=11.059MHz, SMOD=0, C/t=0, 定时器T1方式2, 初值TH1=FDH