版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 中断与定时,数据的输入/输出传送方式,一、查询方式: 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待。,二、中断方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送。,三、直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转。,中断概念,CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。,中断概念,引起CPU中断的根源,称为中断源。中断源向
2、CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。,中断系统,中断概念 :,CPU执行流程,CPU执行流程,中断服务程序嵌套,二级中断嵌套,低级中断服务程序,主程序,高级中断服务程序,中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点: 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率 实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强; 可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系
3、统可靠性提高。,中断的作用,51单片机的中断源,51单片机允许5个中断源: 2个外部中断请求:INT0,INT1 2个片内定时器/计数器T0和T1中断请求: TF0,TF1,(TF252子系列有T2) 1个串行口中断请求:TI/RI,中断涉及的几个环节,中断源 : 2个外部中断请求:INT0,INT1 2个片内定时器/计数器T0和T1中断请求: TF0,TF1,(TF252子系列有T2) 1个串行口中断请求:TI/RI 中断申请 开放中断 保护现场 中断服务 恢复现场 中断返回,工作方式控制寄存器(TMOD),定时器控制寄存器(TCON),中断允许控制寄存器(IE),中断优先级控制寄存器(IP
4、),5 个中断源对应的中断服务程序入口地址,中断号,中断系统硬件结构,注:各中断允许控制位=0,开关断开; =1,开关接通,IE0,EX0,TF0,IE1,TF1,TI,ES,ET1,EX1,ET0,外部中断 请求0,外部中断 请求1,内部 定时器0,内部 定时器1,内部 串行口,T,R,RI,IE寄存器,EA位,IP寄存器,各单路开关,总开关,中断源标志位查询机构,高中断级中断请求,低中断级中断请求,中断入口,中断源标志位,INT0,INT1,中断入口,中断源标志位,单片机的定时/计数器,定时/计数器的区别,定时和计数功能最终都是通过计数实现的,若计数的事件源是周期固定的脉冲,则可以实现定时
5、功能,否则只能实现计数功能。因此可以将定时和计数功能由一个部件实现。 实现定时和计数的方法一般有软件、专用硬件电路和可编程定时器/计数器三种方法。 采用软件只能定时,且占用CPU时间,降低了CPU的使用效率。 专用硬件电路可实现精确的定时和计数,但参数调节不便。 可编程定时器计数器,不占用CPU时间,能与CPU并行工作,实现精确的定时和计数,又可以通过编程设置其工作方式和其它参数,因此使用方便。 与Timer工作有关的特殊功能寄存器: TCON 和 TMOD,工作方式控制寄存器(TMOD),定时器方式寄存器TMOD,M1,M0:工作方式定义位 ( 定义4 种方式 ): 0 0:13位 Time
6、r用它无益,不要记它! 0 1:16位 Timer经常用到 1 0:可自动重装的 8位 Timer经常用到 1 1:T0 分为2个8位 Timer;T1 此时不工作 因为没有带来甚麽好处,几乎无用 C/T :计数器/定时器选择位 = 1 外部事件计数器。对Tx引脚的负脉冲计数; = 0 片内时钟定时器。对机器周期脉冲计数定时,定时器方式寄存器TMOD,GATE C / T M1 M0 GATE C / T M1 M0,T1,T0,GATE门控位: Timer可由软件与硬件两者控制 GATE = 0 普通用法 Timer的启/停由软件对TR位写“1”/“0”控制,定时器方式寄存器TMOD(续),
7、(89H), GATE = 1 门控用法 Timer的启/停由软件对TR位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制,定时器控制寄存器(TCON),定时器结构与工作方式,工作方式1:16位的定时/计数器,振荡器,12,TLx THx (8位) (8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1, /定时器1工作方式1 TH1=0 xFF; /设置定时初值 TL1=0 x83; EA=1; /开中断 ET1=1; /定时器1允许中断 TR1=1; /启动T1,定时开始 while(1); /等待中断 / For(;) ,中断程序,void Timer1_
8、ISR( ) interrupt 2 using 0 TH1=0 xff; /重装计数初值 TL1=0 x83; P1_0=!P1_0; /输出取反 ,定时器的应用举例,例2 若fOSC=12MHz,T1工作于方式1,产生50ms的定时中断,TF1为高级中断源。分别用中断方式与查询方式编写,实现P1.0产生周期为1s的方波。 解:让P1.0每500ms取反一次即可实现。定时器的单次定时时间不可能达到500ms,可让定时器多次定时产生500ms的定时时间,如让T1工作在方式1,单次定时时间为50ms,那么T1中断10次就是500ms的时间。 确定定时常数 假设使用fOSC的12分频作为计数源,则
9、T计数12/ fOSC 12/(12106)1s 由公式TC=MT/T计数,可知TC=216-5010315536=3CB0H TH1=0 x3c,TL0=0 xb0。,程序清单如下(主程序):,#include sbit P1_0 = P10; int count=10;/10次T1中断为500ms void main( void ) TMOD=0 x10; /T1方式1 P1_0=0; TH1=0 x3c; /初值 TL1=0 xb0; IE =0 x88; /允许T1中断 IP =0 x08; /TF1中断为高级中断 TCON=0 x40; /启动T1 0 x40 while(1); /
10、死循环,等待中断,产生方波 ,程序清单如下(中断服务程序):,void Timer1_ISR (void) interrupt 3 using 2 TH1=0 x3c; /重装初值 TL1=0 xb0; count-; /中断计数 if (count=0) /500ms到,重赋计数初值,P1.0取反 count=10; P1_0=!P1_0; ,程序清单如下(查询式程序),#include sbit P1_0= P10; void main( ) int count=10;/10次T1中断为500ms TMOD=0 x10; /T1方式1 P1_0=0; TR1=1;/启动T1 For(; ;
11、) /死循环,产生方波 TH1=0 x3c; /T1初值 TL1=0 xb0; Do while(!TF1); /查询等待TF1置位, TF1=0; If (count!=0) count-; else count=10;P1_0=!P1_0; ,定时器的应用举例,例3:设单片机晶振频率为12MHz,使用定时器0以工作方式2产生周期为200us的等宽连续正方波脉冲,并在P1.0端输出,以中断方式完成。 解:计算计数初值,定时方式2为8位计数方式 fOSC12MHz,机器周期T=12/ fOSC=1s t = (28-x)1s = 100us TH0=9cH TL0=9cH TMOD寄存器初始化
12、: TMOD=02H,主程序,main() TMOD=0 x02; /定时器0工作方式2 TH1=0 x9c; /设置定时初值 TL1=0 x9c; EA=1; /开中断 ET0=1; /定时器0允许中断 TR0=1; /启动T0,定时开始 For(;) /等待中断 /while(1); ,中断程序,void Timer1_ISR( ) interrupt 1 using 0 P1_0=!P1_0; /输出取反 ,定时器的应用举例,例4 若fOSC=12MHz,T1工作于方式1,产生50ms的定时中断,TF1为高级中断源。试使产生周期为1s的方波,并显示分秒功能,编写主程序和中断服务程序 。,
13、程序清单如下(主程序),#include void clock(void); void shift(void); int count=20;/20次T1中断为1000ms void main( void ) TMOD=0 x10; /T1方式1 TH1 =0 x3c; /初值 TL1=0 xb0; EA = 1; / ET1=1; / 允许T1中断 TR1=1; /启动T1 while(1); /死循环,等待中断 ,程序清单如下(中断服务程序):,void Timer1_ISR (void) interrupt 3 using 1 TH1=0 x3c; /重装初值 TL1=0 xb0; cou
14、nt-; /中断计数 if (count=0) /1000ms到,重赋计数初值 count=20; setclock(); separate(); display(second0,second1,minute0,minute1); ,时钟显示程序,void setclock(void) second+; if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour =24) hour =0; ,void separate() second1= second/10; second0= second%10; minute1= second/10; minute0= second%10; hour1 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 4937.28-2026半导体器件机械和气候试验方法第28部分:静电放电(ESD)敏感度测试带电器件模型(CDM)器件级
- 沈阳农业大学《成本管理》2025-2026学年期末试卷
- 山西卫生健康职业学院《广告文案写作》2025-2026学年期末试卷
- 山西职业技术学院《畜牧学概论》2025-2026学年期末试卷
- 上海城建职业学院《教育学概论》2025-2026学年期末试卷
- 上海师范大学天华学院《工程计算方法》2025-2026学年期末试卷
- 苏州工学院《耳鼻咽喉头颈外科学》2025-2026学年期末试卷
- 无锡太湖学院《学前教育研究方法》2025-2026学年期末试卷
- 超市堆头端架陈列规范
- 喉癌术后康复摄入饮食指导
- 广东省化工(危险化学品)企业安全隐患排查指导手册(危险化学品仓库企业专篇)
- 2025年医疗卫生系统招聘考试《医学基础知识》真题及详解
- 卫生院防雷安全生产制度
- 大型超市卫生组织制度
- 绍兴2025年浙江绍兴市政务服务办公室招聘政务服务专员6人笔试历年参考题库附带答案详解
- 齐成控股集团招聘笔试题库2026
- 舞台搭建施工方案及流程方案
- 2025-2030人物像摄影行业市场用户需求变化与发展趋势评估
- 2026上海人保财险校园招聘笔试备考试题及答案解析
- 测试工程师岗位面试题及笔试题全集含答案
- 2025辽宁葫芦岛市总工会招聘工会社会工作者5人备考笔试试题及答案解析
评论
0/150
提交评论