51单片机——中断器

51单片机——中断器

中断

   计算机正在执行当前程序,有中断信号到来时,则停止当前程序的执行 ,转到终端服务子函数中执行,执行完返回当前程序执行,该过程称为中断。
   中断源  称为终端类型 ,单片机能够识别的中断种类和个数 
   串口中断 :两个外部中断  定时器中断
   中断服务子函数 :  中断信号产生后,cpu 需要执行的函数
   中断函数 必须烧写到固定地址  以便于终端产生时  能够调用到中断函数
   中断函数 有特殊的修饰符 或者需要注册  

中断服务函数一般形式:
函数类型 函数名(形式参数) interrupt n using n**
关键词interrupt 后面的n 是中断信号,对于51单片机啊,n的取值为0~4,编译器从8xn+3处产生中断向量。
具体看下图:
AT89C51中断号和中断向量
注:中断函数不能传递参数

话不多说,上电路图代码

点击button1,这个时候中断信号通过P3.2发送给主程序,立即停止主程序运行,去执行中断函数,待中断函数执行完,主程序继续执行
点击button1,这个时候中断信号通过P3.2发送给主程序,立即停止主程序运行,去执行中断函数,待中断函数执行完,主程序继续执行

代码:

#include<reg51.h>
#include<intrins.h>
void fun()
{
int i=0,j=0;
for(i;i<200;i++)
{
for(j=0;j<100;j++)
{;}
}
}
void intfun() interrupt 0
{
P2 =0xff;;
fun();
P2 = 0x00;
fun();
P2 =0xfe;
fun();
}

int main()
{
EA = 1;// 总中断
EX0 = 1;//允许外部中断
IT0 =1; // 选择外部中断
P1 =0xfe;
while(1)
{
P1= crol(P1,1);
fun();
}
return 0;
}

第一次写博客,有错误大家指出,一起进步,希望有大佬带我飞
qq:1226337916

猜你喜欢

转载自blog.csdn.net/weixin_43431146/article/details/89402975