外部中断0中断1混合使用

更新时间:2023-09-26 11:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验三、 外部中断0、中断1的混合使用

一、 实验目的

学习外部中断技术的基本使用方法及中断处理的编程方法

二、 实验内容

本实验在无外部中断时两个发光二极管常亮,外部中断0请求中断时左移,外部中断1请求中断时右移 三、 实验步骤

1)在proteus中画仿真图如下:

2)根据实验要求画流程图: 否 使两个亮 二极管右移一 开 始 对外部中断0、1初始化 取出R1的值 否 R1 = 02 R1=00 是 使两个亮二极管左移一位 是 使第1、2个二极管亮

延 时

外部中断0入口 外部中断1入口

R1 = 00H R1 = 01H

中断返回

中断返回

3)根据流程图写出如下程序: ORG 0000H AJMP START ORG 0003H ;外部中断0的服务程序 MOV R1,#00H ;给R1FU赋值00 RETI ORG 0013H ;外部中断1的服务程序 MOV R1,#01H ;给R1FU赋值01 RETI ORG 0030 START: MOV SP,#60H ;设置堆栈指针 SETB IT0 ;设置外部中断0为边沿触发 CLR IE0 ;清除外部中断0请求标志 SETB EX0 ;允许外部中断0 SETB IT1 ;设置外部中断1为边沿触发 CLR IE1 ;清除外部中断1请求标志 SETB EX1 ;允许外部中断1 SETB EA ;开总中断 MOV R1,#02H ;设置P1为02,两个发光二极管亮 LOOP: MOV R0,A MOV A,R1 ;将R1内容取出 SUBB A,#00H ;与00作减法 JZ TTRL ;若A为00则跳到左移程序 SUBB A,#01H ;与01作减法 JZ TTRR ;若A为01则跳到右移程序

MOV A,#0FCH;两个灯亮 MOV P1,A ;从P1口输出 AJMP LOOP TTRL: MOV A,R0 RL A ;R0的值循环左移一位

MOV P1,A ;从P1口输出 ACALL DELAY ;调用延时 AJMP LOOP TTRR: MOV A,R0 RR A ;R0的值循环右移一位 MOV P1,A ;从P1口输出 ACALL DELAY ;调用延时 AJMP LOOP DELAY: ;延时 MOV R7,#5 DELAY1: MOV R6,#200 DELAY2: MOV R5,#250 DJNZ R5,$ DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET END

四、 实验结论与分析

做完这次实验我对中断有了更深的认识,特别是中断的入口设置更懂了。

本文来源:https://www.bwwdw.com/article/0mqd.html

Top