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

  • 格式:docx
  • 大小:85.80 KB
  • 文档页数:2

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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;

}