单片机
返回首页

单片机实验:外部中断按键

2025-08-27 来源:cnblogs

实验内容:

实验大致上就是说:按键不按的时候,灯一直亮,按键按下的时候,灯不亮,报警器响。现在给了汇编语言,要改成c语言,并在proteus里面仿真。


思考与总结:

响应中断请求的条件:

1.总中断允许开关EA=1。

2.中断源的中断允许位为1。

3.中断源发出中断请求。

4.无同级或更高级中断正在被服务。


结合实验,就知道,这里跑到中断子程序的条件,首先总开关打开。然后选择中断请求源,对这个实验来说,也就是选择I N T 0 ‾ overline{INT0}

INT0

外部中断请求0,它的中断允许控制位是E X 0 EX0EX0,我们置1后,就说明允许了外部中断0中断。

我们如果选用跳沿触发,一个机器周期采样到外部中断输入为高,下一个为低,那么中断请求触发器置一,这个时候进入中断子程序。

这个实验是电平触发。

cpu查询到中断请求时,就会进行中断响应(这里假设只是单一中断,如果有不同优先级的中断,那么cpu还要进行判断)。硬件生成一个长调用指令并执行,程序转向中断入口地址,两个中断入口相隔8字节,难以放下中断子程序,此时需要一个跳转指令,转向在其他地址下的子程序中。


实验结果:

汇编语言实现:


     ORG 0000h

     LJMP MAIN//主程序

     ORG 0003h

     LJMP INT0s//中断入口

     ORG 0100h

MAIN: CLR IT0//外部中断请求0为电平触发

      SETB EA//总中断允许

      SETB EX0 //允许外部中断0    

LOOP: CLR P0.0//p0.0是低电平,此时灯亮

      SETB P2.3//p2.3是高电平,此时警报不响

      SJMP LOOP//短转移指令,程序跳到loop函数循环

      ORG 0200h//伪指令

INT0s: SETB P0.0     //p0.0是高电平,此时灯灭

       CLR P2.3     //p2.3是低电平,此时警报响

Delay: MOV R0,#200//延时函数

D1:    MOV R1,#254

D2:    DJNZ R1,D2

       DJNZ R0,D1

       RETI

     END


改成c51语言:


#include

#define uchar unsigned char

sbit key = P3^2;

void delay(unsigned int i)//延时函数

{

    unsigned int j;

    for(;i>0;i--)

        for(j=0;j<333;j++){}

}

void main()//主函数

{

    EA=1;//总中断允许

    EX0=1;//允许外部中断0

    IT0=0;//选择外部中断0为电平触发方式

    while(1)//循环

    {P0=0xfe;}//P0.0口的Led亮

}

void key_scan() interrupt 0 //外部中断0的中断服务函数

{

    if(key==0)//判断是否有按键按下

    {

        delay(10);//延时去抖

        if(key==0)

        {

            P2=0xf7;

            P0=0xff;

            while(!key);//等待按键松开

            P2=0xff;

            P0=0xfe;

        }


    }

}


proteus仿真:


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章