2018/3/24
51单片机
说在前面
1.今天初步使用了一下怎么去焊接,什么锡丝,松香,铁架台,焊枪,洞洞板,还是得自己买一套琢磨
2.心疼我的电源模块一秒
1.51单片机的中断系统
1.在cpu在处理事件A的时候,发生了另外一件事B要求cpu紧急处理(中断发生),cpu转去实现b(中断响应和服务),处理完B之后返回处理A(中断返回)
2.让cpu实现中断的叫做中断源,cpu处理完中断源,返回原断点处,实现这一功能的叫中断系统
2.中断系统的优点
1.分时操作
2.实时响应
3.可靠性高
3.相关实现过程(重点:敲黑板啦)
中断响应条件
1.中断源有着中断请求
2.中断源的中断允许位为1
3.CPU开中断(EA=1)
顺序可变化
4.思路
想使用的中断是什么,选择中断号
需要什么样的触发条件(低点平or下降沿)
中断之后干嘛?编写中断服务函数实现功能
void int0()interrupt 0
{
>...<;
}
1、INT0——外部中断0,由P3.2端口引入,低电平或下降沿引起。默认优先级最高,中断号0
2、INT1——外部中断1,由P3.3端口引入,低电平或下降沿引起。默认优先级第二,中断号1
3、T0——定时器/计数器0中断,由T0计数器计满回零引起。默认优先级第三,中断号2
4、T1——定时器/计数器1中断,由T1计数器计满回零引起。默认优先级第四
,中断号3
5、TI/RI——串行口中断,串行端口完成一帧字符发送/接收后引起。默认中断优先级最低,中断号4
5.中断函数的特点
1.首先响应优先级别最高的
2.正在进行的中断函数不能被同级或低级所打断,但是可以被高级打断(但是51只有双层嵌套哇)
6.中断函数的简单使用
//使用延时函数来实现外部中断
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit led=P2^0;
sbit k3=P3^2;
//延时函数
void delay(u16 i)
{
while(i--);
}
//使用延时命令响应中断
void INT0Init()
{
EA=1;//打开总中断开关
EX0=1;//打开外部中断0
IT0=1;//采用下降源触发模式(当电平由1变为0启动下降源)
}
void main()
{
INT0Init();
while(1);
}
//编写中断函数(进入中断函数)
void int0()interrupt 0
{
delay(10000);//消抖
if(k3==0)
{
led=~led;
}
}