• day05 51单片机-外部中断、定时器


    1 外部中断——按键控制LED亮灭

    1.1 需求描述

    本案例通过检测SW3触发的外部中断实现P00对应LED的亮灭。

    1.2 硬件设计

    1.2.1 中断简介

    单片机中断是一种重要的计算机编程概念,用于处理在程序执行过程中突然发生的事件或条件。这些事件可以是外部硬件触发的,如按下按钮、传感器数据到达或定时器溢出等,也可以是软件内部条件满足时触发的,如某个特定的计算结果或状态变化,如图所示:

    在这里插入图片描述

    中断的作用在于允许单片机暂时中止当前执行的程序,跳转到事先定义好的中断服务程序,以处理特定事件,然后再返回到原来的程序流程。这种机制使单片机能够实时响应外部事件,提高了系统的灵活性和响应能力。

    查看手册可知,我们用的STC89C52共有8个中断,所有中断均可设置4个优先级,高优先级的中断可以打断低优先级的中断;当两个中断平级时,将按照查询顺序来决定哪一个先被响应。

    (1)单片机中断系统结构如下

    在这里插入图片描述

    (2)所有8个中断按照查询顺序列表如下

    在这里插入图片描述

    (3)中断触发条件

    在这里插入图片描述

    (4)上表中涉及的寄存器

    在这里插入图片描述

    1.2.2 中断初始化

    在这里插入图片描述

    1.2.3 软件设计

    #include  //包含STC89C52的头文件
    
    #define LED0 P00
    
    void Init_INT0()
    {
       
        // 打开中断总开关
        EA = 1;
    
        // 打开外部中断0开关
        EX0 = 1;
    
        // 配置外部中断为下降沿触发
        IT0 = 1;
    }
    
    void main()
    {
       
        Init_INT0();
        while (1);
    }
    
    /**
     * @brief 中断函数中打开LED0,代表当触发中断时,LED0会打开。
     *        根据我们之前的设置,当按下SW3时,P32为低电平,此时LED0打开。
     *
     *        interrupt 0表示0号中断触发时执行该函数的逻辑
     *        如果用C语言编程,中断查询次序就是中断号
     */
    void INT0_Func() interrupt 0
    {
       
        // 中断中打开LED0
        LED0 = ~LED0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    2 定时器中断——闪烁LED

    2.1 需求描述

    本案例通过时钟中断实现P00对应的LED 0,1秒1次闪烁。

    2.2

  • 相关阅读:
    2022年7月最新贴吧防删图制作教学视频
    Gavin Wood 演讲全文:建设更具韧性以应变化的 Polkadot
    常见的文件系统格式
    rust模式
    正则表达式
    域名信息收集
    (附源码)springboot托育教案系统 毕业设计 224545
    6.套餐管理业务开发
    使用Spring Data JPA 本机查询
    Python Matplotlib legend函数:为每条折线添加图例
  • 原文地址:https://blog.csdn.net/gxs508843279/article/details/138091984