单片机外部中断实验3
南京理工大学高等教育自学专接本
学 院: 南京理工大学继续教育学院
专 业: 电子信息工程
姓 名: 肖金乐
2014年12月23日
单片机外部中断实验
一、实验目的
1(理解单片机AT89C51的中断原理及其中断过程。
2(用proteus设计、仿真AT89C51单片机的外部中断。
电路设计
五、思考题
1、MCS-51单片机响应某一个中断请求的条件是什么,
1、无同级或高优先级中断正在服务执行中
2、当前指令已执行到最后一个机器周期并结束,即当前指令被执行完。
当前正在执行的不是返回指令(RET、RETI)或访问IE、IP指令 2、8051单片机提供几个中断源,有几级中断优先级别,各中断标志是如何产生的又如何清除这些中断标志,各中断源所对应的中
断入口地址多少,
8051单片机提供5个中断源,有5级中断优先级别。各中断源请求中断和启/停定时/计数器工作的信息激活TCON寄存器中的对应位,供主机查询。TCON寄存器各位的定义与格式如下:
TF1、TF0(D7、D5位):定时/计数器1、定时/计数器0的计数回0溢出中断请求标志位。当定时/计数器1或0启动计数回0并产生溢出信息时,由内部硬件激活TF1或TF0中断请求标志位,请求中断处理,当主机经查询并响应中断请求,转向该中断服务程序进行处理时,由内部硬件清零TF1或TF0中断请求标志位,回复原状态。
TR1、TR0(D6、D4位):定时/计数器1、定时/计数器0的启/停操作控制位。当通过软件置位TR1或TR0为1时,启动对应的定时/技术器计数;复位TR1或TR0为0时,立即停止计数操作。
IE1、IE0(D3、D1位):外部中断1(非INT1)、外部中断0(非INT0)中断请求标志位。当主机检测到外部中断1(非INT1)或外部中断0(非INT0)端口发生电平负跳变(由高电平跳变为低电平)或为低电平时,由内部硬件(中断系统)置位IE1或IE0中断请求标志位为1,向主机请求中断处理。当主机响应中断并转向对应的中断服务程序执行时,由内部硬件自动复位IE1或IE0中断请求标志位为0,恢复原状态。
IT1,IT0(D2、D0位):软件选择外部中断1(非INT1)、外部中断0(非INT0)电平负跳变/低电平方式激活外部中断请求的选择位。当通过软件置位IT1或IT0位为1,外部中断1(非INT1)或外部中断0(INT0)端口由高电平跳变为低电平(负跳变)时,激活对应的外部中断请求标志位,向主机请求中断处理;当采用软件复位IT1、IT0位时,选择低电平激活外部中断请求标志位,即当外部中断端口(非INT1或INT0)出现低电平时激活对应的中断请求标志位,向主机请求中断处理。
外部中断0(非INT0) 向量地址(程序存储器地址)0003H
定时/计数器0 000BH
外部中断1(非INT1) 00013H
定时/计数器1 001BH
串行通信(RI+T1) 0023H
3、程序代码
ORG 0000H
SJMP START
ORG 0003H ;外部中断0程序入口地址
SJMP IN0
ORG 0013H ;外部中断1程序入口地址
SJMP IN1
START : SETB EA ;开总中断
SETB EX0 ;外部中断0允许
SETB EX1 ;外部中断1允许
SETB IT0; //下降沿触发
SETB IT1;
MOV IP,#01H; //最高优先
MOV DPTR,#TABLE; //
表格
关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载
地址
MOV P2,#0FFH; //清零 LL1
LL1: MOV A,#00H;
MOVC A,@A+DPTR; //输入表格第一个数
CJNE A,#1BH,LL2; //是否结束字符,不是则到LL2
MOV DPTR,#TABLE; //是,则重新输入
LJMP LL1; //跳转到LL1
LL2 : MOV P2,A; //输出数据
LJMP LL1;
IN0 : CLR EX0; //关中断
LCALL DELAY; //延时
MOV A,P3;
CJNE A,#0FBH,LL3; //对比是否低电平.真的有中断
PUSH PSW; //入栈
PUSH ACC;
INC DPTR; //表格地址加一
POP ACC;
POP PSW; // 出栈
SETB EX0; //开中断
RETI; //返回 LL3
IN1 : CLR EX1; //关中断
LCALL DELAY; //延时
MOV A,P3;
CJNE A,#0F7H,LL3; //对比是否低电平.真的有中断
PUSH PSW; //入栈
PUSH ACC;
MOV A,DPL //表格地址糐一
SUBB A,#1
MOV DPL,A
MOV A,DPH
SUBB A,#0
MOV DPH,A
POP ACC;
POP PSW; // 出栈
SETB EX1; //开中断
RETI; //返回 LL3
LL3: SETB EX0;
SETB EX1;
RETI;
DELAY : MOV R7,#01H; //延时程序
DE1 : MOV R6,#50;
DE2 : MOV R5,#123;
DJNZ R5,$;
DJNZ R6,DE2;
DJNZ R7,DE1;
RET
TABLE : DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 1BH
END