外部中断按键

1.什么是中断?

计算机的中断 计算器的中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理 发生的事件,处理完毕后又自动返回原来的程序继续运行,CPU现行运行的程序称为主程序;将能引起中断的事件称为中断源;处理随机事件的程序称为中断服务 子程序。 以接电话为例:正在看书的你是主程序;电话铃声响是中断源;而接电话就是中断服务子程序,也就是 处理“电话铃声响”这个事情。 当接完电话之后,必须重新回到看书状态,计算机中也一样,中断处理完之后,就要回到主程序中,从 被打断的地方接着往下执行。

2.中断有什么优点呢?

中断的优点:试想一下你网上买了一件东西,你是希望东西到了快递员打电话通知你去取 件,还是自己每隔一个小时查询物流状态,发现送达了再去取件呢?肯定是希望快递到了快递员打电话 给你! 单片机处理程序也是如此,外部随时有可能发生的事情如果需要CPU每时每刻去关注则会耗费CPU的资 源,如果外部时间发生了再通知CPU去处理,这样不仅节省了CPU资源还能提高效率,使用中断相当于 是事情发生了再通知CPU去处理,有以下优点: 1. 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率 2. 实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强 3. 可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。

3.中断的过程

 4.中断允许

 5.中断函数代码部分

#include "regx52.h"
#include "intrins.h"
#include "SNG.h" 
#include "delay.h"

sbit KEY1 =P3^1;
sbit KEY2 =P3^0;
sbit KEY3 =P3^2;
int press_cnt=0;
void exti0_init(void)
{
 IT0=1;
 EX0=1;
 EA=1;
 }
void main()
{    
    exti0_init();                                           //外部中断1配置

    while(1)
    {            
if(KEY1 == 0)
{
Delay1_ms(100);
if(KEY1 == 0)
{
press_cnt++;
}
}
Show_Num(press_cnt);
}
}
                            

void exti0() interrupt 0                               //外部中断1中断函数
{
   Delay1_ms(100);
    if(KEY3==0)                                         //再次判断K4键是否按下
        KEY1=!KEY1;                                  //LED1状态翻转
   press_cnt++;
}    

6.延时函数代码部分 

#include "delay.h"
#include "intrins.h"

void Delay1_ms(unsigned int a)
{
  unsigned char i, j;
  for(a;a>0;a--)
 {
    _nop_();
    i = 2;
    j = 199;
    do
    {
     while (--j);
     }while (--i);    
  }
 }

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值