51单片机中断学习笔记

1.前言

最近用到了51单片机的中断功能,于是找出了当初购买STC89C52开拓者单片机时附赠的学习视频,现将学习笔记记录如下。

2.学习笔记

中断简介

主程序执行过程中,(中断请求)->主程序被打断,转而执行分支任务,分支任务执行完毕后,回到主程序继续执行。

中断优点

  • 分时操作;
  • 实时响应(响应速度快);
  • 可靠性高;

中断系统结构

12图为STC89C52单片机

4

3

中断源:                                                              

  • /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触发时执行的。

 

中断寄存器:

5

TCON:8位

TR0、TF0统归于定时器中断0;

TR0 = 1,定时/计数器开启(开始计数),记满了(计数溢出),TF0置1,开始定时/计数器中断0请求;

6

7

中断优先级:

8

9

CPU同时收到请求,首先响应高优先级的中断;

中断执行过程中,同等级或低等级不可被打断,可以被高优先级中断打断。

 

中断的使用

 

10

 

示例:

 

 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 }

 本文目的在于学习分享,无商业目的。部分资源来自于网络,如有侵权,请联系作者删除,谢谢!

posted @ 2020-03-04 16:07  BrianSun  阅读(1746)  评论(0编辑  收藏  举报