基于51单片机的外部中断实例1

来源:互联网 发布:淘宝修容棒排行榜 编辑:程序博客网 时间:2024/05/19 06:16

 

作者:江苏科技大学 机械工程学院 赵长金

51单片机一般有两个外部中断输入端,并允许外部中断源以低电平或负边沿两种触发方式输入中断请求信号。本例就是利用一只按钮,在按下时产生的负边沿触发外部中断。
1  硬件设计

将一只按钮接在外部中断输入0(12脚),八支发光二极管分别接在P0.0~P0.7,其电路如下图所示。点击看大图
作者:江苏科技大学 机械工程学院 赵长金
⒉ 软件设计

通过按下按钮SW触发外部中断,从而改变发光二极管D1~D8的亮、灭,当第一次按下按钮时,只有D1发光二极管亮;第二次按下按钮时,只有D2发光二极管亮;第三次按下按钮时,只有D3发光二极管亮;……第八次按下按钮时,只有D8发光二极管亮;第九次按下按钮时,D1~D8发光二极管全亮;第十次按下按钮时,D1~D8发光二极管全都不亮;第十一次按下按钮时,只有D1发光二极管亮;
       按钮SW触发外部中断,从而控制D1~D8亮灭的详细C51程序如下。

/***************外部中断****************/

#include <reg51.h>

unsigned char count=0;             //外部中断计数

unsigned char F0=0;

main(){

F0=0;

IE=0X81;//打开外部中断0和总中断使能或者(EX0=1;EA=1)

IT0=1;  //标志位清零,开中断 ,边沿激活(或者TCON|=0X01)

  while(1)

{   

while(F0==0);

 switch(count%10){

 case(0): P0=0XFF;break;

 case(1): P0=0XFE;break;

  case(2): P0=0XFD;break;

case(3): P0=0XFB;break; 

case(4): P0=0XF7;break; 

case(5): P0=0XEF;break;

case(6): P0=0XDF;break;

case(7): P0=0XBF;break;case(8): P0=0X7F;break; case(9): P0=0X00;break;

 }

F0=0;

}

}

void int_int0() interrupt 0                 //外部中断

{

count++;F0=1;

}

留稿,希望对大家有帮助!!!呵呵!

作者:江苏科技大学 机械工程学院 赵长金

0 0