第五讲中断概念_第1页
第五讲中断概念_第2页
第五讲中断概念_第3页
第五讲中断概念_第4页
第五讲中断概念_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、2015-10中断是为了使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,在很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,我吗学习单片机必须要掌握的。51单片机内部有5个中断源,也就是有5种情况发生时,会使单片机去处理中断程序。本节以定时器中断为例进行讲解。举一个生活例子:开火烧开水,然后去洗衣服,在洗衣服过程中,突然听到水壶报警,这时,你停止洗衣服,去关火灌水,等灌水完毕后,继续洗衣服。这个过程,实际上就是发生了一次中断。对应单片机,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生),CPU暂时停止当前工

2、作(中断响应),转去处理事件B(中断服务),待CPU将实践B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断,其流程图如图1。图1 中断结构执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回再回到生活中的例子,与单片机中断结合分析。你主要任务是洗衣服,开会报警是一个中断请求,这一时刻相当于断电处,你做出响应去关火、灌水,这一系列动作相当于处理中断程序,灌完水后你继续去洗衣服,相当于处理完中断程序再返回主程序继续执行主程序。注意:水开是随时可能发生的,无论什么时候水开报警,你都要立即去处理它,处理完毕后再继续洗衣服。单片机执行主程序时也

3、一样,一旦有中断发生,单片机立即停止当前程序,赶去处理中断程序,处理完再回到原来程序,这也是中断的实时性要求。引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。在中断的基础上,还有中断嵌套的概念,也就是如果单片机正在处理一个中断程序,此时,又有一个中断现象发生,单片机将会停止定期的中断程序,而转去执行新的中断程序,新中断程序处理完毕后再回到刚才停止的中断程序继续执行,执行完整个中断程序再回到主程序继续执行主程序。涉及中断,

4、还有一个中断优先级中断优先级的概念。单片机在执行程序的过程中,遇到两个中断发生,先处理哪一个呢?这取决于两个中断的优先级高低的设置情况,通过设置中断优先级寄存器,可以告诉单片机,当两个中断同时出现时,先去执行哪一个中断程序,若没有人为操作设置,单片机会按照默认的一套优先级知道处理。51单片机内共有2个16位定时器/计数器,即定时器T0和定时器T1。52单片机内多一个定时器/计数器T2。它既有定时功能,也有计数功能。注意:定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定时功能后,定时器便在晶振的作用下自动开始计时,当定时器的计数器计

5、满后,会产生中断,即通知CPU该如何处理。定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。加1计数器输入的计数脉冲有两个来源,一个是系统的时钟振荡器输出脉冲经12分频后送来;一个是T0和T1的引脚输入的外部脉冲源,每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器清0,且计数器的溢出使TCON寄存器中的TF0或TF1置1,向CPU发出中断请求。如果定时器/计数器工作在定时模式,则表示定时时间已到,如果工作在计数模式,则表示计数值已满。由此,由溢出时计数器的值减去计数初值,才是加1计数器的计数值。TMOD是定时器/计数器的工作方式寄存器。单片机复位

6、时全部清0。 定时器1 定时器0C/T为定时器模式和计数器模选择(1/0)M1M0提供4种工作方式,01时,16位定时器/计数器位序号位序号D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位符号GATEC/TM1M0GATEC/TM1M0TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。TF1-定时器1溢出标志位,当定时器1计满溢出时,由硬件使TF1置1,并申请中断。TR1-定时器1运行控制位,TR1置1时,启动定时器1。位序号位序号D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位符号TF1TR1TF0TR0IE1IT1IE0IT0以定时器0的方

7、式1:16位计数器简介。方式1的计数位数是16位,TL0为其低8位,TH0为其高8位,共同组成16位的加1计数器。TL0满后,向TH0进一位,TH0满后,计数器溢出,向CPU申请中断,接下来CPU对中断进行处理,此时,如果TR0为1,计数就不停止。计数原理同十进制数数!计数器从初值计满,需要一定时间。定时器一旦启动,它在原来数值的基础上开始加1计数,如果在程序初始,未设置TH0和TL0,它们默认都是0,假设时钟频率为12MHz,12个时钟周期为一个机器周期(此时机器周期为1us,即计一个数耗时1一个机器周期1us),计满TH0和TL0需要216-1个数,再来一个脉冲,计时器溢出,随即向CPU申

8、请中断。因此溢出一次耗时65536us,约65.5ms。如果需要定时50ms,则需要给定时器给TH0和TL0一个初值,在这个初值的基础上计50 000个数后,定时器溢出,刚好50ms中断一次,如果需要定时1s,20次循环即可。要计50 000个数,TH0和TL0中应该装入总数是65536-50000=15536,对256求模:15535/256=60装入TH0中,对256求余:15536%256=176装入TL0中,便完成了对定时器初值的设定。结论:当用定时器1时,设机器周期为Tcy,定时器产生一次中断的时间为t,则需要计数的个数N=t/Tcy。装入TH0和TL0的数分别为:TH0=(6553

9、6-N)/256;TL0=(65536-N)%256;要计算机器周期Tcy,需要知道系统时钟频率,也就是单片机的晶振频率。若频率为11.0592MHz,则机器周期=12(1/11059200)1.09us,若t=50ms,那么N=t/Tcy=50000/1.0945872.这是晶振在11.0592MHz下定时50ms的初值计算方法。若晶振为12MHz,一个机器周期为1us,计算更方便,同样可算得N=t/Tcy=50000/1=50000。C51中断函数格式如下:void 函数名() interrupt 中断号 using 工作组 中断服务程序内容其中,中断号是单片机中几个中断源的序号,是编译器识别不同中断的唯一符号。工作组是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,C51编译器会自动分配,可省略。定时器0的中断函数/ void 函数名() interrupt 中断号 using 工作组void Timer0_isr(void) interrupt 1 using 1TH0=(65536-45872)/256;TL0=(

温馨提示

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

评论

0/150

提交评论