第5章单片机的中断系统分析.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章单片机的中断系统分析

     void INT0_ISP() interrupt 0 //外中断0服务函数   {    P1=0x0f; //P1口高4位置0,点亮4个LED   }   void INT1_ISR() interrupt 2 //外中断1服务函数   {    if(P1_0==0) {P1=P10xef;} //点亮VD1    ...    if(P1_3==0) {P1=P10x7f;} //点亮VD4      }   【例5-6】利用优先编码器扩展外部中断。   从例5-5可以看出,利用与门、或门扩展外中断所占端口引脚较多,在实际应用中,还可以采用优先级解码芯片如74LS148,把多个中断源信号作为一个中断。如图5-12所示,在有8个中断源的情况下,经74LS148优先译码后,只占3个I/O引脚,即用3根引脚可分辨8个中断源,从而节省了I/O口资源。 8051 S0 R X 8 +5V D0 A0 A1 A2 G 74LS148 P0.0 P0.1 P0.2 INT0 S1 S2 S3 S4 S5 S6 S7 D1 D2 D3 D4 D5 D6 D7 图5-12 利用优先编码器扩展外部中断的电路   程序代码如下:   #includereg51.h   unsigned char status; //定义一变量,用来读取P0口状态   void main( )   {    EA=1; //开总中断    EX0=1; //开外中断0    PX0=1; //外中断0高优先级    for( ; ; ) //延时等待中断发生    { ; }   }   void INT0_ISR( ) interrupt 0 //外中断0中断服务函数   {     status=P00x07; //读取P0口低三位状态,不同的值    switch(status) //对应不同的中断源    {       case0: { … //处理中断源0    break;    }    …    case 7:    { … //处理中断源7    break;    }   } }   【例5-7】中断嵌套。 外部中断/INT1触发后,启动计数器0。计数达到10次后停止计数,启动定时器1。由定时器1控制定时,由P1.7输出周期为200ms的方波信号,接收两次中断后关闭方波发生器,P1.7置低。   程序如下:   #includereg51.h   #define uchar unsigned char   uchar date a,b,c;   void interrupt0( ) interrupt 2 using 1 //定义外部中断1   {    a++;   }    void timer0( ) interrupt 1 using 2 //定义计数器0(T0)   {    TL0=0xff;    b++;   }   void time1( ) interrupt 3 using 3 //定义定时器1(T1)   {    TH1=0x06;    c--;   }   sbit P1_7=P1^7;   void mian(void)   {    P1_7=1; //初始化    TCON=0x01; //外部中断为低电平触发方式    TMOD=0x27; //启动定时器1和计数器0,工作方式2    IE=0x8b; //开中断    a=0;    do{ } while(a!=1); //等待外部中断    P1_7=!P1_7; //取反    TL0=0xff; //初值    TH0=0x06; //初值    b=0;    TR0=0; //停止计数器0工作    TR1=1; //启动定时器1      do {    c=0xc8;    do{} while(c!=0); //定时输出方波    P1_7=!P1_7;    }    while(a!=3); //等待两次外部中断    TR1=0; //关定时器1    P1_7=0;    EA=0; //关总中断    EX0=0; //禁止外部中断   }   【例5-8】利用外部中断实现发光二极管的简单控制。   本例将介绍一个中断使

您可能关注的文档

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档