-
2021-05-19 14:02:49
51单片机外部中断实验报告
51单片机外部中断实验
实验报告要求:
整理本实验涉及的程序,将它们按正确的格式详细书写在实验报告纸上。
无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。
#include
#include
int n1,n2;
sbit beep=P3^5;
char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delay(int x)
{
int i,j;
for(i=0;i
for(j=0;j<200;j++);
}
void main()
{
EA=1;
EX0=1;
IT0=0;
EX1=1;
IT1=1;
PX1=1;
while(1);
}
void int0() interrupt 0
{
beep=0;
P2=0xfe;
delay(200);
for(n1=8;n1>0;n1--)
{
P2=_crol_(P2,1);
delay(200);
}
}
void int1() interrupt 2
{
P0=0x00;
for(n2=0;n2<16;n2++)
{
P1=table[n2];
delay(200);
}
}
设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管加1显示程序)。
C语言程序
#include
#include
int n1,n2;
chartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delay(int x)
{
int i,j;
for(i=0;i
for(j=0;j<200;j++);
}
void main()
{
EA=1;
EX0=1;
IT0=1;
P2=0xfe;
delay(200);
for(n1=8;n1>0;n1--)
{
P2=_crol_(P2,1);
delay(200);
}
}
void int0() interrupt 0
{
EX0=1;
P0=0x00;
for(n2=0;n2<16;n2++)
{
P1=table[n2];
delay(200);
}
EX0=0;
}
汇编程序:
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP EXT0_INT
ORG 0013H
LJMP EXT1_INT
ORG 0100H
MAIN:SETB EA
SETB EX0
SETB EX1
SETB PX1
CLR IT0
CLR IT1
AJMP $
EXT0_INT: MOV P2,#0FEH
MOV R4,#08H
L1:ACALL DELAY
MOV A,P2
RL A
MOV P2,A
DJNZ R4,L1
RETI
EXT1_INT: MOV P1,#0F0H
MOV R5,#00H
MOV DPTR ,#TAB
L4:MOV A,R5
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
INC R5
CJNE R5,#0AH,L4
RETI
TAB: DB 0C0H ,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DELAY:MOV R6,#0FFH
L5:MOV R7,#0FFH
L6:NOP
NOP
DJNZ R7,L6
DJNZ R6,L5
RET
END
写出实验结果、实验收获与对本实验改进的意见。
1)无中断时发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。
2)当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序被中断去执行外部中断1的中断程序(数码管
更多相关内容 -
51单片机外部中断实验程序的设计与分析.pdf
2021-07-12 16:14:5351单片机外部中断实验程序的设计与分析.pdf -
c语言控制51单片机模拟实验 定时器/计数器、外部中断实验
2021-04-07 16:56:28c语言控制51单片机模拟实验 定时器/计数器、外部中断实验 -
C51单片机实验——中断实验
2021-11-19 17:43:19实验名称:单片机中断实验 实验环境:普中实验系统;Keil μVision 4软件; 实验目的: (1)掌握单片机中断原理和中断响应过程。 (2)设计自己的中断程序具体实验内容,并通过程序设计控制实验箱上的2个按键,实现...实验名称:单片机中断实验
实验环境:普中实验系统;Keil μVision 4软件;
实验目的:
(1)掌握单片机中断原理和中断响应过程。
(2)设计自己的中断程序具体实验内容,并通过程序设计控制实验箱上的2个按键,实现对应的中断内容。
硬件连线:
按键k3连接P3.2口
按键k4连接P3.3口
LED灯连接P2口实验主要代码:
/************************************************************************************** * 外部中断0实验 * 实现现象:下载程序后按下K3按键可以对D1小灯状态取反。 注意事项:无。 ***************************************************************************************/ #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #include<intrins.h> //因为要用到左右移函数,所以加入这个头文件 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit k3=P3^2; //定义按键K3 sbit k4=P3^3; //定义按键K3 #define led P2 //将P2口定义为led 后面就可以使用led代替P2口 /******************************************************************************* * 函 数 名 : delay * 函数功能 : 延时函数,i=1时,大约延时10us *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * 函 数 名 : Int1Init() * 函数功能 : 设置外部中断1 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Int0Init() { //设置INT0 IT0=1;//跳变沿出发方式(下降沿) EX0=1;//打开INT0的中断允许。 EA=1;//打开总中断 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { Int0Init(); // 设置外部中断0 while(1); } /******************************************************************************* * 函 数 名 : Int0() interrupt 0 * 函数功能 : 外部中断0的中断函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Int0() interrupt 0 //外部中断0的中断函数 { delay(1000); //延时消抖 if(k3==0) { u8 i; led=0xfe; delay(50000); //大约延时450ms while(1) { /* for(i=0;i<8;i++) { P2=~(0x01<<i); //将1右移i位,然后将结果取反赋值到P2口 delay(50000); //大约延时450ms } */ for(i=0;i<7;i++) //将led左移一位 { led=_crol_(led,1); delay(50000); //大约延时450ms } } } if(k4==0) { u8 i; led=0xfe; delay(50000); //大约延时450ms while(1) { /* for(i=0;i<8;i++) { P2=~(0x01<<i); //将1右移i位,然后将结果取反赋值到P2口 delay(50000); //大约延时450ms } */ for(i=0;i<7;i++) //将led右移一位 { led=_cror_(led,1); delay(50000); //大约延时450ms } } } }
实验结果与心得:
实验现象:按下k3按键,LED灯从D1到D8从左到右实现流水灯依次点亮;按下k4按键,LED灯从D8到D1从右至左实现流水灯依次点亮
实验心得:1. INT0*—外部中断请求0,外部中断请求信号(低电平或负跳变有效)由INT0*引脚输入,中断请求标志为IE0。
2. IT0—选择外中断请求0为跳沿触发方式还是电平触发方式
3. IE对中断开放和关闭实现两级控制。两级控制就是有一个总的中断开关控制位EA(IE.7位),当EA=0,所有中断请求被屏蔽,CPU对任何中断请求都不接受;当EA=1时,CPU开中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定
4. EX1—外部中断0中断允许位。
EX0=0,禁止外部中断0中断。
EX0=1,允许外部中断0中断。
5. 编写中断程序,应遵循以下规则:
1)中断函数没有返回值,如果定义一个返回值,将会得到不正确结果。建议将中断函数定义为void类型,明确说明无返回值。
2)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。 -
11.51单片机外部中断实验
2021-10-25 09:58:12①编程实现无中断时,发光二极管常亮,有外部中断时左移,有外部中断时右移。 ②验证中断查询的自然优先顺序(写出验证方法及结果)。 ③通过IP寄存器设置优先级,验证中断的两个优先级结构(写出验证方法及结果)。...利用51单片机完成一系列中断的操作,检验中断相关知识。
题目重述
实验前准备:51单片机的实验连线图如下所示
1.编程实现无中断时,发光二极管常亮,有外部中断时左移。
2.完成以下功能及验证:
①编程实现无中断时,发光二极管常亮,有外部中断时左移,有外部中断时右移。
②验证中断查询的自然优先顺序(写出验证方法及结果)。
③通过IP寄存器设置优先级,验证中断的两个优先级结构(写出验证方法及结果)。问题分析以及求解思路
待完善(请耐心等待)
程序代码
问题1代码
ORG 0000H AJMP MAIN ORG 0003H AJMP LIGHT MAIN:CLR IT0 SETB EA SETB EX0 L: MOV P2,#00H LCALL DELAY SJMP L LIGHT:MOV P0,#01111111B MOV R5,#9 PAO: MOV P2,P0 LCALL DELAY MOV A,P0 RL A MOV P0,A DJNZ R5,PAO RETI DELAY:MOV R6,#0FFH DELAY1:MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DELAY1 RET END
问题2代码
ORG 0000H AJMP MAIN ORG 0003H AJMP LLIGHT ORG 0013H AJMP RLIGHT MAIN:CLR IT0 SETB EA SETB EX0 CLR IT1 SETB EX1 SETB PX1 设置高优先级 L: MOV P2,#00H LCALL DELAY SJMP L RLIGHT:MOV R0,#01111111B MOV R5,#9 PAO: MOV P2,R0 LCALL DELAY MOV A,R0 RL A MOV R0,A DJNZ R5,PAO RETI LLIGHT:MOV R1,#11111110B MOV R3,#9 RPAO: MOV P2,R1 LCALL DELAY MOV A,R1 RR A MOV R1,A DJNZ R3,RPAO RETI DELAY:MOV R6,#0FFH DELAY1:MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DELAY1 RET END
-
C51单片机 外部中断
2020-06-15 10:48:5651单片机的中断系统 一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来...51单片机的中断系统
一、中断的概念
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。如图
引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统。如图
中断源
中断系统的优点:分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;
实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
二、51单片机的中断系统结构
89C51/52的中断系统有5个中断源 ,2个优先级,可实现二级中断嵌套 。
1、(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。(外部中断0)2、(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。(外部中断1)
3、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。(定时器中断0)
4、TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。(定时器中断1)
5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。(串口中断)
三、中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
每一位控制不同的而中断允许
(从左以此往右)EX0(IE.0),外部中断0允许位; //1000 0001 ET0(IE.1),定时/计数器T0中断允许位; //1000 0010 EX1(IE.2),外部中断0允许位; //1000 0100 ET1(IE.3),定时/计数器T1中断允许位; //1000 10000 ES(IE.4),串行口中断允许位; //1001 0000 EA (IE.7), CPU中断允许(总允许)位。
四、中断请求标志
1、TCON的中断标志
IT0(TCON.0),外部中断0触发方式控制位。 当IT0=0时,为电平触发方式。 当IT0=1时,为边沿触发方式(下降沿有效)。 IE0(TCON.1),外部中断0中断请求标志位。 IT1(TCON.2),外部中断1触发方式控制位。 IE1(TCON.3),外部中断1中断请求标志位。 TF0(TCON.5),定时/计数器T0溢出中断请求标志位。 TF1(TCON.7),定时/计数器T1溢出中断请求标志位
同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
51单片机的中断优先级有三条原则:CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
正在进行的低优先级中断服务,能被高优先级中断请求所中断。为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。
五、51单片机中断处理过程
中断响应条件
1.中断源有中断请求;
2. 此中断源的中断允许位为1;
3. CPU开中断(即EA=1)。
以上三条同时满足时,CPU才有可能响应中断。以外部中断0为例:
主程序中需要有以下代码:
EA=1;//打开总中断开关 EX0=1;//开外部中断0 IT0=0/1;//设置外部中断的触发方式
中断服务函数:
void int0 () interrupt 0 using 1 { do anything that you want }
注意:
interrupt 0, ==interrupt ==后必须为中断号,详见中断源。
using 1可以省略。 -
《单片机》实验——实验2 MCS-51外部中断控制实验
2022-04-02 15:02:19(1)8051内部有5个中断源,其中两个为外部中断源/INT0、/INT1,两个定时器T0、T1的溢出请求中断,1个片内串行口发送或接收中断源TI和RI。 (2)8051的5个中断源的优先次序已由硬件结构决定,由高到低顺序: /INT0→... -
C51单片机外部中断代码
2018-03-21 22:23:05//流水数码,当外部中断产生,流水数码闪烁 -
51单片机外部中断编程实例
2020-07-18 15:41:4751单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0;下面一起来学习一下 -
51单片机外部中断流水灯(汇编语言)
2018-06-13 20:07:16设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即从P2口的LED循环点亮。可以从protues中看到结果 -
C51单片机实验 外部中断
2018-05-27 19:14:54C51单片机汇编实验金沙滩实验4 外部中断代码和各种文件 -
51单片机定时器0外部中断实验有Proteus仿真
2018-11-23 16:19:05基于at89c51的外部定时器0终端实验,包含汇编源码和proteus仿真工程文件。 -
C51单片机外部中断的触发方式
2020-06-23 15:30:25○ 外部中断引脚的低电平要一直保持,直到CPU响应外部中断 ○ CPU响应中断后,会硬件将IE清0(IE=0),但是不会取消掉外部中断引脚的低电平,因此需要硬件加软件清除低电平(p133) 2. 下降沿触发方式 ○ CPU... -
C51单片机 写一个外部中断(入门单片机)
2021-07-25 22:36:57代码部分 void main() { /*---------------EA,IT,EX必须写-------------*/ EA=1; //开启总中断 IT1=1; //中断触发模式 //=0为低电平触发,=1为下降沿触发 ... //外部中断允许位 ...1.外部中断 -
51单片机 外部中断实验
2015-04-06 17:34:3251单片机一共有两个外部中断源。 IE0的置位与否与IT0有关,当IT0=1时,下降沿触发也就是说当INT0由高到低时IE0将被硬件置1, 执行完中断,遇到RETI自动清0,但不影响INT0的状态。当IT0=0时,当CPU检测到连续两... -
C51单片机外部中断
2021-04-15 15:08:31实现外部中断:用外部中断1,且中断只受到低电平触发。主程序,任意相邻4个数码管显示 2(1秒后)-0(1秒后)-2(1秒后)-1(1秒后)(... -
单片机外部中断实验(附C语言程序)
2021-05-19 14:03:17《单片机外部中断实验(附C语言程序)》由会员分享,可在线阅读,更多相关《单片机外部中断实验(附C语言程序)(2页珍藏版)》请在人人文库网上搜索。1、单片机外部中断实验(附c程序)一、实验目的掌握外部中断的C语言和... -
外部中断实验代码
2013-04-15 21:19:15在单片机8251上实现的关于外部中断的C51程序,若有误漏请见谅O(∩_∩)O~ -
51单片机教程(六):单片机外部中断及红外遥控器解码
2020-07-26 02:13:51上讲介绍并应用了单片机动态扫描驱动数码管,并给出了实例。这一讲将重点介绍单片机如何通过捕获来实现对红外遥控器解码。通过该讲,读者可以掌握红外遥控器的编码原理以及如何通过单片机对遥控器进行解码。 -
单片机中断原理——以外部中断为例,代码详写,你“一看就懂”
2020-02-01 17:09:31中断系统原理 何为中断,何为中断系统 举个例子: 生活中常见的例子,一个正在写寒假作业的孩子突然听到一阵敲门声,原来是父母下班回来了,孩子说:“等会,我来了”。于是,他记住当下页码放下作业去开门,然后... -
c51单片机之外部中断实验(利用外部中断实现按键控制显示数字实现设置、加一、减一功能)
2021-06-10 19:41:42仿真图: 仿真图: 代码段: #include #define uint unsigned int #define uchar unsigned ... //LED熄灭 } } 解析: 主要涉及外部中断0,外部中断1、定时器T0的中断操作,计数器在中断作为功能键时是一个不错的选择 -
C51中断介绍---外部中断实验---C51+proteus8仿真
2020-12-23 22:51:32现在许多MCU都内嵌有中断,C51中有5个中断源,今天我们就来做一下外部中断的实验,使用的是外部中断0(INT0)。 文章目录前言中断系统1、中断系统的内部结构2、C51中断源3、中断有关寄存器(1)、中断请求寄存器... -
51单片机的外部中断触发方式简介
2020-07-19 17:22:16文章51单片机的外部中断触发方式进行了介绍。 -
51 汇编语言编程:外部中断实验
2021-05-22 05:32:16外部中断0:左右四位闪烁三次;;外部中断1:各位间隔闪烁三次。;仿真电路如下:;程序如下:ORG 0000HLJMP STARTORG 0003HLJMP X0_INTORG 0013HLJMP X1_INTORG 0030HSTART:SETB IT0SETB IT1SETB EX0SETB EX1SETB ... -
C51之外部中断
2018-02-25 09:44:40名称:C51之外部中断实验 说明:关于什么是中断这里就不说了。说说计算机中使用中断有什么好处吧。 (1)、实时处理。在计算机控制系统中,环境、参数的突然变化,可能需要 CPU立即做出相应或处理。 (2)... -
51单片机外部中断使用示例程序
2022-04-27 21:24:3651单片机外部中断使用示例程序 -
51单片机外部中断触发方式
2020-07-19 16:12:40本文介绍了51单片机外部中断触发方式。 -
KeilC51单片机外部中断原理解释
2022-04-22 13:45:38实现内容与基本原理解释 ...EX=0 禁止外部中断;EX=1 允许外部中断 EA=0 禁止全局中断;EA=1 开放全局中断 PX=0 为该引脚设置低优先级中断;PX=1 为该引脚设置高优先级中断 这里不详细讲中断函数,仅提供代码实 -
51单片机(二十八)—— 外部中断实验
2020-03-06 11:12:21一、外部中断介绍 在前面文章中,我们对中断的概念进行了介绍。STC89C516单片机内部有6个中断源,它们分别为: INT0—外部中断0,由P32端口线引入,低电平或下降沿触发中断。 INT1—外部中断1,由P33端口线引入...