51单片机外部中断使用示例程序

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机外部中断使用示例程序相关的知识,希望对你有一定的参考价值。

51单片机外部中断使用示例程序


  • 本实例来源以STC89演示示例,为了方便初学者更好的阅读,直接将其贴出来。
  • 首先分享一份《 STC单片机资源一览表》

你也可以从https://www.stcisp.com/下载到,不过不能编辑只能看。如果需要作为个人阅读使用还是有办法的,将其另存为.xlsx,然后修改为后缀为.zip,或者.rar格式后,再进行解压进行处理,如何处理情况视频:
https://www.ixigua.com/6850385483143315981

【金山文档】 STC单片机资源一览表
https://kdocs.cn/l/ca0WAFHo6sUY

示例一(演示外部中断0的下降沿中断)

#include "reg51.h"
//External interrupt0 service routine
void exint0() interrupt 0 //INT0, interrupt 0 (location at 0003H)

P0++;

void main()

 IT0 = 1; //set INT0 interrupt type (1:Falling 0:Low level)
 EX0 = 1; //enable INT0 interrupt
 EA = 1; //open global interrupt switch
 
 while (1);

示例二(演示外部中断0的下降沿中断唤醒掉电模式)

#include "reg51.h"
#include "intrins.h"
//External interrupt0 service routine
void exint0( ) interrupt 0 //INT0, interrupt 0 (location at 0003H)


void main()

IT0 = 1; //set INT0 interrupt type (1:Falling 0:Low level)
 EX0 = 1; //enable INT0 interrupt
 EA = 1; //open global interrupt switch
 while (1)
 
 INT0 = 1; //ready read INT0 port
 while (!INT0); //check INT0
 _nop_();
 _nop_();
 PCON = 0x02; //MCU power down
 _nop_();
 _nop_();
 P1++;
 

示例三(演示外部中断1的下降沿中断)

#include "reg51.h"
//External interrupt1 service routine
void exint1() interrupt 2 //INT1, interrupt 2 (location at 0013H)

P0++;

void main()

 IT1 = 1; //set INT1 interrupt type (1:Falling only 0:Low level)
 EX1 = 1; //enable INT1 interrupt
 EA = 1; //open global interrupt switch
 
 while (1);

示例四(演示外部中断1的下降沿中断唤醒掉电模式)

#include "reg51.h"
#include "intrins.h"
//External interrupt0 service routine
void exint1( ) interrupt 2 //INT1, interrupt 2 (location at 0013H)


void main()

 IT1 = 1; //set INT1 interrupt type (1:Falling 0:Low level)
 EX1 = 1; //enable INT1 interrupt
 EA = 1; //open global interrupt switch
 while (1)
 
 INT1 = 1; //ready read INT1 port
 while (!INT1); //check INT1
 _nop_();
 _nop_();
 PCON = 0x02; //MCU power down
 _nop_();
 _nop_();
 P1++;
 

中断查询次序号就是中断号

void Int0_Routine(void) interrupt 0;
void Timer0_Rountine(void) interrupt 1;
void Int1_Routine(void) interrupt 2;
void Timer1_Rountine(void) interrupt 3;
void UART_Routine(void) interrupt 4;
void Timer2_Routine(void) interrupt 5;
void Int2_Routine(void) interrupt 6;
void Int3_Routine(void) interrupt 7;

以上是关于51单片机外部中断使用示例程序的主要内容,如果未能解决你的问题,请参考以下文章

51单片机学习笔记5 -- 外部中断

51单片机学习笔记5 -- 外部中断

51单片机外部中断0函数执行时,又来了个外部中断0信号

51单片机中断优先级讲解以及示例说明

请教一个关于51单片机外部中断的问题

单片机C51的中断程序应该怎么写