您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 大连海事大学通信课件.
第三章MCS-51的功能部件§3-1中断系统§3-2定时器/计数器§3-3串行接口§3-1中断系统•MCS-51单片机允许有五个中断源,提供两个中断优先级。•每一个中断源的优先级的高低都可以通过编程来设定。•中断源的中断请求是否能得到响应,受中断允许寄存器IE的控制。•各个中断源的优先级可以由中断优先级寄存器IP中的各位来确定。•同一优先级中的各中断源同时请求中断时,由内部的查询逻辑来确定响应的次序。•MCS-51中断系统见图所示。MCS-51中断系统1010101010源码源码高优先级中断请求向量入口低优先级中断请求向量入口IE0IT0IE1IT1EX0EX1ET0ET1ESINT0INT1TF0TF1TIRI中断允许寄存器IE源允许总允许中断优先级寄存器IP优先级查询电路EA中断系统分以下几个内容:•一、中断请求源和中断请求标志二、中断控制三、中断优先级结构四、中断响应过程一、中断请求源和中断请求标志1.中断请求源8051提供5个中断源:•!INT0来自P3.2引脚上的外部中断请求(外中断0)•!INT1来自P3.3引脚上的外部中断请求(外中断1)•T0片内定时器/计数器0溢出(TF0)中断请求•T1片内定时器/计数器1溢出(TF1)中断请求•串行口片内串行口完成一帧发送或接收中断请求源TI或RI说明:•每一个中断源都对应有一个中断请求标志位,设在SFR的TCON和SCON中。•当有中断请求时,由TCON和SCON中的相应位来锁存。2.TCON-定时器/计数器(T0,T1)控制R(88H)TF1TF0IE1IT1IE0IT08F8E8D8C8B8A8988TCONT1溢出中断标志T0溢出中断标志外中断1请求标志外部中断1(!INT1)触发方式控制位外部中断0(!INT1)触发方式控制位外中断0请求标志•T0、T1从初值开始加1计数到产生溢出,使TF0、TF1置“1”,直到CPU响应中断时由硬件复位。•若ITi=1(沿触发),则!INTi上的电平由1变到0时,置位IEi、在CPU响应该中断时由硬件清0。•若ITi=0(电平触发),则输入到!INTi的外部中断源必须保持低电平有效,直到该中断被响应。同时在中断返回前必须使电平变高,否则将会再次产生中断。位地址3.SCON-串行口控制寄存器(98H)SCON中只列出低2位的情况:•当发送和接收中任何一个标志被置位时,都可以向CPU提出申请。事实上,CPU在响应串行口中断时,并不清楚中断是由RI和TI引起,必须在中断服务程序中判断,并由软件按RI和TI标志位清0发送中断标志接收中断标志TIRISCON9F9E9D9C9B9A9998位地址二、中断控制1.IE-中断允许寄存器(A8H)控制中断允许或禁止的。格式如下:EA--ESET1EX1ET0EX0IEAFAEADACABAAA9A8中断允许标志0禁止所有中断1开放中断外部中断01允许中断外部中断11允许中断T0的溢出中断1允许中断T1的溢出中断1允许中断串行口中断允许位1允许中断位地址2.IP-中断优先级寄存器(B8H)•中断系统提供两个中断优先级•每一个中断源都可编程设置为高优先级或低优先级中断源,以便实现二级中断嵌套。•中断优先级是由IP控制的,IP的格式如下:---PSPT1PX1PT0PX0IPBFBEBDBCBBBAB9B8外部中断01设高优先级0设低优先级外部中断11设高优先级0设低优先级T0中断优先级1设高优先级0设低优先级T1中断优先级1设高优先级0设低优先级串行口中断优先级1设高优先级0设低优先级位地址三、中断优先级结构•中断系统内具有两级优先级,遵循以下两条基本规则:(1)低优先级中断源可被高优先级中断源所中断。(2)一种中断源一旦得到响应,与它同级的中断源不能再中断它。•当同时收到几个同一优先级的中断,其优先级排列如下:中断源同级内的中断优先级外部中断0最高T0溢出中断外部中断1T1溢出中断串行口中断最低四、中断响应过程•CPU在每个机器周期的S5P2时刻采样中断标志,而在下一个机器周期对采样到的中断进行处理。•按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。•封锁CPU对中断响应的条件:(1)CPU正在处理同级的或高一级的中断(2)现行的机器周期不是当前所执行指令的最后一个机器周期。(3)当前正在执行的指令是返回(RETI)指令或是对IE或IP进行读/写的指令。•CPU响应中断时,先置相应的优先级激活触发器,封锁同级和低级的中断。•根据中断源的类别,在硬件的控制下,程序转向相应的向量入口单元,执行中断服务程序。基本部件§3-2定时器/计数器•MCS-51内部有两个16位可编程的定时器/计数器(T0、T1)。一、结构微处理器TH070TL070TH170TL170T1T0P3.5(T1)P3.4(T0)TCONTMOD功能:作定时器时:•输入的时钟脉冲是由晶体振荡器的输出经12分频(一个机器周期)后得到的。作对外部事件计数时:•接相应的外部输入引脚T0(P3.4)或T1(P3.5)。•最高计数频率为晶振频率的1/24。•例如:fosc=6MHz,则最高计数频率=6M/24=250KHz。1.TMOD—方式寄存器(89H)C/!T—方式选择位。=0,定时器方式;=1,计数器方式。GATE—运行控制位。=0,只要TCON中的TRi被置1,Ti就开始计数;=1,不仅要TCON中的TRi被置1,还需要!INT0或!INT1引脚为高电平,才允许计数。M1M0—工作方式选择GATEC/TM1M0T1方式控制GATEC/TM1M0T0方式控制D7D6D5D4D3D2D1D0TMODM1M0方式说明00013位定时器/计数器01116位定时器计数器102自动装入时间常数的8位定时器/计数器113对T0分为两个8位计数器;对T1置方式3时停止工作2.TCON—控制寄存器(88H)TF1TR1TF0TR0IE1IT1IE0IT08F8E8D8C8B8A8988TCONT1的溢出中断1T1计数溢出T1的运行控制位0停止计数1启动计数用于外部中断T0的溢出中断1T0计数溢出T0的运行控制位0停止计数1启动计数位地址二、工作方式1.方式0-13位计数器图方式0(13位计数器)振荡器÷12M0M1C/TGATE00TMODINT0TL0(5位)TH0(8位)C/T=0C/T=1TF0TR0TCON中断控制T0此时由TH0的8位和TL0的低5位组成一个13位计数器。2.方式1-16位计数器由TH0和TL0组成一个16位计数器。与方式0的区别仅仅为计数器的位数不同。图方式1(16位计数器)振荡器÷12M0M1C/TGATE10TMODINT0TL0(8位)TH0(8位)C/T=0C/T=1TF0TR0TCON中断控制T03.方式2-初始常数自动装入•把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器。TH0由软件预置值。•常用作串行口波特率发生器。振荡器÷12M0M1C/TGATE01TMODINT0TL0(8位)C/T=0C/T=1TF0TR0TCON中断控制T0TH0(8位)重新装入图方式2(初始常数自动装入)4.方式3-两个8位计数器•方式3只适用于T0。•将T1用作串行口波特率发生器,T0定义为方式3,以增加一个8位计数器。振荡器÷12M0M1C/TGATE11TMODINT0TL0(8位)C/T=0C/T=1TF0TR0TCONT0中断控制T0TH0(8位)TF1TR1TCONT1中断控制1/12fosc图方式3(两个8位计数器)三、应用举例1.计数器方式常数计算•设T0为方式2工作时,在外界发生一次事件时产生中断请求。时间常数的计算:•方式2工作时,当计数到28时计数器就产生溢出。设常数值为x,当发生一次外界事件时就溢出,则x+1=28x=28-1=11111111B=FFH2.定时器方式时间常数计算设方式0工作时,定时时间为1ms,时钟振荡频率为6MHz,计算:1个机器周期为:12×1/f=12/6MHz=2s设时间常数为x,则(213-x)×2s=1ms=1000sx=213-500=7692=1E0CH=0001,1110,0000,1100B形成13位定时常数:x=1111000001100B=F00CH根据13位定时器/计数器特性,实现如下:MOVTL0,#0CH;低8位送TL0MOVTH0,#0F0H;高8位送TH03.设T1作定时器,以方式1工作,定时时间为10ms;T0作计数器,以方式2工作,外界发生一次事件即溢出。时钟为6MHz。1个机器周期为:12×1/f=12/6MHz=2s设时间常数为x,则(216-x)×2s=10ms=10000sx=EC78H初始化程序MOVTMOD,#00010110B;T1定时方式1,T0计数方式2MOVTL0,#0FFH;T0时间常数送TL0MOVTH0,#0FFH;T0时间常数送TH0MOVTL1,#78H;T1时间常数送TL1MOVTH1,#0ECH;T1时间常数送TH1SETBTR0;置TR0为1允许T0启动计数SETBTR1;置TR1为1允许T1启动计数……§3-3串行接口•串行口发送和接收数据缓冲器是通过特殊功能寄存器SBUF来访问,口地址为99H。•控制串行口的寄存器有两个:PCON、SCON。一、串行口控制寄存器SCON及波特率选择位1.PCON-波特率选择位(87H)SMODD7D6D5D4D3D2D1D0PCON波特率选择位无定义位字节地址87HSMOD=1,串口方式1,2或3,波特率提高一倍。可用MOVPCON,#80H;或MOV87H,#80H;使SMOD置12.串行口控制寄存器SCON(98H)位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRI位D7D6D5D4D3D2D1D0SCON字节地址98H串行口操作方式选择位00方式001方式110方式211方式3允许方式2、3的多机通信使能位允许串行接收位1允许接收;0禁止接收方式2、3中要发送的第9位数据,可编程方式2、3中接收到的第9位数据。方式1中,若SM2=0,RB8是接收到的停止位。方式0,不用。发送中断标志接收中断标志二、串行接口工作方式•串口工作方式由SM0,SM1决定,见下表:表串行口方式选择SM0SM100011011方式0123功能说明移位寄存器方式8位UART9位UART9位UART波特率fosc/12可变(T1溢出率/n)fosc/64或fosc/32可变(T1溢出率/n)方式1、3的波特率:波特率=(T1溢出率)/n式中:当SMOD=0,n=32当SMOD=1,n=161.方式0-移位寄存器方式•该方式通过RxD端(P3.0)串行发送或接收数据。•用TxD端(P3.1)输出移位脉冲。•故亦称此方式为同步方式。•数据的传送以8位为一帧。•无论是发送或接收,都是最低有效位LSB居先。•传送的波特率固定为振荡频率的12分之一。•方式0的两种形式:方式0输出(发送)方式0输入(接收)(1)方式0输出(发送)•串行数据通过RxD(P3.0)输出,而在TxD(P3.1)输出移位时钟脉冲。•当一个数据写入串口数据发送缓冲器时,就开始发送。•发送控制器送出移位信号。•直到最高位(D7)数字移出后,停止发送数据和移位时钟脉冲。•完成一帧数据的发送过程,并置TI为1,申请中断。•若CPU响应中断,则从0023H单元开始执行串口中断服务程序。RxD8051TxDD1D274LS164CLKD7D6D5D4D3D2D1D0(2)方式0输入(接收)•此时RxD端为数据输入端,TxD端为移位时钟信号输出。•REN=0,禁止接收。REN=1,允许接收。•当满足方式0,且REN=1,且RI=0的条件时,就会启动一次接收过程。•在接收过程开始后的第10个机器周期,SCON中的RI位被置位,从而发出中断申请。•至此,完成了一帧数据的接收过程。•若CPU响应中断,就去执行由0023H作为入口地址的中断服务程序。RxD80
本文标题:大连海事大学通信课件.
链接地址:https://www.777doc.com/doc-2514704 .html