中断与定时器总结

这个内容总的来说就是中断,根据触发来源是内部还是外部,分为外部中断定时器中断,(之前未区分定时器和计数器,而定时器中断的原理就是加一计数器,计数器是定时器的基础,后面只会介绍定时器)

目录

中断

1.中断介绍

2.中断函数的分类

3.中断的分类

4.优先级与中断号

寄存器

1.寄存器介绍

2.常见中断寄存器

 1.IE(interrupt enable):中断允许寄存器

2.TCON(Timer Control Register):定时器控制寄存器

3.TMOD(Timer Mode Register):定时器工作方式寄存器

 4.IP寄存器:中断优先级寄存器

 5.TLx/THx(x=0,1):定时器初值设置寄存器

外部中断

1.外部中断配置函数

2.外部中断服务函数

3.软件编程

定时器中断

1.方式一

结构分析

初值计算

检测方法

2.方式二:

结构分析

初值计算

检测方法

3.软件编程


中断

1.中断介绍

        对于单片机来讲,在程序的执行过程中,由于某种外界的原因,必须终止当前执行的程
序,而去执行相应的处理程序,待处理结束后,再回来继续执行被终止的程序,这个过程叫
中断。

       中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握的。中断的出现代表我们可以完成许多事情,排列一些程序发生的顺序。

2.中断函数的分类

        每一个中断都有中断配置函数和终端服务函数;

        中断配置函数:就像其他机器一样如果你不叫它,它不会响应你的,所以我们需要去启动它。如何启动?这里我们通过配置寄存器就在启动它。外部中断和定时器中断会有不一样,但是基本上都是差不多的,只是控制他们的寄存器不同而已。

void exti0_init(void)
{
    IT0=1;//跳变沿触发方式(下降沿)
    EX0=1;//打开INT0的中断允许
    EA=1;//打开总中断
}

        中断服务函数:就是你启动它要干嘛,你不能无缘无故启动它。你可以操控它,做一些定时的任务。

void 函数名 (void)interrupt  <中断号>(using 工作组)

{

        中断服务内容

}

3.中断的分类

   根据触发来源是内部还是外部,分为外部中断定时器中断。

 51单片机的 6 个中断源我们简述如下:
INT0—外部中断 0,引入端口: P3.2,触发方式:低电平、下降沿。
INT1—外部中断 1,引入端口: P3.3,触发方式:低电平、下降沿。
T0—定时器/计数器 0 中断,触发方式: TO 计数器记满归零。
T1—定时器/计数器 1 中断,触发方式: T1 计数器记满归零。
T2—定时器/计数器 2 中断,触发方式: T2 计数器记满归零。
TI/RI—串口中断,触发方式:串口完成一帧字符发送或接收完。
 

        我们之前介绍过按键,在51单片机的开发板,外部中断源就设置在P3.2和P3.3上,按键也在P3.2和P3.3上,所以我们在外部也能控制中断实现其他功能。但是我们很少在外部触发中断,我们用这概念就行。

        定时器中断:单片机的定时器可以理解成一个杯子,假如一个杯子装满需要花费十秒的时间,但是我只需要5秒钟的定时,那么我们就可以先给已经有半杯水的杯子加水加满,那么我们就实现5秒钟的定时。时间一到我们就可以中断,就算你在睡觉,你也要给我起来完成中断(可以重新拿半杯水继续定时),所以这个叫做溢出中断。假如我们需要20秒的定时,那我们可以准备两个空杯子。这是不是很像一款游戏。

        再比如说,定时器就像一个状态检测机,假如我们用热水壶烧水,需要我们时时刻刻的检测温度,我们就可以用定时器每隔一段时间检测一次,他就会在规定的时间间隔不断地测量温度。

        官方点的话说:定时器其实就是单片机内部的硬件资源,用特殊的总线与 CPU 相连,实现着计数功能。

4.优先级与中断号

        51单片机有 6 个中断源,具有二个中断优先级,可实现二级中断服务程序的嵌套。每个中断源均可软件编程为高优先级或低优先级中断,允许或禁止向 CPU 请求中断。例如你现在正接着普通朋友的电话,这时你女朋友来电话了,之后你会向你普通朋友说,我们就聊到这儿吧,之后你会去接你女朋友的电话,在通话中,你的 BOSS 又来电话了,这时你就会考虑那个的电话重要,这个你考虑重要的过程就是所谓的—中断优先级,那若单片机同时有两个中断产生,单片机又是怎么执行的呢?着就取决于单片机内部的一个特殊功能寄存器(中断优先级寄存器)的设置,通过设置它,就相当于告诉单片机那个优先级高,那个优先级低,若不操作,就是按单片机默认的设置来执行(单片机自己有一套默认的优先级)。见下图

         中断号每一个中断会有一个中断号,而且在写中断服务函数的时候是必须要写的。

补充知识:

CPU 时序的有关知识:

(1)振荡周期

(2)状态周期:一个状态周期=两个振荡周期

(3)机器周期:一个机械周期=六个状态周期

(4)指令周期:一个指令周期=1~4个振荡周期

例如:外接晶振为 12MHz 时,51 单片机相关周期的具体值为: 振荡周期=1/12us; 状态周期=1/6us; 机器周期=1us; 指令周期=1~4us;

寄存器

1.寄存器介绍

        寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。通俗点讲,寄存器就是存放着工具的工具箱,工具箱里的工具只能用于一个目的,不同的工具箱是有不同的作用的,完成一个工程(中断)也会需要用到各种工具。

        寄存器有八位的(这里指的是bit位),32位的等等,51单片机经常用到的是8位的寄存器。每个位的状态只有0与1,总共八位就构成了一个八位的二进制数,对寄存器赋值就是在给寄存器里的八位赋值。还有一些是系统为了标注过程状态而有的系统配置位(系统自己配置),比如我完成了一个工程里的一个步骤,然后你就要把某位变成1,来证明自己完成,然后别人一检查这个位的状态,发现是1,就知道你没有摸鱼。

赋值方式:

1.对寄存器的名字赋值:TCON=0x00,或TMOD=000

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值