51单片机中断详解(中)

一.外部中断相关寄存器

1.定时器/计数器控制寄存器控制寄存器(TCON)
这里写图片描述
IT0:外部中断0触发方式控制位
当IT0=0时,为电平触发方式(低电平有效)
当IT0=1时,为边沿触发方式(下降沿有效)
IT1:外部中断1触发方式控制位
当IT1=0时,为电平触发方式(低电平有效)
当IT1=1时,为边沿触发方式(下降沿有效)

2.中断允许控制寄存器(IE)
这里写图片描述
EX0:外部中断0允许位;
EX1:外部中断1允许位;
EA :CPU中断允许(总允许)位。

二.外部中断的处理过程

1、设置中断触发方式,即IT0=1或0,IT1=1或0
2、开对应的外部中断,即EX0=1或EX1=1;
3、开总中断,即EA=1;
4、等待外部设备产生中断请求,即通过P3.2,P.3.3口连接外部设备产生中断
5、中断响应,执行中断服务函数

三.程序编写

要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。
目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。

#include<reg51.h>
#define uint unsigned int 
#define uchar unsigned char 
uchar code dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint num;

void main()
{
    EA=1;      //开总中断
    IT0=1;     //下降沿触发
    IT1=0;     //低电平触发
    EX0=1;     //外部中断0允许
    EX1=1;     //外部中断1允许
    while(1)
    {
        P0=dat[num%10];
    }
}

void plus() interrupt 0     //外部中断0
{   
  EX0=0;  
  num++;  
  EX0=1;
}

void minus() interrupt 2   //外部中断1
{
  EX1=0;
  num--;
  EX1=1;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值