单片机应用技术项目教程项目三任务课件2_第1页
单片机应用技术项目教程项目三任务课件2_第2页
单片机应用技术项目教程项目三任务课件2_第3页
单片机应用技术项目教程项目三任务课件2_第4页
单片机应用技术项目教程项目三任务课件2_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、项目三 时钟系统设计任务2 秒表设计任务内容 单片机制作一个简易秒表,外接2位数码管显示,可用两个按键分别控制秒表的启停。学习目标了解51单片机中断系统的结构、工作原理学会用中断的方法处理定时/计数溢出的情况巩固数码管和按键的使用方法。 知 识 点知识点一 中断的相关概念知识点二 中断源与中断函数知识点三 中断标志与控制知识点四 中断系统结构知识点五 中断请求的响应、撤除及返回1中断 中断是指计算机在执行某一程序(一般称为主程序)的过程中,当计算机系统有外部设备或内部部件要求CPU为其服务时,必须中断原程序的执行,转去执行相应的处理程序(即执行中断服务程序),待处理结束之后,再回来继续执行被中

2、断的原程序过程。 CPU通过中断功能可以分时操作启动多个外部设备同时工作、统一管理,并能迅速响应外部设备的中断请求,采集实时数据或故障信息,对系统进行相应处理,从而使CPU的工作效率得到很大的提高。知识点一 中断的相关概念2中断源 中断源是指在单片机系统中向CPU发出中断请求的来源,中断源可以人为设定,也可以是为响应突发性随机事件而设置。 单片机系统的中断源一般有外部设备中断源、控制对象中断源、定时器/计数器中断源、故障中断源等。知识点一 中断的相关概念3中断优先级 一个单片机系统可能有多个中断源,且中断申请是随机的,有时可能会有多个中断源同时提出中断申请,而单片机CPU在某一时刻只能响应一个

3、中断源的中断请求,当多个中断源同时向CPU发出中断请求时,则必须按照“优先级别”进行排队,CPU首先选定其中中断级别高的中断源为其服务,然后按排队顺序逐一服务,完毕后返回断点地址,继续执行主程序。这就是“中断优先级”的概念。知识点一 中断的相关概念4中断嵌套 优先级别同等或较低的中断请求不能中断正在执行的优先级别高的中断服务程序,而优先级别高的中断请求可以中断CPU正在处理的优先级别低的中断服务程序,转而执行高级别的中断服务程序,这种情况称为中断嵌套;待执行完后,先返回被中断的低级别的中断服务程序继续执行完,然后再返回到主程序。知识点一 中断的相关概念 51单片机具有五个中断源,分为内部中断源

4、和外部中断源:2个外部中断,2个定时器溢出中断及1个串行中断。知识点二 中断源与中断函数1外部中断 外部中断源有两个:外部中断0/1(INT0/INT1),通常指由外部设备发出中断请求信号,从 、 引脚输入单片机。 外部中断请求有两种信号方式:电平方式和边沿触发方式。电平方式的中断请求是低电平有效,只要在外部中断输入引脚上出现有效低电平时,就激活外部中断标志。边沿触发方式的中断请求则是脉冲的负跳变有效。在这种方式下,两个相邻的机器周期内,外部中断输入引脚电平发生变化,即在第一个机器周期内为高电平,第二个机器周期内变为低电平,就激活外部中断标志。由此可见,在边沿触发方式下,中断请求信号的高电平和

5、低电平状态都应至少维持1个机器周期,以使CPU采样到电平状态的变化。知识点二 中断源与中断函数2定时器中断 51单片机内部定时器/计数器T0和T1,在计数发生溢出时,单片机内硬件自动设置一个溢出标志位,申请中断。3串行中断 串行口中断是为串行通信的需要设定的。当串行口每发送或接收完一个8位二进制数后自动向中断系统提出中断。知识点二 中断源与中断函数4中断向量地址 中断源发出中断请求,CPU响应中断后便转向中断服务程序。中断源引起的中断服务程序的入口地址(中断向量地址)是固定的,不能更改。中断服务程序入口地址如表所示。知识点二 中断源与中断函数5中断函数 在C51语言中,对上述的五个中断源进行了

6、编号,这样编写中断函数时就无需记忆具体的入口地址,只需在中断函数定义中使用中断编号,编译器就能自动根据中断源转向对应的中断函数执行处理。 中断函数的定义格式如下: void 函数名(void) interrupt 中断编号 using 工作寄存器组编号 可执行语句; 例如:void Timer( ) interrupt 1 using 2 知识点二 中断源与中断函数 AT89C51中断标志位集中安排在定时器控制寄存器TCON和串行口控制寄存器SCON中。1控制寄存器TCON 控制寄存器TCON中集中安排了两个定时器中断和两个外部中断的中断标志位,以及相关的几个控制位。知识点三 中断标志与控制(

7、1)TF1(TCON.7):定时器T1溢出中断标志位。当定时器T1产生溢出时,由硬件自动置位,申请中断。待中断响应进入中断服务程序后由硬件自动清除。(2)TR1(TCON.6):定时器T1的启停控制位。TR1状态靠软件置位或清除。置位时,定时器T1启动开始计数工作,清除时T1停止工作。(3)TF0(TCON.5):T0溢出中断标志位。作用与TF1类同。(4)TR0(TCON.4):T0的启停控制位,其操作与TR1类同。知识点三 中断标志与控制(5)IE1(TCON.3):外部中断1边沿触发中断请求标志位。当CPU检测到INT1(P3.3脚)上有外部中断请求信号时,IE1由硬件自动置位,请求中断

8、;当CPU响应中断进入中断服务程序后,IE1被硬件自动清除。(6)IT1(TCON.2):外部中断1触发类型选择位。IT1状态可由软件置位或清除,当IT1=1时,设定的是后边沿触发(即由高变低的下降沿)请求中断方式;当IT1=0时,设定的是低电平触发请求中断方式。(7)IE0(TCON.1):外部中断0边沿触发中断请求标志位,其功能与IE1类同。(8)IT0(TCON.0):外部中断0触发类型选择位,其功能与IT1类同。知识点三 中断标志与控制2串行口控制寄存器SCON 串行口控制寄存器SCON中只有TI和RI两位用来表示串行口中断标志位,其余各位用于串行口其他控制。(1)TI:为串行口发送中

9、断标志位。在串行口发送完一组数据时,TI由硬件自动置1),请求中断;当CPU响应中断进入中断服务程序后,TI状态不能被硬件自动清除,而必须在中断程序中由软件来清除。(2)RI:为串行口接收中断标志位。在串行口接收完一组串行数据时,RI由硬件自动置1,请求中断,当CPU响应中断进入中断服务程序后,也必须由软件来清除RI标志。知识点三 中断标志与控制3中断允许控制寄存器IE AT89C51设有专门的开中断和关中断指令,中断的开放和关闭是通过中断允许寄存器IE各位的状态进行两级控制的。所谓两级控制是指所有中断允许的总控制位和各中断源允许的单独控制位,每位状态位靠软件来设定。知识点三 中断标志与控制3

10、中断允许控制寄存器IE(1)EA(IE.7):总允许控制位。EA状态可由软件设定,若EA0,禁止AT89C51所有中断源的中断请求;若EAl,则总控制被开放,但每个中断源是允许还是被禁止CPU响应,还受控于中断源的各自中断允许控制位的状态。(2)ES(IE.4):串行口中断允许控制位。若ES=0,则串行口中断被禁止;若ES=1,则串行口中断被允许。知识点三 中断标志与控制3中断允许控制寄存器IE(3)ET1(IE.3):定时器T1的溢出中断允许控制位。若ET1=0,则禁止定时器T1的溢出中断请求;若ET11,则允许定时器T1的溢出中断请求。(4)EX1(IE.2):外部中断1的中断请求允许控制

11、位。若EX10,则禁止外部中断请求;若EX11,则允许外部中断请求。(5)ET0(IE.1):定时器T0的溢出中断允许控制位。其功能类同于ET1。(6)EX0(IE.0):外部中断0的中断请求允许控制位。其功能类同于EX1。知识点三 中断标志与控制例:要开放外中断0的中断请求,如何设置。答:根据如下IE的内容,将EA设置为1,EX0设置为1即可。 即: IE=0 x81; 或位赋值: EA=1; EX0=1;知识点三 中断标志与控制4.中断优先级寄存器IP AT89C51的中断源优先级是由中断优先级寄存器IP进行控制的。五个中断源总共可分为两个优先级,每一个中断源都可以通过IP寄存器中的相应位

12、设置成高级中断或低级中断。因此,CPU对所有中断请求只能实现两级中断嵌套。知识点三 中断标志与控制4.中断优先级寄存器IP(1)(IP.7,IP.6,IP.5):51单片机保留位,其他型号有具体定义。(2)PS(IP.4):串行口中断优先级设定位。(3)PT1(IP.3):定时器T1中断优先级控制位。(4)PX1(IP.2):外中断1优先级控制位。(5)PT0(IP.1):定时器T0中断优先级控制位。(6)PX0(IP.0):外部中断0优先级控制位。 相应的位=1为高优先级,=0为低优先级。知识点三 中断标志与控制4.中断优先级寄存器IP 如果同时收到两个不同优先级的请求,则较高优先级的请求被

13、首先响应。如果同样优先级的请求同时接收到,则内部对中断源的查询次序决定先接收哪一个请求。如下所示,一般情况下我们不需考虑。知识点三 中断标志与控制知识点四 中断系统结构 AT89C51的中断系统主要由中断标志、中断允许寄存器IE、中断优先级寄存器IP和相应的逻辑电路组成。知识点五 中断请求撤除(1)定时器溢出中断:自动撤除 定时器T0和定时器T1的中断请求,CPU响应后,自动由芯片内部硬件直接清除相应的中断标志位TF0、TF1,无需使用者采取其他任何措施。(2)串行中断:软件撤除 对于串行口中断请求,CPU响应后,没有用硬件直接清除其中断标志TI(SCON.1,发送中断标志)、RI(SCON.

14、0,接收中断标志)的功能,必须靠软件复位清除。因此在响应串行口中断请求后,先对TI和RI判断后,采用代码TI=0;RI=0将其清除。(3)负边沿请求方式外部中断:自动撤除 一般情况下,选用负边沿请求方式。(4)电平请求方式外部中断:需采用硬件强制撤除 除特殊情况外,不建议使用该方式。任务实施1硬件设计任务实施(1)确定定时初始值X 方式1为16位计数结构,最大计数值为65536。则: 方式1下TH0取高8位,TL0取低8位,即TH0=0 x3C,TL0=0 xB0 2软件设计任务实施 (2)T0中断初始化/*描述:50ms定时*/void InitTimer0(void) TMOD = 0 x

15、01;/设定T0工作方式1 TH0 = 0 x3c;/计数初值 TL0 = 0 xb0; EA = 1;/开中断 ET0 = 1;2软件设计任务实施 (3)50ms中断服务程序/*入口:i(50ms计数,记满20为1s)*/void Timer0Interrupt(void) interrupt 1 TH0 = 0 x3c; /重新赋初值 TL0 = 0 xb0; i+; if(i= =20) i=0; second+;second%=100; /记满1s,更新second变量 2软件设计任务实施2软件设计(4)程序首部及主程序#include / define 8051 registers#

16、define uchar unsigned charsbit K_start=P16; /定义按键sbit K_stop=P17;uchar code tab10 =0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; / 共阴极数码管09的码字 任务实施 /*主程序*/uchar second; uchar i;void InitTimer0(void);void main(void) second=0; /显示初始化 P0=tab0;P2=tab0; InitTimer0(); /T0初始化 while(1) if(!K_start) /K_start按

温馨提示

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

评论

0/150

提交评论