项目6 单片机的中断_第1页
项目6 单片机的中断_第2页
项目6 单片机的中断_第3页
项目6 单片机的中断_第4页
项目6 单片机的中断_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

单片机技术应用项目六认识单片机的中断广东机电职业技术学院第一部分说课程第一部分说课程1.单片机的中断1.中断的概念

中断在生活中随处可见。比如,正在看书,突然电闪雷鸣准备下大雨,只好先用书签记录看到的位置,然后跑去收衣服,收好衣服再回来继续看。单片机的中断:CPU在处理程序1的过程中,突然来了一个请求,CPU响应请求后暂时停止运行当前程序,转而去执行程序2,执行程序2后,再转回来继续执行程序1中剩余的部分。

第一部分说课程第一部分说课程1.单片机的中断2.

单片机中断的优点1.提高了CPU的效率CPU与外部设备联系时,CPU接到中断请求后,暂停当前的工作转去为外部设备服务,处理完毕后又返回到原来的工作。因此,CPU不必浪费时间去查询外部设备状态,使得效率大大提高。2.可实现实时处理在实时控制中,利用中断技术,外部设备在任何时刻都可以发出中断请求,CPU接到请求后就能及时处理,以满足实时控制要求。3.可及时处理故障

单片机在运行过程中出现故障,可以通过中断系统由故障源向CPU发送中断请求,CPU及时转到相应的故障处理程序进行处理,提高了计算机的可靠性。第一部分说课程第一部分说课程1.单片机的中断3.单片机的中断系统

有5个中断源:分别是两个外部中断、两个定时器中断(T0、T1)和一个串行口中断。外部中断0和外部中断1分别由单片机的P3.2和P3.3端口引入。定时/计数器中断源位于单片机内部,当计数器计满溢出时就会向CPU发出中断请求。单片机内部有1个串行通信接口,当串行口接收或发送完一帧数据后会向CPU发出中断请求。第一部分说课程第一部分说课程2.单片机中断的寄存器

1.定时/计数器控制寄存器TCONTF1、TF0、TR1、TR0是定时/计数器控制位。后4位的IE1、IT1、IE0、IT0是中断位。IE1、IE0:外部中断1、外部中断0的请求标志位。IT1、IT0:外部中断1、外部中断0的触发方式选择位。当IT=0,为低电平触发方式;当IT=1,为下降沿触发方式。第一部分说课程第一部分说课程2.单片机中断的寄存器

2.中断允许寄存器IE

单片机CPU对中断源开放或屏蔽,由中断允许寄存器IE控制。EA:即EnableAll的缩写,全局总中断。当EA=0时,所有中断均被禁止;当EA=1时,全局总中断允许打开。EX0:外部中断0的中断允许位。EX0=1,允许外部中断0中断,否则禁止外部中断0中断。ET0:定时/计数器0的中断允许位。ET0=1,允许定时/计数器0中断,否则禁止定时/计数器0中断。EX1:外部中断1的中断允许位。EX1=1,允许外部中断1中断,否则禁止外部中断1中断。ET1:定时/计数器1的中断允许位。ET1=1,允许定时/计数器1中断,否则禁止定时/计数器1中断。ES:串行通信的中断允许位。ES=1,允许串行通信中断,否则禁止串行通信中断。第一部分说课程第一部分说课程2.单片机中断的寄存器

3.中断优先级寄存器IP

单片机CPU在任一时刻只能处理一个中断,若同时来两个或两个以上的中断请求,按中断优先顺序进行分级。低5位是单片机5个中断源的优先级:PS:串行口中断优先级控制位。=1为高优先级,=0为低优先级。PT1:定时器T1中断优先级控制位。PX1:外部中断1中断优先级控制位。PT0:定时器T0中断优先级控制位。PX0:外部中断0中断优先级控制位。

自然优先级顺序:第一部分说课程第一部分说课程3.案例1-单片机的外部中断1.任务目标

使用按键,利用单片机的外部中断实现流水灯过程中的全部发光二极管的闪烁控制。具体来说就是正常情况下程序跑的是流水灯,而当按键按下后,全部LED灯闪烁一次,然后再回到原来的流水灯显示。2.电路连接硬件电路,包括单片机最小系统及4个LED发光二极管与单片机IO口的连接,按键与P32连接。第一部分说课程第一部分说课程3.案例1-单片机的外部中断3.C语言程序设计#include<reg52.h>typedefunsignedcharuchar;voidDelay_1s()//用定时器T0的工作方式1实现1S延时的程序{}voidint_0()interrupt0//外部中断0的中断发生时执行的函数{ P1=0x00;//同时点亮4颗LED Delay_1s();//调用1S延时函数 P1=0xff;//同时熄灭4颗LED Delay_1s();}voidmain(){uchari,w;//i为循环变量,w用于保存led显示编码EA=1; //打开中断总允许位,允许中断EX0=1;//打开外部中断0允许位,允许外部中断IT0=1;//设置外部中断的触发方式为下降沿触发TMOD=0x01;//设置定时器T0为工作方式1while(1){w=0x01;//设置led显示控制编码为01H for(i=0;i<4;i++) { P1=~w;//w取反后送P1口点亮相应的LED灯 Delay_1s();//调用1S延时函数w<<=1;//点亮灯的位置移动}}}第一部分说课程第一部分说课程3.案例1-单片机的外部中断4.中断函数的格式

在单片机C语言中,中断函数是一种特别的函数,有固定的格式。中断服务程序(函数)的格式如下:void中断处理程序函数名()interrupt中断类型号{ 中断处理程序内容;}5.中断源的中断序号及中断服务程序入口地址6.实验现象

4个LED灯按LED1-LED2-LED3-LED4-LED1……的顺序轮流点亮。按下K1键时,产生中断,4个LED灯会同时亮灭。完后,继续LED轮流点亮。第一部分说课程第一部分说课程4.案例2-单片机定时器中断1.任务目标

使用单片机的定时器中断,实现1S的精确定时。2.电路连接硬件电路,包括单片机最小系统及LED发光二极管与单片机IO口的连接。第一部分说课程第一部分说课程4.案例2-单片机定时器中断3.C语言程序设计#include<reg52.h>sbitled=P1^0;unsignedintcount=0;//每次计数50us,1S需要计20000次voidTimer_Init(void)//定时器初始化{ EA=1;//开总中断 ET0=1;//开定时器0中断TMOD=0X02;//定时器0工作于方式2 TH0=256-50;//计数50次,晶振频率为12MHZ,故一共50us TL0=256-50; TR0=1;//打开定时器0,定时器0开始计数,计数满一次count加1}voidTimer0_Int(void)interrupt1{ count++;//定时器0的中断函数,用于实现count的变化}intmain(void){ Timer_Init();//初始化定时器 led=1;//初始化led为暗 while(1) { if(count<20000) led=0;//led亮 elseif(count<40000) led=1; el

温馨提示

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

评论

0/150

提交评论