资源描述:
《中断实验-有急救车的交通灯控制实验.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、实验目的: 1、学习外部中断技术的基本使用方法。 2、学习中断处理程序的编程方法。二、实验设备: EL-8051-III型单片机实验箱三、实验内容: 在实验三的内容的基础上增加允许急救车优先通过的要求。当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲为中断申请,表示有急救车通过。四、实验原理: 交通灯的燃灭规律见实验三。 本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕
2、后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验给出的程序中,主程序延时用的是R5、R6、R7,中断延时用的是R3、R4和新的R5。第二,主程序中每执行一步经74LS273的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行往74LS273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。还要注意一点,主程序中往端口输出数据操作要
3、先保存再输出,例如有如下操作: MOVA,#0F0H(0) MOVX@R1,A(1) MOVSAVE,A(2) 程序如果正好执行到(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOVA,SAVE指令,由于主程序中没有执行(2),故SAVE中的内容实际上是前一次放入的而不是(0)语句中给出的0F0H,显示出错,将(1)、(2)两句顺序颠倒一下则没有问题。发生中断时两方向的红灯一起亮10秒,然后返回中断前的状态。五、实验原理图:(同实验三)六、实验步骤: 74LS273的输出O0~O7接发光二
4、极管L1~L8,74LS273的片选CS273接片选信号CS2,此时74LS273的片选地址为CFB0H~CFB7H之间任选。单脉冲输出端P-接CPU板上的INT0。七、程序框图:主程序框图 中断程序框图八、参考程序:T5.ASM NAMET5;中断控制实验 OUTPORTEQU0CFB0H;端口地址 SAVEEQU55H;save保存从端口cfa0输出的数据 CSEGAT0000H LJMPSTART CSEGAT4003H L
5、JMPINT CSEGAT4100H START:SETBIT0 SETBEX0 SETBEA MOVA,#11H;置首显示码 MOVSAVE,A;保存 ACALLDISP;显示输出 ACALLDE3S;延时3秒 LLL:MOVA,#12H;东西路口绿灯亮,南北路口红灯亮 MOVSAVE,A ACALLDISP ACALLDE10S;延时10秒 MOVA,#10H;东西路口绿灯灭 MOV
6、SAVE,A ACALLDISP MOVR2,#05H;东西路口黄灯闪烁5次 TTT:MOVA,#14H MOVSAVE,A ACALLDISP ACALLDE02S MOVA,#10H MOVSAVE,A ACALLDISP ACALLDE02S DJNZR2,TTT MOVA,#11H;红灯全亮 MOVSAVE,A ACALLDISP ACALLDE02
7、S;延时0.2秒 MOVA,#21H;东西路口红灯亮,南北路口绿灯亮 MOVSAVE,A ACALLDISP ACALLDE10S;延时10秒 MOVA,#01H;南北路口绿灯灭 MOVSAVE,A ACALLDISP MOVR2,#05H;南北路口黄灯闪烁5次 GGG:MOVA,#41H MOVSAVE,A ACALLDISP ACALLDE02S MOVA,#01H
8、MOVSAVE,A ACALLDISP ACALLDE02S DJNZR2,GGG MOVA,#11H;红灯全亮 MOVSAVE,A ACALLDISP