网站大量收购独家精品文档,联系QQ:2885784924

实验报告6 中断及服务程序设计.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. . 实验报告6 中断及服务程序设计 姓名: 学号: 学院:光电与信息工程学院 班级:网络工程2班 实验目的 掌握单片机中断系统的工作原理 掌握单片机中断优先级的概念 实验环境 1. PC机 1台 2. wave6000 内容与步骤 以定时器0、1为例,设计中断服务程序,及优先级别控制。 过程分析 #includereg51.h #includeintrins.h unsigned char x=0xfe; unsigned int x0=0;//记录计时器0中断后中断服务执行的次数 unsigned int x1=0;//记录计时器1中断后中断服务执行的次数 sbit p1=P1; void delay() //延迟程序 { unsigned int i,j; for(i=0;i10;i++) for(j=0;j10;j++); } void main() { TMOD=0x11; PT1=1; //定时器1优先 PT0=0; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; while(1); } void time0() interrupt 1 { unsigned char a; TL0=35536%256; //30ms中断一次 TH0=35536/256; for(a=0;a8;a++) //重复执行8次 { P1=0; //点亮所有灯的LED delay(); P1=0xff; //熄灭所有的LED delay(); } x0++; } void time1() interrupt 3 //先点亮一个,后点亮两个,……直到点亮八个,又重新开始 { unsigned char b; TL1=15536%256; //50ms中断一次 TH1=15536/256; delay(); P1=x; for(b=0;b8;b++) { x=x1; P1=x; } x=0xfe; delay(); x1++; } 截图分析: 在定时器0和定时器1中设置两个中断点。 开启中断器查看,事先将TF0,TF1打钩 进行跟踪,程序开始出现中断,进入定时器1(优先级决定) 观察光标的执行情况。 定时器1设置50ms中断一次,定时器0设置30ms中断一次. 当程序在执行过程中,虽然定时器1的优先级高,但由于中断时间较长,所以会存在定时器0的运行阶段,如图。 接下来,定时器0运行一段时间后,又会再一次轮到定时器1工作 如此重复下去,定时器1可以中断正在执行的定时器0,前提是优先级高的中断时间要长,否则很难看出效果。不然总是会有一个定时器一直在执行中断。可以根据实验中外接LED来观察更加明显的效果。 执行全速运行,观察中断服务程序执行情况。 X1/X0这个比例不是3/5,原因是实验中外接LED来观察更加明显的效果,所以多了延迟函数delay()。之前的实验报告的延迟时间设置得太长,导致优先级高的中断一直处于抢占地位。所以这次的延迟时间稍微修改了一下。根据中断服务程序的执行时间不同,这个比例也会不同。 结果总结 总结: 这次实验是程序中断服务,采用定时器0,定时器1,其工作方式都采用方式1,为了体现优先级,主程序设置定时器1的优先级最大,但默认未设置的情况下则是定时器0最大。在编写程序的时候为了上机操作可以观察到明显的变化,借助外接LED灯。为了能交替的产生不同类型的中断,将优先级高的中断时间设置得较长一些,这样就可以使优先级低的中断可以插进来执行。实验初次运行时执行不下去,后来在两个中断程序中都加了断点,才可以执行下去。在开启了定时器查看后,很明显的观察到了2个定时器中断程序的交替进行。实验中外接LED来观察更加明显的效果,所以多了延迟函数delay()。在之前的基础上还增加了变量X0,X1表示定时器中断后中断服务函数的运行次数,这样更加明显的看到了中断嵌套的出现。 思考题:1.外部中断0和外部中断1的处理方法。 答: 外部中断 0(!INT0) 、外部中断 1(!INT1) 属于同级中断源,在C51单片机的引脚是P3.2和P3.3,分电平触发和边沿触发。当IT0=0(IT1=0)时,!INT0(!INT1)为低电平触发方式,cpu在每个机器周期的S5P2期间对!INT0(!INT1)采样。一旦在P2.3(P2.3)引脚

文档评论(0)

ygxt89 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档