《器讲:中断与定时》PPT课件.ppt_第1页
《器讲:中断与定时》PPT课件.ppt_第2页
《器讲:中断与定时》PPT课件.ppt_第3页
《器讲:中断与定时》PPT课件.ppt_第4页
《器讲:中断与定时》PPT课件.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,单片机的中断系统,单片机中断系统,中断的定义所谓中断,是指CPU正在处理某些事务的时候,外部又发生了某一事件,请求CPU及时处理。于是,CPU暂时中断当前的工作,转而处理所发生的事件。处理完毕,再回到原来被中断的地方,继续原来的工作。这样的过程,称为中断。,中断示意图,中断源中断申请开放中断保护现场中断服务恢复现场中断返回,中断涉及的几个环节,手机,手机铃声响了提醒你去接,你准备去接电话,一开始你正在看我的视频教程,在电脑上暂停我的这个视频教程,你开始接电话,挂断电话回来,继续看我的视频教程,AT89S52单片机的中断源及TCON,S52系列有6个中断源(比S51多一个T2)2个外部中断请求:INT0,INT13个片内定时器/计数器T0和T1中断请求:TF0,TF1,(TF2)1个串行口中断请求:TI/RI,定时器控制寄存器TCON(88H),TF1TR1TF0TR0IE1IT1IE0IT0,TCON,TF0/TF1:定时器0/定时器1溢出中断申请标志位:=0:定时器未溢出;=1:定时器溢出申请中断,进中断后自动清零。,TR0/TR1:定时器运行启停控制位:=0:定时器停止运行;=1:定时器启动运行。,TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断),定时器控制寄存器TCON(88H),TF1TR1TF0TR0IE1IT1IE0IT0,TCON,IE0/IE1:外部中断申请标志位:=0:没有外部中断申请;=1:有外部中断申请。,IT0/IT1:外部中断请求的触发方式选择位:=0:在INT0/INT1端申请中断的信号低电平触发;=1:在INT0/INT1端申请中断的信号负跳变触发.,TCON:Timer控制寄存器,低4位管理外部中断,在CPU已经开放了外部中断允许的前提下:在INT0/INT1引脚输入一个负脉冲或低电平,TCON寄存器中的IE0/IE1标志位自动变“1”,检测到IE0/IE1变“1”后,将产生指令:执行中断服务程序,并将IE0/IE1标志位自动清“0”,以备下次申请。,外部中断(INT0,INT1)申请过程,TF1TR1TF0TR0IE1IT1IE0IT0,TCON,EAET2ESET1EX1ET0EX0,IE,中断允许寄存器IE(0A8H),EX0/EX1/ET1/ET0/ES位:分别是INT0/1,Timer0/1,串行口的中断允许控制位:=0时禁止中断;=1时允许中断。ET2:T2中断允许控制位(仅52系列有)=0时禁止中断;=1时允许中断。EA:总的中断允许控制位(总开关):=0时禁止全部中断;=1时允许中断。,中断系统硬件结构,注:各中断允许控制位=0,开关断开;=1,开关接通,IE0,EX0,TF0,IE1,TF1,TI,ES,ET1,EX1,ET0,外部中断请求0,外部中断请求1,内部定时器0,内部定时器1,内部串行口,T,R,RI,IE寄存器,EA位,IP寄存器,各单路开关,总开关,中断源标志位查询机构,高中断级中断请求,低中断级中断请求,中断入口,中断源标志位,INT0,INT1,中断入口,中断源标志位,PT2PSPT1PX1PT0PX0,IP,PX0/PX1:INT0/1优先级控制位:=0时属低优先级;=1时属高优先级。PT0/PT1/PT2:T0/1/2中断优先级控制位:=0时属低优先级;=1时属高优先级。PS1:串行口中断优先级控制位:=0时属低优先级;=1时属高优先级。,中断优先级控制寄存器IP(0B8H),【例】PX1=1;外中断INT1被设置成高优先级PT0=0;定时器T0被设置成低优先级总线方式IP=0 x04;/IP=00000100将PX1设为1PT0设为0;,对同时发生多个中断申请时:不同优先级的中断同时申请(很难遇到)先高后低相同优先级的中断同时申请(很难遇到)按序执行正处理低优先级中断又接到高级别中断高打断低正处理高优先级中断又接到低级别中断高不理低,中断优先级处理原则,单片机的中断矢量与优先级,中断矢量:单片机的6个中断源分别对应有各自的中断服务程序入口地址中断矢量,最高优先级最低优先级,5interruptm修饰符,interruptmC51中断函数必须通过它进行修饰。在C51程序设计中,当函数定义时用了interruptm修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。,在该修饰符中,m的取值为031,对应的中断情况如下:0外部中断01定时/计数器T02外部中断13定时/计数器T14串行口中断5定时/计数器T2其它值预留。,C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。,【例】编写一个用于统计外中断0的中断次数的中断服务程序intx;voidint0()interrupt0using1x+;,usingn修饰符修饰符usingn用于指定本函数内部使用的工作寄存器组,其中n的取值为03,表示寄存器组号。可以省略省略后系统自动选择,中断函数注意如下:(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。(2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。,单片机的定时/计数器,定时器计数器的概念,一、计数的概念选票:画“正”。这就是计数,生活中计数的例子处处可见。比如一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。51单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。二、定时计数器是如何作为定时器来用的呢?比如一个闹钟,将它定时在1个小时后响闹,我们也能说成是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间十分相关。那么它们的关系是什么呢?也就是秒针每一次走动的时间要正好是1秒。只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是同一个东西,只不过计数器是记录的外部的触发脉冲,而定时器则是由单片机供给一个非常稳定的计数源。供给定时器的是计数源是机器周期,也就是由单片机的晶体震荡器经过12分频后获得的一个脉冲源(机器周期)。晶振的频率是很准确的,所以这个计数脉冲的时间间隔也很准。一个12M的晶振,它供给给计数器的脉冲时间间隔是1微秒。计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。,这是逻辑图,可以看到T1是一个单刀双掷开关,说明定一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用;接通T1引脚时作为外部计数用。(T0的引脚是P3.4,T1的引脚是P3.5)。,比如滴水的例子,当水持续落下,盆中的水逐渐变满,最终会有一滴水使得盆中的水全满了。这个时候如果再有一滴水落下,水会漫出来,用术语来讲就是“溢出”,而每一滴水落下,用术语来说就是发出一个计数脉冲。水溢出是流到地上,而计数器溢出后就会引发一个定时中断事件,就象定时的时间一到,闹钟就会响一样。现在另一个问题是:要有多少个计数脉冲才会产生事件。刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,如制药厂包装线上,一瓶药片为100粒,500瓶为一箱那么怎么样来满足这个要求呢?举例如果是一个空的水盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴吗?对了,这时我们就采用预置数的办法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10毫秒,怎么办?10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就可以了。,溢出的概念和设置任意定时计数的方法,3个16位定时器/计数器(51系列有2个16位Timer少一个T2)定时器:对片内机器时钟(周期方波)进行计数计数器:对Tx引脚输入的负脉冲进行计数,与Timer工作有关的特殊功能寄存器:TCON和TMOD,AT89S52单片机的定时器/计数器,单片机定时/计数器内部结构,单片机定时/计数器内部结构图,定时器的2个特殊功能寄存器(TCON),TF1TR1TF0TR0IE1IT1IE0IT0,定时器控制寄存器TCON(88H),TF0/TF1:定时器0/1计数溢出标志位。=1计数溢出;=0计数未满TF0/TF1标志位可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。,TR0/TR1:定时器0/1运行控制位。=1启动计数;=0停止计数,TR0/TR1:定时器0/1运行控制位:TR0/TR1=0时,Timer0/1停止计数TR0/TR1=1时,Timer0/1启动计数,定时器T0/T1中断申请过程,在已经开放T0/T1中断允许且已被启动的前提下:T0/T1加满溢出时TF0/TF1标志位自动置“1”检测到TCON中TF0/TF1变“1”后,将产生指令:执行中断服务程序,TF0/TF1标志位会自动清“0”,以备下次中断申请。,定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,TF1TR1TF0TR0IE1IT1IE0IT0,TCON(88H),GATEC/TM1M0GATEC/TM1M0,定时器方式寄存器TMOD(89H),T1,T0,M1,M0:工作方式定义位(定义4种方式):,C/T:计数器/定时器选择位=1外部事件计数器。对T0/T1引脚的负脉冲计数;=0片内时钟定时器。对机器周期脉冲计数定时,00:13位定时器几乎不用01:16位定时器经常用到10:可自动重装的8位定时器经常用到11:T0分为2个8位Timer;T1此时不工作几乎不用,GATEC/TM1M0GATEC/TM1M0,T1,T0,GATE门控位:Timer可由软件与硬件两者控制GATE=0普通用法Timer的启/停由软件对TRx位写“1”/“0”控制,定时器方式寄存器TMOD,(89H),GATE=1门控用法Timer的启/停由软件对TR0/TR1位写“1”/“0”和在INT0/INT1引脚上出现的信号的高/低共同控制,GATE=0时,定时/计数是否工作,只取决于TR0是否为1。GATE=1,只有TR0为1,且INT0管脚也是高电平,定时/计数才工作。从电路上看到GATE是一个非门,它与INTx组成一个或门,这个或门与TR0又组成一个与门。当GATE=0时,则GATE=1(非门),此时无论INT0为高或低,它们相或之后必然为1,此时只要TR0=1,则工作,TR0=0则不工作,不受INT0的影响。当GATE=1时,GATE=0,则INT0=1时,它们相或为1,此时定时器是否工作受TR0影响;若INT0=0,则无论TR0为什么,定时器都不能工作,即当GATE=0时,定时器受INT0和TR0共同的作用。所以,GATE位的状态决定定时器运行控制取决于TR0的一个条件还是TR0和INT0引脚这两个条件。当GATE=1时,由于GATE信号封锁了与门,使引脚INT0信号无效。而这时候如果TR0=1,则接通模拟开关,使计数器进行加法计数,即定时/计数工作。而TR0=0,则断开模拟开关,停止计数,定时/计数不能工作。当GATE=0时,与门的输出端由TR0和INT0电平的状态确定,此时如果TR0=1,INT0=1与门输出为1,允许定时/计数器计数,在这种情况下,运行控制由TR0和INT0两个条件共同控制,TR0是确定定时/计数器的运行控制位,由软件置位或清“0”。,振荡器,12,TLxTHx(8位)(8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1,计数/定时由C/T位决定工作方式0(13位)永远不用工作方式3(T0拆为双8位)几乎无用工作方式1(16位)经常用到工作方式2(8位自动重装)经常用到,从初值按机器周期或外部脉冲递加,溢出位TFx申请中断;中断允许由ETx位和EA位控制,,定时器/计数器的定时/计数范围工作方式0:13位定时/计数方式,因此,最多能计到2的13次方,也就是8192次。工作方式1:16位定时/计数方式,因此,最多能计到2的16次方,也就是65536次。工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多能计到2的8次方,也说是256次。预置值计算:用最大计数量减去需要的计数次数即可。,串行口与串行通信,串行通信的基本特征是数据逐位顺序进行传送串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。常见的有:通用异步收发器(UART)本课程介绍的串口通用串行总线(USB)I2C总线CAN总线SPI总线RS-232C,RS-485,RS422A标准等等,全双工串行接口(UART),数据通信的几个术语:并行:数据各位同时进行传送串行:数据逐位顺序进行传送,全双工:(串行通信)收/发可同时进行半双工:(串行通信)收/发不可同时进行,异步串行通信:以字符为单位进行传送同步串行通信:以数据块为单位进行传送波特率(bps.):单位时间传送的位数,51单片机的串行接口,SBUF(发),SBUF(收),发送控制器TI,接收控制器RI,移位寄存器,波特率发生器T1,1,A累加器,(门)移位寄存器,RxD,TxD,去申请中断,引脚,引脚,CPU内部,SM0SM1SM2RENTB8RB8TIRI,SCON,SM0,SM1:串行口4种工作方式的选择位。00方式0:8位移位寄存器I/O,波特率固定为fosc/1201方式1:8位UART(1+8+1位),波特率可变,按公式计算10方式2:9位UART(1+8+1+1位),波特率固定=foscx1/32或1/6411方式3:9位UART(1+8+1+1位),波特率可变,按公式计算,SM2:串行口多机通信控制位(作为方式2、方式3的附加控制位),串行口控制寄存器SCON(98H),RI,TI:串行口收/发数据申请中断标志位1申请中断;0不申请中断,TB8:方式2、3中,是要发送的第9位数据。多机通信中,TB8=0表示发送的是数据;TB8=1表示发送的是地址。(奇偶校验),RB8:在方式2、3中,是收到的第9位数据。在多机通信中,用作区别地址帧/数据帧的标志。(奇偶校验),SM0SM1SM2RENTB8RB8TIR1,REN:串行口接收允许控制位=1表示允许接收;=0禁止接收。,SCON,SMODGF1GF0PD1DL,电源控制寄存器PCON(97H)特殊功能寄存器PCON不能按位寻址,SMOD:在串行口工作方式1、2、3中,是波特率加倍位=1时,波特率加倍=0时,波特率不加倍。(在PCON中只有这一个位与串口有关),PCON,串行口工作方式0,工作方式0:8位移位寄存器I/O方式,发送:SBUF中的串行数据由RxD逐位移出;TxD输出移位时钟,频率=fosc1/12;每送出8位数据TI就自动置1;需要用软件清零TI。,接收:串行数据由RxD逐位移入SBUF中;TxD输出移位时钟,频率=fosc1/12;每接收8位数据RI就自动置1;需要用软件清零RI。,经常配合“串入并出”“并入串出”移位寄存器一起使用扩展接口74HC16474HC165等我们开发板不涉及这方面所以不做讲解,工作方式0:8位移位寄存器I/O方式,常用于串行通讯。除发/收8位数据外,还在D0位前有一个起始位“0”;在D7位后有一个停止位“1”。,方式1工作时:发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。,工作方式1:8位UART(1+8+1位)波特率可变,波特率可变用定时器T1作波特率发生器:公式:波特率=(2SMOD/32)T1的溢出率,波特率=(2SMOD/32)T1的溢出率,溢出率:T1溢出的频繁程度即:T1溢出一次所需时间的倒数。,初值X=2n-,2SMODfosc32波特率12,波特率=,2SMODfosc3212(2n-X),其中:X是定时器初值,初值X=2n-,2SMODfosc32波特率12,用T1工作于方式2来产生波特率1200,已知晶振频率=6MHz。要求出T1的初值:,初值X=28-,20610632120012,=256-=256-13.02,6106460800,243=0F3H结果后面要用到,常用波特率和T1初值查表,RxD引脚为接收端,TxD引脚为发送端,由波特率发生器T1控制发送速度,不同于方式0:收/发都需要由TxD送出移位时钟。,T1作波特率发生器时初始化包括:选定时器工作方式2(TMOD选8位自动重装);将计算出的初值X赋给TH1,TL1;启动T1(TR1=1);注意!对T1不要开中断!,工作方式1的接收/发送,串行口的初始化包括:对SCON选工作方式对PCON设波特率加倍位“SMOD”(缺省值=0)如果是接收数据,仍要先置“1”REN位,SM0SM1SM2RENTB8RB8TIR1,SCON,SM0,SM1:串行口工作方式选择位。01:方式1,8位UART(1+8+1位),REN:串行口接收允许位。REN=1允许接收,串行口控制寄存器SCON,01010000,TB8,RB8,TI,RI等位由运行中间的情况决定,可先写成“0”,SM2:串行口多机通信控制位,作为方式2、3的附加控制位,此处不用,可写成“0”,由于波特率固定,常用于单片机间通讯。数据由8+1位组成,通常附加的一位(TB8/RB8)用于“奇偶校验”。,工作方式2:9位UART(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论