您的当前位置:首页实验报告6 中断及服务程序设计

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

来源:飒榕旅游知识分享网


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

姓名: 学号:

学院:光电与信息工程学院 班级:网络工程2班 实验目的 1. 掌握单片机中断系统的工作原理 2. 掌握单片机中断优先级的概念 实验环境 1. PC机 1台 2. wave6000 内容与步以定时器0、1为例,设计中断服务程序,及优先级别控骤 过程分析 制。 #include #include 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;i<10;i++) for(j=0;j<10;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;a<8;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;b<8;b++) { x=x<<1; 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)引脚检测到低电平时,则认为有中断请求,使IE0(IE1)置‘1’,向cpu申请中断;而当IT0=1(IT1=1)时,!INT0(!INT1)为下降沿触发方式,CPU在每个机器周期的S5P2期间采样!INT0(!INT1),当在前一个周期检测到高电平,后一个周期检测到低电平时,则认为有中断请求,使IE0(IE1)置‘1,’向CPU申请中断。在边沿触发方式中,为保证CPU在两个机器周期内检测到由高变低的负跳变,高电平与低电平的持续时间不得少于1个机器周期的时间。外部中断0的优先级高于外部中断1。 附录 ---------------------------以下内容老师为老师填写-------------------

老师评阅: 成绩:

因篇幅问题不能全部显示,请点此查看更多更全内容