51单片机中断学习笔记
1.前言
最近用到了51单片机的中断功能,于是找出了当初购买STC89C52开拓者单片机时附赠的学习视频,现将学习笔记记录如下。
2.学习笔记
中断简介:
主程序执行过程中,(中断请求)->主程序被打断,转而执行分支任务,分支任务执行完毕后,回到主程序继续执行。
中断优点:
- 分时操作;
- 实时响应(响应速度快);
- 可靠性高;
中断系统结构:
中断源:
- /INTO (P3.2管脚)
- T0(采集外部脉冲个数)
- /INT1(P3.3管脚)
- T1(采集外部脉冲个数)
- RX&TX(P3.0、P3.1串口引脚)
TCON寄存器:IT0 = 1(下降沿触发)
0(高电平触发)
IE0 = 0
1(允许中断请求)
IE寄存器(中断控制寄存器):EX0 = 0
1(外部中断使能)
EA = 0
1(中断总开关)
IP(中断优先级)寄存器:1-高;(IP寄存器通常不使用)
注意中断号!!中断号是中断的代号,也是默认优先级的排列顺序(优先级从大到小依次是01234);
c程序中标记中断时也是通过:
1 void int0() interrupt 0 2 { 3 4 //中断函数执行内容; 5 6 }
的形式,interrupt 0代表这个函数是中断0触发时执行的。
中断寄存器:
TCON:8位
TR0、TF0统归于定时器中断0;
TR0 = 1,定时/计数器开启(开始计数),记满了(计数溢出),TF0置1,开始定时/计数器中断0请求;
中断优先级:
CPU同时收到请求,首先响应高优先级的中断;
中断执行过程中,同等级或低等级不可被打断,可以被高优先级中断打断。
中断的使用:
示例:
1 #include “reg52.h” 2 3 void main() 4 { 5 EA = 1; //打开总中断开关 6 EX0 = 1; //开外部中断0 7 //IT0 = 0; 8 IT0 = 1;//设置外部中断的触发方式 9 while(1) ; 10 11 } 12 13 //中断服务函数 14 void int0() interrupt 0 using 1//中断0,使用第1组寄存器 15 { 16 //中断执行指令 17 }
本文目的在于学习分享,无商业目的。部分资源来自于网络,如有侵权,请联系作者删除,谢谢!