中断学习总结

中断学习总结,第1张

单片机中断系统

中断系统被用来处理随即突发事件。


中断分为两种:
外部中断源INT0,INT1
内部终端源T0,T1,串行I/O口中断
本节我学习的是外部中断源的使用方法。



P3.0,P3.1口作为串口通信使用,在本节用不到
P3.2INT0输入端
P3.3INT1输入端
P3.4T0定时器输入端
P3.5T1定时器输入端
P3.6,P3.7作为普通I/O口使用。

中断

查询传送:传送前,一方先查询另一方的状态,准备好时传送,否则一直处于等待状态。


中断方式:一方通过申请中断与另一方进行数据传送

中断寄存器


因为该寄存器可以直接使用位寻址,所以可以直接为其赋值。


EA为总中断控制位,当EA=1时,中断才可以使用,当EA=0时,屏蔽一切中断申请。


因为我这次只用到了外部中断源,所以只用考虑B0口,B2口。



TCON寄存器
IE0=1 INT0请求中断
IE0=1 INT1请求中断
IT0=0 INT0低电平触发,IT0=1,INT0下降沿触发。

使用INT1中断,通过下降沿触发
// 代码头文件
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char

sbit key1=P3^0;//使用独立按键,按下后进入中断
sbit key2=P3^7;//提供一个下降沿,触发中断
// 延迟函数,用于按键消抖
void delay(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
  for(y=114;y>0;y--);
}
//中断初始化
void int11()
{
EA=1; //开总中断
EX1=1;//开外部中断1
IT1=1;//设置触发方式为下降沿
}
//中断函数
void int1() interrupt 2
{
 P1=~P1;//中断时LED取反
}

中断格式如上,自定义函数名后,要加上中断号
外部中断0 :中断号为0;中断标志为IE0;
定时器0 :中断号为1;中断标志为TF0;
外部中断1 :中断号为2;中断标志为IE1;
定时器1 :中断号为3;中断标志为TF1;
串行口 :中断号为4;中断标志为R1或T1.

void main()
{
int11();//中断初始化
P1=0X01;//点亮LED
while(1)
{
if(key1==0)//按下独立按键
{
 delay(10);//按键消抖
 if(key1==0)
 {

 key2=1;
 key2=0;//设置下降沿
 while(!key1);//松手检测
 }
}
}
}

将单片机的P3.3与P3.7通过杜邦线连在一起,当按下按键后,程序进入中断,需要通过下降沿触发中断响应。

此时P3.7作为一个普通I/O口,通过赋值设置下降沿,输入到P3.3中,使中断响应。

此时,小灯亮七个,再按一下,再次进入中断,取反,小灯泡亮一个。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存