精华内容
下载资源
问答
  • 一、实验内容 通过P1.0端口以1HZ的频率输出信号,...进一步掌握8051外部中断的使用和编程方法 了解七段数码显示数字的原理 掌握用一个段锁存器、一个位锁存器同时显示多位数字的技术 三、实验设备 DELL台式机 、k

    一、实验内容

    通过P1.0端口以1HZ的频率输出信号,使用该信号点亮一个LED指示灯,并将信号接入到INT1,统计中断的次数。将中断的次数通过两个七段数码管采用十进制显示出来。当超过99次后,清零并重新计数。

    二、实验目的

    进一步掌握8051外部中断的使用和编程方法

    了解七段数码显示数字的原理

    掌握用一个段锁存器、一个位锁存器同时显示多位数字的技术

    三、实验设备

    DELL台式机 、keilC51版本7、proteus版本6

    四、实验电路图


    五、程序流程图


    六、程序源码  

    #include<reg51.h>
    #include<intrins.h>
    #define uchar unsigned char
    #define uint unsigned int
    //0~9的数字编码,最后一位黑屏
    uchar code DSY_CODE[]=
    { 0x3f,0x06,0x5b,0x4f,
      0x66,0x6d,0x7d,0x07,
      0x7f,0x6f
    };
    //计数器值分解后的各代显数位
    uchar Display_Buffer[]={0,0};
    uint Count=0;
    uint Number=0;
    sbit P1_0=P1^0;
    void main()
    {	
    EA=1;ET0=1;EX1=1;//打开中断总控,T0允许,INT1允许
    TMOD=0x00;//设置T0工作方式0
    IT1=1;//INT1下降沿触发
    TH0=(8192-5000)/32;//5ms定时
    TL0=(8192-5000)%32;
    TR0=1;//启动TR0
    while(1);
    }
    void LED_Flash()interrupt 1
    {
    TH0=(8192-5000)/32;//5ms定时
    TL0=(8192-5000)%32;
    if(++Count==100)//5ms*100=0.5s,实现0.5s定时开关LED
    {
    P1_0=~P1_0;
    Count=0;
    }
    }
    void EX_INT1()interrupt 2
    {
    //显示数码管
    Number=(Number+1)%100;
    Display_Buffer[1]=Number/10;
    Display_Buffer[0]=Number%10;
    P0=DSY_CODE[Display_Buffer[1]];
    P2=DSY_CODE[Display_Buffer[0]];
    }  
    




    展开全文
  • 外部中断实验

    2019-10-02 05:37:57
    实验4 外部中断实验 一、实验目的 理解中断的基本概念。 掌握STM32的中断源及中断优先级。 掌握STM32外部中断技术的基本使用方法。 掌握STM32中断处理程序的编程方法。 二、实验内容 硬件设计原理图如下图1所...

    实验4 外部中断实验

    一、实验目的

    理解中断的基本概念。

    掌握STM32的中断源及中断优先级。

    掌握STM32外部中断技术的基本使用方法。

    掌握STM32中断处理程序的编程方法。

    二、实验内容

    硬件设计原理图如下图1所示:LED的连接在上一节已经介绍过了,在STM32开发板上的按键KEY0是接在PE4上,KEY1是接在PE3上的,KEY2是连在PE2上,WK_UP接在PA0上。

                           

     

     

    三、实验预备知识

    中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51单片机时代,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断,但是在STM32中,中断数量大大增加,而且中断的设置也更加复杂。今天就将来探讨一下关于STM32中的中断系统。

    ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。

    STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但是STM32中只使用4位,高4位有效),每4个通道的8位中断优先级控制字构成一个32位的优先级寄存器。68个通道的优先级控制字至少构成17个32位的优先级寄存器。

    STM32的每个IO口都可以作为中断输入,这点很好用。要把IO口作为外部中断输入,有以下几个步骤:

    1)初始化IO口为输入。

    这一步设置你要作为外部中断输入的IO口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。否则可能导致中断不停的触发。在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。

    2)开启IO口复用时钟,设置IO口与中断线的映射关系。

    STM32的IO口与中断线的对应关系需要配置外部中断配置寄存器EXTICR,这样我们要先开启复用时钟,然后配置IO口与中断线的对应关系。才能把外部中断与中断线连接起来。

    3)开启与该IO口相对的线上中断/事件,设置触发条件。

    这一步,我们要配置中断产生的条件,STM32可以配置成上升沿触发,下降沿触发,或者任意电平变化触发,但是不能配置成高电平触发和低电平触发。这里根据自己的实际情况来配置。同时要开启中断线上的中断,这里需要注意的是:如果使用外部中断,并设置该中断的EMR位的话,会引起软件仿真不能跳到中断,而硬件上是可以的。而不设置EMR,软件仿真就可以进入中断服务函数,并且硬件上也是可以的。建议不要配置EMR位。

    4)配置中断分组(NVIC),并使能中断。

    这一步,我们就是配置中断的分组,以及使能,对STM32的中断来说,只有配置了NVIC的设置,并开启才能被执行,否则是不会执行到中断服务函数里面去的。关于NVIC的详细介绍,请参考前面章节。

    5)编写中断服务函数。

    这是中断设置的最后一步,中断服务函数,是必不可少的,如果在代码里面开启了中断,但是没编写中断服务函数,就可能引起硬件错误,从而导致程序崩溃!所以在开启了某个中断后,一定要记得为该中断编写服务函数。在中断服务函数里面编写你要执行的中断后的操作。

    通过以上几个步骤的设置,我们就可以正常使用外部中断了。

    四、实验步骤

    1. 课下完成作业

    按照教材42页-55页,新建工程,命名为“INT+你的学号”,文件夹名和工程名都为“INT+你的学号”(所需的“库函数、HARDWARE和SYSTEM文件夹”在本次实验文件夹中,自已添加即可)。工程建好后,按照教材153页,编写好main()主函数,之后编译。

    1. 2.         实验室完成

    (1)           在课下完成的工程中修改代码,让串口向PC机打印你的“学号姓名”,之后编译、下载到开发板,看现象。

     

    (2)           修改代码实现如下功能

    • 系统开机后,LED0,LED1闪两次,蜂鸣器响一声后停止;
    • 设置中断优先级分组为组3;
    • 按键KEY0抢占优先级为2,响应优先级为0,控制蜂鸣器,按一次,叫一声;
    • 按键KEY1抢占优先级为3,响应优先级为1,控制LED0,按一次,LED0亮一次,再按一次LED0灭;
    • 按键KEY2抢占优先级为3,响应优先级为1,控制LED1,按一次,LED1闪一次;
    • 按键WK_UP抢占优先级为2,响应优先级为1,控制LED0和LED1反转一次;
    • 问KEY0、KEY1、KEY2、WK_UP的中断优先级顺序为?

    KEY0>WK_UP>KEY1=KEY2  (KEY2 KEY2看谁先按下谁优先)

    • KEY0、KEY1、KEY2、WK_UP分别对应的外部中断线为?

    KEY0对于外部中断线 EXTI4

    KEY1对于外部中断线 EXTI3

    KEY2对于外部中断线 EXTI2

    WK_UP 对于外部中断线 EXTI0

    (3)           完成下列问题

    假设KEY3接在PE6上,KEY4接在PE7上,输入方式配置成上拉输入,并分别控制LED0和LED1,每按一次各反转一次。

    • 按键初始化代码KEY_Init(void):

    答:

     

       void  KEY_Init(void)

    {

    GPIO_InitTypeDef   GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);

               GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;

               GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

               GPIO_Init(GPIOE,&GPIO_InitStructure);

    }

     

    • 中断初始化代码EXTIX_Init(void):

    答:

               void EXTIX_Init(void)

              {

               KEY_Init();

               EXTI_InitTypeDef   EXTI_InitStructure;

               NVIC_InitTypeDef   NVIC_InitStructure;

              

               RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

              

           //GPIOE.6  KEY3

               GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource6);

                    EXTI_InitStructure.EXTI_Line=EXTI_Line6;    

                             EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;      

                             EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

                             EXTI_InitStructure.EXTI_LineCmd = ENABLE;

                             EXTI_Init(&EXTI_InitStructure);     

     

                 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                

      //优先级

              

                     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        

                   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;                                          

                  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                    

                  NVIC_Init(&NVIC_InitStructure);    

     

      

           //GPIOE.7  KEY3

               GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource6);

                    EXTI_InitStructure.EXTI_Line=EXTI_Line7;    

                             EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;      

                             EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

                             EXTI_InitStructure.EXTI_LineCmd = ENABLE;

                             EXTI_Init(&EXTI_InitStructure);     

     

                 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                

      //优先级

                     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        

                   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;                                          

                   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                  

                   NVIC_Init(&NVIC_InitStructure);   

     

    • 中断服务程序函数名为?

    答:

    void EXTI9_5_IRQHandler(void)

     

    • 编写中断服务程序:

    答:

    void EXTI9_5_IRQHandler(void)

    {

       If (EXTI_GetITstatus(EXTI_Line6)==Set)

     {

    delay_ms(10);

      if(KEY6==1)

       {

       LED0 =!LED1;

    }

                        EXTI_ClearITPendingBit(EXTI_Line6);

    }

     

    If (EXTI_GetITstatus(EXTI_Line7)==Set)

     {

      delay_ms(10);

    if(KEY7===1)

    {

       LED1 =!LED1;

    }

                       EXTI_ClearITPendingBit(EXTI_Line7);

    }

    }

     

    • 查看“STM32中文参考手册.pdf”第132-134页,根据“其它STM32F10XXX产品向量表”。

    ü     说明STM32F10xxx有多少个中断源?

    答:  73

     

    ü     EXTI9_5、和EXTI15_10的中断入口地址是多少?

    答: 0x0000_009C

         0x0000_00E0

     

    转载于:https://www.cnblogs.com/zhaocundang/p/5347393.html

    展开全文
  • 实验外部中断实验

    千次阅读 2019-01-18 11:01:23
    实验外部中断实验 一、实验要求 用单次脉冲申请中断,在中断处理程序中对输出信号进行反转。 二、实验目的 1、学习外部中断技术的基本使用方法。 2、学习中断处理程序的编程方法。 三、实验原理 当89C51的...

    实验一 外部中断实验

    一、实验要求

    用单次脉冲申请中断,在中断处理程序中对输出信号进行反转。

    、实验目的

    1、学习外部中断技术的基本使用方法。

    2、学习中断处理程序的编程方法。

    三、实验原理

    当89C51的CPU正在处理某件事情(如正在执行主程序)时,单片机外部或内部发生的某一事件(如外部设备产生的一个电平变化或脉冲跳沿的变化,或者是片内事件的发生,如计数器的计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。中断服务处理完该事件后,再回到原来被终止的地方,继续原来的工作(如继续执行被中断的主程序),这称为中断。

    而外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。

    四、实验内容

      单片机的INT0和INT1分别接了两个外部中断,当INT0引脚有中断时,点亮发光二极管D1,当INT1引脚有中断时,点亮发光二极管D2。SW1从高电平变为低电平时,点亮发光二极管D1;SW2从高电平变为低电平时,点亮发光二极管D2。调试程序,并运行。观察发光二极管点亮情况

    、实验程序框图

    、实验电路图

    七、实验程序

    ORG  0000H

    AJMP  MAIN

    ORG  0003H

    AJMP  SERVE

    ORG  0013H

    AJMP  SERVE1      

    MAIN:  ORL P1 ,#0FFH ;

    SETB IT0; 

    SETB EX0; 

    SETB IT1; 

    SETB EX1; 

    SETB EA;  

    AJMP $ ;

    SERVE: MOV A,#0F7H

    MOV P1,A

    RETI

    SERVE1: MOV A,#0EFH

    MOV P1,A

    RETI

    八、实验总结

    通过本次实验,我们学习了外部中断技术的基本使用方法,以及学习中断处理程序的编程方法,这为以后学习单片机的其他方面的内容打下了铺垫。

    展开全文
  • 外部中断设计实验

    千次阅读 2013-12-12 12:36:56
    要求:进一步掌握8051外部中断的使用和编程方法,了解七段数码显示数字的原理,掌握用一个段锁存器、一个位锁存器同时显示多位数字的技术 实验题目:通过P1.0端口以1HZ的频率输出信号,使用该信号点亮一个LED指示灯...
    要求:进一步掌握8051外部中断的使用和编程方法,了解七段数码显示数字的原理,掌握用一个段锁存器、一个位锁存器同时显示多位数字的技术

    实验题目:通过P1.0端口以1HZ的频率输出信号,使用该信号点亮一个LED指示灯,并将信号接入到INT1,统计中断的次数。将中断的次数通过两个七段数码管采用十进制显示出来。当超过99次后,清零并重新计数。


    #include<reg51.h>
    sbit P1_0=P1^0;
    sbit P1_7=P1^7;
    unsigned int Count=0;
    code char tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    time0() interrupt 1 using 1	 //T0中断服务
    {
       P1_7=!P1_7;
       TH0=-50000/256;
       TL0=-50000%256;
    }
    
    time1() interrupt 3 using 2		  //T1中断服务
    {
        P1_0=!P1_0;  // 第一次反向亮灯及输出1HZ频率(1s)
    }
    
    void Display()
    {
    
      	 if(Count==100)
    		Count=0;
         P0=tab[Count/10];
         P2=tab[Count%10];
         Count++;
     }
    
     time2() interrupt 2 using 3   //中断调用输出
    {
       Display();
    }
    
    void main()
    {
      P1_7=1;
      P1_0=1;               //保证第一次反向便开始计数
      TMOD=0x61;           //T0方式1定时,方式二计数
      TH0=-50000/256;          //设定计数初值
      TL0=-50000%256;
      TH1=-5;
      TL1=-5;
      IP=0x08;
      EA=1;EX1=1;IT1=1;
      ET0=1;ET1=1;
      TR0=1;TR1=1;
      while(1);
     }
    


    展开全文
  • 中断原理实验心得实验三中断实验 一、实验内容 1.当单片机的INT0端出现负脉冲时,进入相应的中断服务程序,P1口做输出口,接8只发光二极管,通过程序控制发光二极管依次点亮。 2.选择外部中断0接按键INTO到地,...
  • 已知单片机的 P0 口接了一位七段数码管,当无外部中断外部中断 0)时,数码 管按 a~g 段依次点亮,不断循环显示;当有外部中断(按钮被按下,P3.2 有下降沿电 压)时,数码管显示状态改为“8”亮灭闪烁显示,亮灭...
  • 掌握动态扫描与外部中断原理,以实现多位数码管显示及单一按键控制的应用。 2 实验内容 (1) 实现4位数码管的动态扫描。 (2) 设定外部中断,实现按下按键累加计数,并显示于数码管。 实验电路: 3 实现四位数码管的...
  • 4.4外部中断实验 4.4.1实验目的 了解使用外部中断的方法,在中断处理函数中切换LED的状态。 4.4.2 实验讲解 首先根据开发板硬件原理图确定LED与CC2530芯片的连接引脚,如图4-4所示。 图4-4开发板LED和按键原理...
  • 了解外部中断原理 学会单片机外部中断的用法; 2、 实验设备 装有 Linux系统的电脑,已装好SDCC交叉编译环境,并带有Python烧写工具; 51单片机开发板 1 个,USB 数据线 1 根。 3、 实验内容 了解外部中断的概念; ...
  • cc2530之外部中断实验

    2020-02-19 21:13:47
    由图1.1,可以把端口P1_2设置为外部中断的输入引脚 2、查看芯片手册 图1.2 设置P1_2端口为普通io端口 P1SEL &= ~0x04; //设置P1_2为普通io 设置P1_2为输入端口 P1DIR &= ~0x04; //设置P1_2口为输入端口 ...
  • 51开发板:STC89C52最小系统开发板(原理图见附件...开发板是一个最小系统,不能够直接支持外部中断实验。...
  • 【1】正常启动流程 1.设备一上电,中断向量表作为第一段执行程序 2.初始化异常向量表基地址协处理器(默认是0,修改后异常...假设产生中断时,CPU当中正在执行一段程序(正常情况),突然之间产生外部中断,整个C...
  • 实验外部中断(急救车与交通灯)

    千次阅读 2019-01-18 11:02:15
    实验外部中断(急救车与交通灯) 一、实验要求 本实验模拟交通信号灯控制,一般情况下正常显示,有急救车到达时,两个方向交通,信号灯全红,以便让急救车通过。设急救车通过路口时间为10 秒,急救车通过后,交通...
  • //打开外部中断 EA = 1; //打开总中断 } void INT0_ISR() interrupt 0 { EX0 = 0; //关闭外部中断 delay_2ms(5); if(KEY1==0) { unsigned char i; for(i=0;i;i++) { BEEP=1; delay_2ms(250); BEEP=0;...
  • 外部中断

    2008-09-07 20:39:00
    二、实验仪器:ATmage16实验板 一块PC机 一台三、实验原理外部中断通过引脚INT0 与INT1 或PCINT23..0 触发。只要使能了中断,即使引脚INT0与INT1 或PCINT23..0 配置为输出,只要电平发生了合
  • (基于51核的STC12C5A60S2,keil uvision5 mdk 5.25 编译) #include <STC12C5A60S2.h> typedef unsigned char u8; typedef enum { Tim0_L_Int0_H = 1, Tim0_L_Int0_L, ...sbit ...
  • 2、掌握定时/计数器与外部中断工作原理;3、学习设计单片机控制的多位数码管扫描显示电路;4、理解数码管动态显示的原理。二、实验原理AT89C51单片机为控制器,八位7段数码管分别显示小时的十位、小时...
  • 文章目录一、Cortex-M4外部中断实验目的二、实验步骤1.实验原理2.实验步骤总结 一、Cortex-M4外部中断 实验目的 基于STM32MP57A,使用STM32 CubeIDE软件工具完成开发板上K2按键外部中断的方式控制版上LED灯亮灭操作...
  • 外部中断的使用; OLED屏幕的使用; 二、器材 stc8a8k自制核心板; 金属接近传感器; OLED屏幕; 三、原理 金属接近传感器,用的是这种。也可以买其他的,原理差不多 图中,这个传感器的电源是10-30V,但是经过...
  • 外部中断 一、实验目的 二、实验内容 三、实验步骤 四、C代码如下 五、实验结果 六、实验体会 一、实验目的 掌握单片机外部中断的基本使用方法 了解单片机外部中断脉冲触发和电平触发的不同应用 掌握外部...
  • 2、了解单片机外部中断原理 3、了解按键输入原理 二、实验内容 1、完成按键扫描控制流水灯 2、完成按键外部中断控制流水灯 三、实验原理 四、实验电路与程序 1、软件实验一:按键扫描控制流水灯 1)实验要求:读取...
  • STM32——外部中断

    2020-06-16 19:50:00
    外部中断实验(瞎写)  本文以 正点原子 的战舰 为 基础 进行实验实验目标为 按键0 熄灭所有, 按键2点亮led0,led1,按键1 蜂鸣器响,原理图如下: 蜂鸣器:   LED:     按键:    蜂鸣器和LED 正常配置...
  • 实验三:中断实验

    2021-01-06 06:16:57
    实验三:中断实验强调:本文章为新手提供学习参考实验三:中断实验使用的开发板原理图及本次使用的模块数码管备注:中断实验三的代码部分 强调:本文章为新手提供学习参考 实验三:中断实验 编程中使用中断功能来...
  • 1) 通过实验掌握 CC2530 芯片 GPIO 的配置方法,带你一步步走进嵌入式大门 2) 握 Led 驱动电路及开关 Led 的原理 3) 过按键 S1 产生外部中断改变 LED1\LED2\LED3 状态
  • 外部中断(CC2530)

    2020-08-30 23:07:43
    (3)通过按键S1产生外部中断改变LED 二 中断概念 1.CPU在执行当前程序时,由于系统出现了某急需处理的的情况,CPU暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU自动返回到...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 122
精华内容 48
关键字:

外部中断原理实验