- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 中断系统实验
一、实验目的
完成中断系统的综合实验,包括中断请求源,中断请求标志,中断允许与禁止,中断优先级控制,中断响应过程,外部中断触发方式与中断响应时间等。掌握中断系统的应用知识。二、实验原理1)中断的屏蔽与开放;(2)实现中断及返回;(3)能实现优先级排队;(4)中断嵌套;(5)自动响应中断
51中断系统的结构:TCON、SCON、IE、IP、自然优先级
中断处理过程分为4个阶段:中断请求→中断响应→中断服务→中断返回。
中断系统的设计过程通常由以下几个部分构成:
(1) 中断初始化,在主程序中完成; (2) 在中断入口地址处安排一跳转指令,跳转至中断服务子程序入口; (3) 中断服务子程序开始保护现场,保护与主程序或其他中断系统共享的资源; (4) 编制中断服务子程序功能主体; (5) 恢复现场。
外部中断的信号要求:低电平持续时间要超过1个机器周期。
外部中断标志的撤除:电平触发方式要软硬结合撤除,跳变触发方式自动撤除。
外部中断标志在不同触发方式下的锁存:电平触发方式下,如被屏蔽,则中断请求信号消失后,中断标志自动撤除,或者在响应中断后自动清除;跳变触发方式下,即使被屏蔽,中断标志也将锁存,在响应中断后才会被自动清除。
三、实验仪器四、实验内容与步骤ORG 0000H
LJMP MAIN
ORG 0003H
LJMP PINT0
MAIN: MOV IE,#81H
SETB IT0
MOV P0,#0FFH
SETB F0
SJMP $
PINT0: JB F0,LIGHT
MOV P0#0FFH
SETB F0
LJMP RTN
LIGHT: MOV P0,#00H
CLR F0
RTN: RETI
END #include reg51.h
#define uint unsigned int
#define uchar unsigned char
#define LED P0
uchar k=0xff;
void int0() interrupt 0{ k=~k; }
void main(void){
IE=0x81;
IT0=1;
for(;;){
LED=k;
}
}
2、电路同上。每按一次开关,LED全部点亮,保持一段时间后全部熄灭,如此往复,保持时间自定义。
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP PINT0
MAIN: MOV IE,#81H
SETB IT0
MOV P0,#0FFH
LJMP MAIN
PINT0: MOV P0,#00H
LCALL DEL
MOV P0,#0FFH
RETI
DEL: MOV R5, #10
DEL0: MOV R6, #200
DEL1: MOV R7, #248
DJNZ R7, $
DJNZ R6, DEL1
DJNZ R5, DEL0
END #include reg51.h
#define uint unsigned int
#define uchar unsigned char
#define LED P0
void DelayMS(uint x){
uchar t;
while(x--){
for(t=0;t120;t--);
}
}
void int0() interrupt 0{
LED=0x00;
DelayMS (1000);
LED=0xff;
}
void main(void){
IE=0x81;
IT0=1;
LED=0xff;
while(1);
}
3、电路同上。实现LED流水灯(只亮一个),间隔时间为1秒,方向自定义。按下开关后改变原流水灯为反向流动。
#include reg51.h
#include intrins.h
#define uint unsigned int
#define uchar unsigned char
bit flag=1;
void DelayMS(uint x){
uchar t;
while(x--){
for(t=0;t120;t--);
}
}
void int0() interrupt 0{ flag=~flag; } void main(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连接SIMP
文档评论(0)