实验四-MCS-51单片机外部中断实验
    实验目的:
    1. 学习MCS-51单片机的外部中断原理和使用方法;
    2. 掌握如何通过硬件中断和软件中断实现MCS-51单片机的响应机制;
    3. 了解MCS-51单片机外部中断的实际应用。
    实验器材:
    MCS-51单片机开发板、按键开关、调试器。
    实验原理:
    MCS-51单片机通过INT0和INT1两个硬件中断引脚实现外部中断。当INT0外部中断线检测到低电平信号时,中断向量为0x0003;当INT1外部中断线检测到低电平信号时,中断向量为0x0013。通过配置中断控制寄存器IE和TCON,可以实现对外部中断的使能、触发方式和优先级等的控制。
    MCS-51单片机还可以通过软件方式实现外部中断,即通过软件方式扫描外部信号,并在检测到信号发生变化时触发相应的中断处理程序。实现软件中断的方法是使用定时器功能,通过定时器中断触发中断服务程序,该程序扫描外部信号,并根据需要触发软件中断。
    实验步骤:
    1. 将开发板上的按键开关连接到开发板的P3.2引脚。按键开关按下时,P3.2引脚被拉低,可以触发外部中断。
    2. 打开Keil μVision5软件,新建工程,选择芯片型号为STC89C52,保存并命名为“Exp4”。
    3. 在主函数中声明中断函数,并在中断函数中打印提示信息。
    4. 在主函数中初始化中断控制寄存器IE和TCON,开启INT0外部中断,并将中断优先级设置为最高。
    5. 在主函数中使用无限循环,来保持程序一直运行,并定时打印提示信息,以验证程序是否正常运行。
    6. 烧录程序到开发板上,先在开发板上不按下按键,观察是否正常打印提示信息。然后按下按键,观察是否触发外部中断,进入中断函数并打印提示信息。
单片机printf函数    实验代码:
    #include<STC89C52.h>
    #include<stdio.h>
    // 定义外部中断0的中断服务函数
    void Interrupt0() interrupt 0
    {
        printf("External interrupt 0 has occured!\n");
    }
    // 打印提示信息
        printf("Program \n");
    while(1)
        {
            // 定时打印提示信息
            printf("Hello!\n");
            delay_ms(1000);
        }
    }
    注意事项:
    1. 写中断程序时,一定要注意将中断函数的声明放在程序开头,否则可能会出现中断无法触发的情况;
    2. 在使用中断相关功能的时候,务必仔细阅读数据手册中的相关章节,以确保正确使用并且避免出现不必要的错误;
    3. 在进行外部中断实验的时候,可以使用按键开关、光敏电阻等外部器件来模拟外部信号的变化,以测试程序的正确性。