STM32F103外部中断

STM32F103外部中断
STM32F103外部中断

51单片机独立按键程序查询法和外部中断两种

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 //用//11111111111111111代表第一个程序。//2222222222222222222222222代表第二个程序,以此类推 //1111111111111111111111111111111111111111111111111111111111111111111 //1111111111111111111111111111111111111111111111111111111111111111111 /****************************************************************************** * * 实验名: 左右流水灯实验 * 使用的IO : LED使用P2,键盘使用P3.1 * 实验效果: 按下K1键, * 注意: ******************************************************************************* / #include #include #define GPIO_LED P2 sbit K1=P3^1; void Delay10ms( ); //延时10ms /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main(void) { unsigned int i,j; j=0xfe; //1111_1110 while(1) { GPIO_LED=j; if(K1==0) //检测按键K1是否按下 { Delay10ms(); //消除抖动 if(K1==0) {

ATMega16单片机外部中断的使用

ATMega16单片机外部中断的使用[日期:2010-09-24 ] [来源:本站原创作者:佚名] [字体:大中小] (投递新闻) // Crystal: 7.3728Mhz ,功能:学习外部中断0的程序 #include #include #define LED_COM PORTA ^= (1 << PA6) // void port_init(void) { PORTA = 0x40; DDRA = 0x40; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x04; DDRD = 0x00; } #pragma interrupt_handler int0_isr:2 void int0_isr(void)

LED_COM; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); MCUCR = 0x00; GICR = 0x40; TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } void main() { init_devices(); while(1)

基于51单片机的外部中断实例

51单片机一般有两个外部中断输入端,并允许外部中断源以低电平或负边沿两种触发方式输入中断请求信号。本例就是利用一只按钮,在按下时产生的负边沿触发外部中断。 1 硬件设计 将一只按钮接在外部中断输入0(12脚),八支发光二极管分别接在P0.0~P0.7,其电路如下图所示。 ⒉软件设计 通过按下按钮SW触发外部中断,从而改变发光二极管D1~D8的亮、灭,当第一次按下按钮时,只有D1发光二极管亮;第二次按下按钮时,只有D2发光二极管亮;第三次按下按钮时,只有D3发光二极管亮;……第八次按下按钮时,只有D8发光二极管亮;第九次按下按钮时,D1~D8发光二极管全亮;第十次按下按钮时,D1~D8发光二极管全都不亮;第十一次按下按钮时,只有D1发光二极管亮; 按钮SW触发外部中断,从而控制D1~D8亮灭的详细C51程序如下。 /***************外部中断****************/ #include unsigned char count=0; //外部中断计数 unsigned char F0=0; main(){ F0=0;

IE=0X81;//打开外部中断0和总中断使能或者(EX0=1;EA=1) IT0=1; //标志位清零,开中断 ,边沿激活(或者TCON|=0X01) while(1) { while(F0==0); switch(count%10){ case(0): P0=0XFF;break; case(1): P0=0XFE;break; case(2): P0=0XFD;break; case(3): P0=0XFB;break; case(4): P0=0XF7;break; case(5): P0=0XEF;break; case(6): P0=0XDF;break; case(7): P0=0XBF;break;case(8): P0=0X7F;break; case(9): P0=0X00;break; } F0=0; } } void int_int0() interrupt 0 //外部中断 { count++;F0=1; }

最新单片机课程设计 外部中断控制流水灯变化

单片机课程设计报告 设计题目:外部中断控制流水灯变化 姓名

一.设计目的 通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过P3口的俩管脚P3.2和P3.3第二功能,即外部中断来使CPU响应,达到控制流水灯的目的。 二.设计要求 主程序实现8个灯从P2.0到P2.7依次亮灭,灯与灯 之间间歇约0.5秒.当P3.3口是低电平时,灯从P2.7到P2.0依次亮灭,灯与灯之之间间歇约0.5秒.循环3次返回主程序.当P3.2口是低电平时,灯全灭,当P3.2口是高电平时,返回主程序.当同时使P3.2和P3.3为低电平时,灯全灭,因为外部中断0的优先级高于外部中断1的优先级. 三.MCS-51的硬件结构: 四.P3口的状态 P3口是双功能口,默认为第一功能(通用I/O口),通过编程可设置第二功能。

五.中断传送方式: 中断方式则是在外设为数据传送做好准备之后,就向CPU发出中断请求信号(相当于通知CPU)。CPU接收到中断请求信号之后立即作 出响应,暂停正在执行的原程序(主程序),而转去外设的数据输入输 出服务,待服务完之后,程序返回。CPU再继续执行被中断的原程序。六.外部中断 外部中断是指从单片机外部引脚输入请求信号。输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为 外部中断源,从引脚INT0、INT1输入。 外部中断请求、有两种触发方式:电平触发及跳变(边沿)触发。 这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。七.电路原理逻辑图如下:

P3.3 P3.2 灯亮情况 0 0 全灭 0 1 全灭 1 0 从P2.0到P2.7依次亮灭 1 1 从P2.7到P2.0依次亮灭八.实验硬件电路图如下

单片机外部中断的使用

哈尔滨理工大学荣成学院 单片机原理及应用Protues 仿真实验 班级: 学号: 姓名: 日期:

实验三单片机外部中断的使用 一、实验名称:单片机外部中断的使用 二、实验目的 1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法; 2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法; 3.掌握在Proteus环境下建立文件原理图的方法; 4..实现Proteus与Keil联调软件仿真。 三、使用仪器设备编号、部件及备件 1.实验室电脑; 2.单片机实验箱。 四、实验过程及数据、现象记录 在Proteus 环境下建立如下仿真原理图,并保存为文件;

原理图中常用库元件的名称: 无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51 晶体振荡器:CRYSTAL 电阻:RES 按键:BUTTON 发光二极管:红色LED-RED 绿色LED-GREEN 蓝色LED-BLUE 黄色LED-YELLOW 在Keil环境下建立源程序并保存为.ASM文件,生成.HEX文件;汇编语言参考程序如下:ORG 0000H

LJMP MAIN ORG H ;外部中断0程序入口地址LJMP EXINT0 ORG 0030H MAIN: MOV SP,#60H ;堆栈指针初始化 SETB ;设置外部中断 0 为边沿触发 SETB ;开外部中断0 SETB ;开CPU总中断MOV A,#01H LOOP: MOV P1,A RL A CALL DELAY SJMP LOOP DELAY: MOV R1,# ;延时250ms子程序DL1: MOV R2,# DL2: MOV R3,# DJNZ R3,$ DJNZ R2,DL2 DJNZ R1,DL1 ;延时子程序返回EXINT0: PUSH PUSH CLR RS1 SETB RS0 MOV R0,# LP: MOV P1,#0FFH CALL DELAY MOV P1,#00H CALL DELAY DJNZ R0,LP POP PSW POP ACC ;中断返回END 将以上程序补充完整,流水时间间隔,闪烁时间间隔为250ms。C51语言参考程序: #include #include #define uchar unsigned char #define uint unsigned int void delay_ms(uint x) { uint i; uchar j; for(i=0;i

单片机外部中断详解

单片机外部中断详解 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON)? ? IT0:外部中断0触发方式控制位? 当IT0=0时,为电平触发方式(低电平有效)? 当IT0=1时,为边沿触发方式(下降沿有效)? IT1:外部中断1触发方式控制位? 当IT1=0时,为电平触发方式(低电平有效)? 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE)? ?

EX0:外部中断0允许位;? EX1:外部中断1允许位;? EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0? 2、开对应的外部中断,即EX0=1或EX1=1;? 3、开总中断,即EA=1;? 4、等待外部设备产生中断请求,即通过P3.2,P.3.3口连接外部设备产生中断? 5、中断响应,执行中断服务函数 三.程序编写 要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。? 目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。

#include#define uint unsigned int #define uchar unsign ed char uchar code dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x f8,0x80,0x90};uint num; void main() { EA=1; //开总中断 IT0=1; //下降沿触发 IT1=0; //低电平触发 EX0=1; //外部中断0允许 EX1=1; //外部中断1允许 while(1) { P0=dat[num%10]; } } void plus() interrupt 0???? //外部中断0 {

单片机外部中断实验(附C语言程序)复习进程

单片机外部中断实验(附C语言程序)

单片机外部中断实验(附c程序) 一、实验目的 掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。 。 二、实验内容 8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能:(1)合上、P3.3断开时LED1闪烁 (2)P3.2断开、P3.3合上时LED2闪烁 (3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁 (4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁 试编写C语言和汇编语言程序 使用自然优先级就可以 也可 XO 高级X1低级PX0=1 PX1=0 四、实验电路 五、参考程序(自己完成)

C程序: Include Sbit P2_0=P2^0; Sbit P2_1=P2^1; Sbit P3_2=P3^2; Sbit P3_3=P3^3; void delay02s(void) //延时0.2秒子程序{ unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--); } Void main { EA=1; EX0=1; EX1=1 ; ITO=1 ; IT1=1 ; PX0=1; PX1=0; While(1) ; } Void int0(void) interrupt 0 { if(!P3_2) { While(1) { P2_0=1; delay02s(); P2_0=0; delay02s(); } } } Void int1(void) interrupt 2 { if(!P3_3) {

单片机外部中断详解及程序

单片机外部中断详解及程序 单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态。比如一个电子时钟,它会按时、分、秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来。在不需要对它进行调校的时候它不需要外部干预,自主封闭地运行。如果这个时钟足够准确而又不掉电的话,它可能一直处于这种封闭运行状态。但事情往往不会如此简单,在时钟刚刚上电、或时钟需要重新校准、甚至时钟被带到了不同的时区的时候,就需要重新调校时钟,这时就要求时钟就必须具有调校功能。因此单片机系统往往又不会是一个单纯的封闭系统,它有些时候恰恰需要外部的干预,这也就是外部中断产生的根本原由。 实际上在第二个示例演示中,就已经举过有按键输入的例子了,只不过当时使用的方法并不是外部中断,而是用程序查询的方式。下面就用外部中断的方法来改写一下第二个示例中,通过按键来更改闪烁速度的例子(第二个例子)。电路结构和接线不变,仅把程序改为下面的形式。 #include ;

unsigned int t=500; //定义一个全局变量t,并设定初始值为500次 //===========延时子函数,在8MHz晶振时约 1ms============= void delay_ms(unsigned int k) { unsigned int i,j; for(i=0;i

51单片机外部中断实验

实验6 外部中断实验 (仿真部分) 一、实验目的 1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。 二、实验内容 在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。P1.0~ P1.3接LED灯,以显示计数信号。 三、实验说明 编写中断处理程序需要注意的问题是: 1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。 3.INT0和INT1分别接单次脉冲发生器。P1.0~ P1.3接LED灯,以查看计数信号. 四、硬件设计 利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。设计出如下的硬件电路。晶振频率为12MHz。 五、参考程序框图 开始 设置有关中断控制寄存器 开外中断INT0、INT1 设置P1.0~ 3初始状态 显示循环等待中断 INT0中断入口 计数加一 保护现场 恢复现场 中断返回

主程序框图INT0中断处理程序框图 实验6 外部中断实验 (实验箱部分) 1.实验目的 认识中断的基本概念 学会外部中断的基本用法 学会asm和C51的中断编程方法 2.实验原理 图按键中断 【硬件接法】 P1.1控制LED,低电平点亮 P3.3/INT1接按键,按下时产生低电平 【运行效果】 程序工作于中断方式,按下按键K2后,LED点亮,1.5秒后自动熄灭。 8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。/INT0和/INT1中断的入口地址分别是0003H和0013H。 TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。在中断服务程序里要等待其变高后才能返回主程序,否则会再次触发中断,产生不必要的麻烦。 如果外部的中断请求信号产生后可能长时间后才能撤销,则为了避免在中断服务程序里长时间无谓等待,可以选择下降沿触发。下降沿触发是“一次性”的,每次中断只会有1个下降沿,因此中断处理程序执行完后可以立即返回主程序,而不必等待中断请求信号恢复为高电平,这是一个重要的技巧。 3. 实验步骤 ●参考实验例程,自己动手建立Keil C51工程。注意选择CPU类型。Philips半导体的 P89V51RB2。 ●编辑源程序,编译生成HEX文件。 ●ISP下载开关扳到“00”,用Flash Magic软件下载程序HEX文件到MCU BANK1,运行。 运行Flash Magic软件。各步骤操作如下:

单片机外部中断实验(附C语言程序)

单片机外部中断实验(附c程序) 一、实验目的 掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。 。 二、实验内容 8051C51单片机接一个发光二极管LED1、接一个发光二极管LED2,接一个开关、接一个开关要求实现以下功能: (1)合上、断开时LED1闪烁 (2)断开、合上时LED2闪烁 $ (3)合上后(不断开)再合上,LED1闪烁LED2不闪烁 (4)合上后(不断开)再合上,LED2不闪烁LED1闪烁 试编写C语言和汇编语言程序 使用自然优先级就可以 也可 XO 高级X1低级PX0=1 PX1=0 四、实验电路 $ 五、参考程序(自己完成) C程序: Include<> Sbit P2_0=P2^0; Sbit P2_1=P2^1; Sbit P3_2=P3^2; Sbit P3_3=P3^3; void delay02s(void) //延时秒子程序 { unsigned char i,j,k; for(i=20;i>0;i--)

for(j=20;j>0;j--) for(k=248;k>0;k--); } ; Void main { EA=1; EX0=1; EX1=1 ; ITO=1 ; IT1=1 ; PX0=1; ! PX1=0; While(1) ; } Void int0(void) interrupt 0 { if(!P3_2) { While(1) { P2_0=1; delay02s(); P2_0=0; delay02s(); } 。 } } Void int1(void) interrupt 2 { if(!P3_3) { While(1) { P2_1=1; delay02s(); P2_1=0; delay02s(); } ; }

51单片机外部中断详解

一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON) IT0:外部中断0触发方式控制位 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IT1:外部中断1触发方式控制位 当IT1=0时,为电平触发方式(低电平有效) 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE) EX0:外部中断0允许位; EX1:外部中断1允许位; EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0

2、开对应的外部中断,即EX0=1或EX1=1; 3、开总中断,即EA=1; 4、等待外部设备产生中断请求,即通过,口连接外部设备产生中断 5、中断响应,执行中断服务函数 三.程序编写 要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。 目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。 #include<>#define uint unsigned int #define uchar unsigned char uchar code dat[]={0xc0, 0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uint num; void main() { ! EA=1; //开总中断 IT0=1; //下降沿触发 IT1=0; //低电平触发 EX0=1; //外部中断0允许 EX1=1; //外部中断1允许 while(1) { P0=dat[num%10]; } } { void plus() interrupt 0//外部中断0

单片机外部中断实验

单片机外部中断实验 Document number【980KGB-6898YT-769T8CB-246UT-18GG08】

实验6 外部中断实验 (仿真部分) 一、实验目的 1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。 二、实验内容 在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。P1.0~ P1.3接LED 灯,以显示计数信号。 三、实验说明 编写中断处理程序需要注意的问题是: 1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。 3.INT0和INT1分别接单次脉冲发生器。P1.0~ P1.3接LED灯,以查看计数信号. 四、硬件设计 利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。设计出如下的硬件电路。晶振频率为12MHz。 五、参考程序框图 1.实验目的 学会asm和C51 2.实验原理 【硬件接法】 控制LED,低电平点亮 INT1接按键,按下时产生低电平 【运行效果】 程序工作于中断方式,按下按键K2后,LED点亮,秒后自动熄灭。 8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。/INT0和/INT1中断的入口地址分别是0003H和0013H。 TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。在中断服务程序里要等待其变高后才能返回主程序,否则会再次触发中断,产生不必要的麻烦。

实验四 单片机外部中断实验

实验四单片机外部中断实验 一、实验目的 1.理解单片机AT89C51的中断原理及其中断过程。 2.用proteus设计、仿真AT89C51单片机的外部中断。 外部中断就是单片机AT89C51的重要功能,本实验用AT89C51单片机外部中断功能改变数码管的显示状态。当无外部中断0时,主程序运行状态为七段数码管的a~g段依次点亮,不断循环;当有外部中断0(单片机P3、2脚上有下降沿电压)输入时,立即产生中断,转而执行中断服务程序,数码管显示状态为“8”亮灭闪烁显示,亮灭闪烁显示8次以后,返回主程序原断点处继续执行,数码管继续段点亮的循环显示。 1 ③7SEG-COM-AN-GRN:绿色发光二极管; ④CAP、CAP-ELEC:电容、电解电容; ⑤CRYSTAL:晶振; ⑥BUTTON:按钮。 2、放置元器件

3、放置电源与地 4、连线 5、元器件属性设置 6、电气检测 四、源程序设计、生成目标代码文件 1、流程图 2、源程序设计 通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC33、ASM。 通过菜单“sourc e→DZC34、ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。 程序编辑好后,单击按钮存入文件DZC34、ASM。 3、源程序编译汇编、生成目标代码文件 通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。若编译失败,可对程序进行修改调试直至汇编成功。 五、PROTEUS仿真 1、加载目标代码文件 2、全速仿真 单击按钮,启动仿真。 3、仿真调试 (1)带断电仿真

c51单片机t0外部中断

#include #include void delay_ms(unsigned int x) //误差0us { unsigned char a,b,c; for(c=x;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void main(void) { ET0=1;//外部中断0、1下降沿中断 ET1=1; EX0=1; EX1=1; EA=1; while(1) P0=0x00; // P1的8个LED,高电平亮} void int0_int() interrupt 0 { unsigned char i ,j, tmp=0x01; for(i=3; i>0; i--) for(j=8; j>0; j--) { P0=tmp; delay_ms(500); //500ms闪烁 tmp = _crol_(tmp,1); } } void int1_int() interrupt 2 { unsigned char i ,j, tmp=0x80; for(i=3; i>0; i--) for(j=8; j>0; j--) { P0=tmp; delay_ms(500); //500ms闪烁 tmp = _cror_(tmp,1); } }

#include sbit S1=P3^2; sbit S2=P3^3; main() { P1=0xff; while(1) { while(S1&&S2); if(S1==0){while(S1==0); P1<<=1;} if(S2==0){while(S2==0); P1>>=1;P1|=0x80;} } }

3实验三 单片机外部中断的使用

姓名:学号:日期: 实验三单片机外部中断的使用 一、实验名称:单片机外部中断的使用 二、实验目的 1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法; 2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法; 3.掌握在Proteus环境下建立文件原理图的方法; 4.实现Proteus与Keil联调软件仿真。 三、使用仪器设备编号、部件及备件 1.实验室电脑; 2.单片机实验箱。 四、实验过程及数据、现象记录 1.在Proteus环境下建立如下仿真原理图,并保存为文件; 原理图中常用库元件的名称: 无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51 晶体振荡器:CRYSTAL 电阻:RES 按键:BUTTON 发光二极管:红色LED-RED 绿色LED-GREEN 蓝色LED-BLUE 黄色LED-YELLOW 2.在Keil环境下建立源程序并保存为.ASM文件,生成.HEX文件; 参考程序如下: ORG 0000H LJMP MAIN ORG 0003H ;外部中断0程序入口地址 LJMP EXINT0 ORG 0030H

MAIN: MOV SP,#60H ;堆栈指针初始化 SETB it0 ;设置外部中断0为边沿触发 SETB ex0 ;开外部中断0 SETB ea ;开CPU总中断 MOV A,#01H LOOP: MOV P1,A RL A CALL DELAY SJMP LOOP DELAY: MOV R1,# 10 ;延时250ms子程序 DL1: MOV R2,# 100 DL2: MOV R3,# 125 DJNZ R3,$ DJNZ R2,DL2 DJNZ R1,DL1 ;延时子程序返回 EXINT0: PUSH ret PUSH acc CLR RS1 SETB RS0 MOV R0,# psw LP: MOV P1,#0FFH CALL DELAY MOV P1,#00H CALL DELAY DJNZ R0,LP POP PSW POP ACC reti ;中断返回 END 将以上程序补充完整,流水时间间隔,闪烁时间间隔为250ms。 3.将.HEX文件导入仿真图,运行并观察结果; 4.利用Keil软件将程序下载至实验箱,进行硬件仿真,观察实验结果。 五、实验数据分析、误差分析、现象分析 现象:利用单片机外部中断0,使用边沿触发方式,当P3.2所接按键按下时,流水灯停止流水,闪烁两次,按键抬起时,恢复原来的流水状态。 六、回答思考题 1.若把边沿触发改为电平触发,有何不同? 2.如何让流水灯保持原来的状态继续流水?

单片机外部中断实验报告

实验三外部中断 实验报告 班级: 学号: 姓名:教师:

一、实验目的 1、掌握单片机外部中断的原理及过程。 2、掌握单片机外部中断程序的设计方法。 3、掌握单片机外部中断时中断方式的选择方法。 、实验内容 如下图所示, P3.2 设为输入, P2 设为输出位,连有 8 个发光二极管 D1~D8 。每当发生外部中断时 ,发光二极管以向下流水灯的方式点亮。分别选择边沿触发外部中断放是和电平 触发外部中断方式两种。 三、编程提示 1、 P3 口是 8 位准双向口,具有双重功能: 第一功能和 P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下: P3.0 RXD 串行输入口 TXD 串行输出口 P3.1

P3.2INT0 外部中断 0 请求输入线 P3.3INT1 外部中断 1 请求输入线 P3.4T0 定时器 /计数器 T0 外部计数器脉冲输入线 P3.5T1 定时器 /计数器 T1 外部计数器脉冲输入线 P3.6WR 外部数据存贮器写脉冲输出线 P3.7RD 外部数据存贮器读脉冲输出线 2、各中断服务程序入口地址: 外部中断 003H 定时器 /计数器 T1 溢出中断0BH 外部中断 1 13H 定时器 /计数器1BH 串行口中断 23H 3、外部中断的产生条件 中断允许寄存器 IE : (1)外部中断源允许中断(中断 0: EX0=1 ;中断 1:EX1=1 )。 (2)CPU 开中断( EA=1 )。 (3)外部中断方式 CPU 发出中断申请。 4、外部中断方式的选择 控制 TCON : IT0 是选择文字则外部中断 0 请求( INT0 )边沿触发方式或电平触发方式的控制位。前一方式 IT0=1 ,后一方式 IT0=0 。 IT1 是选择外部中断 1 请求( INT1 )为边沿触发方式或电平触发方式的控制位。前一方式 IT1=1 ,后一方式 IT1=0 。 当 8031 复位后, TCON 被清 0。 5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的 电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。边沿

相关文档
最新文档