【C51单片机】中断系统之单一外中断应用

简介: 【C51单片机】中断系统之单一外中断应用

为了直接使用C51语言编写申断服务程序,C51讲言中定义了中断函数


由于C51编译器在编译时对声明为中断服务程序的函数自动添加了相应的现场保护、阻断其他中断、返回时自动恢复现场等处理的程序段,因而在编写中断函数时可不必考虑这些问题,减小了用户编写中断函数的烦琐程度。


一般形式


中断服务函数的一般形式为:

函数类型函数名( 形式参数表)interrupt n using n


关键字interrupt 后面的n是中断号,对于AT89S52单片机,n的取值为0-5,编译器从8xn+3处产生中断向量。


单一外中断

下面介绍单一外中断的应用


【例】 在单片机的P1口上接有8只LED。 在外部中断0输人引脚(P3.2)接有一只按钮开关K1。要求将外部中断O设置为电平触发。程序启动时,PI口上的8只LED全亮。每按一次按钮开关 K1,使引脚接地,产生一个低电平触发的外中断请求,在中断函数中,让低4位的LED与高4位的LED交替闪烁5次。然后从中断返回,控制8只LED再次全亮。原理电路及仿真结果如下。0.png

下面我们就一步一步的完成我们的代码。

头文件

实现头文件必不可少。

#include <reg51. h>
#define uchar unsigned char

延时函数

加入延时函数,主要是可以观察的变化。

void Delay( unsigned int i)    //延时函数Delay( ),i 为形式参数、
                                //不能赋初值
{
    unsigned int j;for(;i> 0;i--)
    for(j=0;j<333;j++)            //晶振为12 MHz,j 的选择与晶振频
                                    //率有关
        {
            1;
        }                            //空函数
}

中断函数

接下来就加入我们的中断函数。可以相比之下,中断函数的区别。

void int0( ) interupt 0 using 0        //外中断0的中断函数
{
    uchar m;
    EX0=0;                            //禁止外部中断0中断
    for(m=0;m<5;m++)                //交替闪烁5次
    {
         P1 =0xOf;                    //低4位LED灭,高4位//LED亮
          Delay(400) ;                //延时
            P1= 0xf0;                //高4位LED灭,低4位//LED亮
            Delay( 400);                //延时
            EX0= 1 ;                    //中断返回前,允许外部//中断0中断
    }
}

主函数

void main( )        //主函数
{
    EA=1:        //总中断允许
    EX0=1:        //允许外部中断0中断
    IT0=l;        //选择外部中断0为跳//沿触发方式
    while(1)        //循环
    {
       P1=0;        //PI口的8只LED全亮
    }
}

本例包含两部分,一部分是主程序段,完成了中断系统的初始化,并把8只LED全部点亮。另一部分是中断函数,控制8只LED分两组交替闪烁5次,然后从中断返回。

相关文章
|
2天前
|
传感器 数据采集 监控
LabVIEW单片机的废气再循环EGR检测系统
LabVIEW单片机的废气再循环EGR检测系统
10 0
|
1天前
|
存储
MCS-51单片机的中断源
MCS-51单片机的中断源
7 1
|
1天前
|
存储 移动开发
80C51单片机----数据传送类指令
80C51单片机----数据传送类指令
9 2
|
1天前
|
芯片
AT89S52单片机的最小应用系统
AT89S52单片机的最小应用系统
5 0
|
1天前
|
存储 移动开发 程序员
80C51单片机的七种寻址方式
80C51单片机的七种寻址方式
6 1
|
2天前
|
传感器
基于51单片机的车辆倒车雷达报警系统
该文描述了一个基于51单片机的超声波倒车雷达系统设计,要求包括:2cm至4m的测量范围,3mm精度,集成DS18B20温度传感器以校准声速,使用LCD1602显示距离和温度,具备按键设置预警距离及蜂鸣器报警功能。系统由AT89C51单片机、HC-SR04超声波模块、DS18B20温度模块、报警电路和LCD显示电路组成。文中还展示了Proteus仿真电路图和部分仿真结果分析,包括LCD显示示例和预警距离设置操作。
22 4
|
2天前
|
传感器 数据处理 芯片
基于51单片机的自动售货机系统
该项目设计了一个基于AT89C51单片机的自动售货机系统,采用4×4矩阵键盘选择货物和投入货币,LCD1602液晶显示购物状态和货币状态,LED显示货物选择和出货情况。系统通过货币传感器检测投入的真伪和金额,根据商品价格进行找零。功能包括选择货物、货币识别、自动计算总价、出货与找零。仿真电路展示了从欢迎界面到购物、投币、出货或找零的过程。程序设计中包含了状态定义和延时函数等。
14 0
|
2天前
|
存储
【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)
【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)
|
2天前
|
存储 芯片
【期末不挂科-单片机考前速过系列P11】(第十一章:15题速过串行口的工作原理和应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P11】(第十一章:15题速过串行口的工作原理和应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P10】(第十章:11题中断系统的工作原理及应用)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P10】(第十章:11题中断系统的工作原理及应用)经典例题盘点(带图解析)