中断及其优先级实验一、。。二、实验内容通过AT89C52的两个外部中断源INT0和INT1实现中断,并分别为这两个外部中断设置不同的中断优先级,观察中断优先级的效果。中断源中断优先级数码管显示数字持续时间INT0高0大约2秒INT1低8大约6秒 预测实验结果:,数码管会从0到9往复循环显示。,数码管会显示0,持续大约2秒。如果外部中断源INT1被触发,数码管会显示8,大约持续6秒。,数码管会显示8;此时,如果外部中断源INT0被触发,数码管会显示0。,数码管会显示0;此时,如果外部中断源INT1被触发,数码管不会显示8,保持显示0。三、:AT89C52单片机的中断源有六个,其中,实验中使用的是两个外部中断源。只有在开中断的情况下,CPU才能响应中断源的中断请求。中断的开放与屏蔽是通过中断允许寄存器实现的,中断允许寄存器(IE)的各位含义为:EA/ET2ESET1EX1ET0EX0 如果要开放外部的中断源INT0和INT1,即要把EA,EX0和EX1置1,:AT89C52的中断优先级通过中断优先级寄存器(IP)实现,寄存器各个位的含义如下://PT2PSPT1PX1PT0PX0 要把INT0的中断优先级设为高优先级,把INT1的中断优先级设为低优先级,则需要把PX0置1,其他位置0。即把IP赋值0x01。:当CPU响应中断时,会把当前PC值压入堆栈,并根据不同中断源把对应的矢量单元地址放入PC中,也就是说会自动跳转到某个地址,这些地址如下:中断源矢量单元外部中断INT00003H定时/计数器T0溢出000BH外部中断INT10013H定时/计数器T1溢出001BH串行口0023H定时/计数器T2溢出002BH 因为各个矢量地址之间只有8个单元空间,一般都会在矢量单元防止无条件转移指令。四、. LJMPStartMOVA, LJMP2000HMOVA, Start:,A CLRP1. MOVIP,#1HMOVR2,A MOVIE,#Begin:MOVP0,#0C0HMOVR3,ALoop:MOVA,#0AHRETI SUBBA,2500H MOVDPTR,#TableMOVP0,#080H MOVCA,***@A+DPTRMOVA,R3 MOVP0, CALLDelayMOVA,R2 DJNZR0, SJMPBeginMOVA,R1Delay:MOVR3,#Loop2:MOVR2,#3CHCALLDelayLoop1:MOVR1,#0FBHCALLDelay DJNZR1,$CALLDelay DJNZR2, DJNZR3,Loop2MOVR1,A RET Table:DB0C0H,0F9H,0A4H,0B0HMOVR2,A DB099H,092H,082H, DB080H,090HMOVR3,2000HRETI MOVP0,#0C0HEND MOVA,R3
实验三+中断优先级实验+实验报告 来自淘豆网www.taodocs.com转载请标明出处.