资源描述:
《单片机--中断系统实验-定时器实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验三中断系统实验一、实验目的1、完成中断系统的综合实验,包括中断请求源,中断请求标志,中断允许与禁止,中断优先级控制,中断响应过程,外部中断触发方式与中断响应时间等。2、掌握中断系统的应用知识。二、实验原理中断系统的功能:(1)中断的屏蔽与开放;(2)实现中断及返回;(3)能实现优先级排队;(4)中断嵌套;(5)自动响应中断51中断系统的结构:TCON、SCON、IE、IP、自然优先级中断处理过程分为4个阶段:中断请求→中断响应→中断服务→中断返回。中断系统的设计过程通常由以下几个部分构成:(1)中断初始化,在主程序中完成
2、;(2)在中断入口地址处安排一跳转指令,跳转至中断服务子程序入口;(3)中断服务子程序开始保护现场,保护与主程序或其他中断系统共享的资源;(4)编制中断服务子程序功能主体;(5)恢复现场。外部中断的信号要求:低电平持续时间要超过1个机器周期。外部中断标志的撤除:电平触发方式要软硬结合撤除,跳变触发方式自动撤除。外部中断标志在不同触发方式下的锁存:电平触发方式下,如被屏蔽,则中断请求信号消失后,中断标志自动撤除,或者在响应中断后自动清除;跳变触发方式下,即使被屏蔽,中断标志也将锁存,在响应中断后才会被自动清除。三、实验仪器四、
3、实验内容与步骤编程并调试1、P0口接8个LED(L1~L8),INT0接单脉冲开关(SIMPLEP-)。初始LED全部熄灭,按下开关后全部点亮,再按一次后全部熄灭,如此往复。ORG0000HLJMPMAINORG0003HLJMPPINT0MAIN:MOVIE,#81HSETBIT0MOVP0,#0FFHSETBF0SJMP$PINT0:JBF0,LIGHTMOVP0#0FFHSETBF0LJMPRTNLIGHT:MOVP0,#00HCLRF0RTN:RETIEND#include#defineuintun
4、signedint#defineucharunsignedchar#defineLEDP0uchark=0xff;voidint0()interrupt0{k=~k;}voidmain(void){IE=0x81;IT0=1;for(;;){LED=k;}}2、电路同上。每按一次开关,LED全部点亮,保持一段时间后全部熄灭,如此往复,保持时间自定义。ORG0000H#includeLJMPMAINORG0003HLJMPPINT0MAIN:MOVIE,#81HSETBIT0MOVP0,#0FFHLJMPMA
5、INPINT0:MOVP0,#00HLCALLDELMOVP0,#0FFHRETIDEL:MOVR5,#10DEL0:MOVR6,#200DEL1:MOVR7,#248DJNZR7,$DJNZR6,DEL1DJNZR5,DEL0END#defineuintunsignedint#defineucharunsignedchar#defineLEDP0voidDelayMS(uintx){uchart;while(x--){for(t=0;t<120;t--);}}voidint0()interrupt0{LED=0x00;De
6、layMS(1000);LED=0xff;}voidmain(void){IE=0x81;IT0=1;LED=0xff;while(1);}3、电路同上。实现LED流水灯(只亮一个),间隔时间为1秒,方向自定义。按下开关后改变原流水灯为反向流动。#include#include#defineuintunsignedint#defineucharunsignedcharbitflag=1;voidDelayMS(uintx){uchart;while(x--){for(t=0;t<120
7、;t--);}}voidint0()interrupt0{flag=~flag;}voidmain(void){IE=0x81;IT0=1;P0=0xfe;for(;;){if(flag){P0=_crol_(P0,1);DelayMS(1000);}else{P0=_cror_(P0,1);DelayMS(1000);}}}4、中断计数:P0、P1口扩展2位数码管,显示中断次数。连线:IO1~IO8按序连接LED_A~LED_DP,CAP0、SDA按序连接LED_C1、LED_C2,INT0连接SIMPLEP-。#incl
8、ude“reg51.h”#defineucharunsignedcharsbitP10=P1^0;sbitP11=P1^1;ucharcounter=0;unsignedcharcodetable-code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x0