51单片机学习日志-13
上一篇我们讲到了中断的作用和原理,以及单片机中包含的中断源(产生中断信号的入口),以及需要使用中断这个功能需要配置的寄存器,但是这里要配置的寄存器数量较多,所以需要对其有所分辨以及合理的运用,接下来就进入对这些中断寄存器的学习当中。从数量上来看,中断寄存器一共包含了七个寄存器,而且对应了单片机中的不同地址,便于后续对寄存器的定义。
其中要讲到的第一种寄存器叫做IE,也即中断使能寄存器,由于每一个寄存器都有八位数据位,而每一位数据的作用又是不一样的,所以需要一一分析。IE寄存器的最高位是EA,被称为总中断允许控制位,从名称可以了解其主要作用,也就是起到了允许中断的作用,又因为有一个“总”的修饰,所以可以看出这一位是对所有的中断外设起到作用的,可以控制所有中断的开关,如果需要开启中断,则将这一位置为一,反正则置为零,而如果没有任何操作时其默认数据是零,也就是中断默认的状态就是关闭的,如果要打开就需要对寄存器进行一定的配置。而该寄存器次高位是ET2,也即定时器/计数器T2的溢出中断允许控制位,也就是说这个也是一种允许中断的数据位,置一的时候开启,反之则关闭中断,但是这个数据位控制的是其中一个中断外设T2,这个外设主要以溢出作为中断信号的输出,所以是溢出中断允许控制位。然后紧接着就是ES即串口中断允许控制位,顾名思义就是控制串行口的中断的开启与否,控制逻辑和前面的类似。然后是ET1,表示的是定时器/计数器T1的中断允许控制位。再然后是EX1,和前面的类似,这里是外部中断的允许控制位,类似的还有ET0是定时器/计数器T0的中断允许控制位,最后一个是EX0,是外部中断0的控制位。总的来说,这个寄存器的作用就是对整个中断外设进行使能以及对单独的中断外设进行使能,而且名称也是有规律的,也即E表示Enable,而后面就是相关外设的缩写,例如T表示定时器/计数器溢出中断,而X表示外部中断,S表示串口中断。但是要注意的是,这里有一位是没有定义的,同时还有一个中断即外部中断1、2是没有定义的,不知道是不是型号的原因。
下一个配置寄存器叫做XICON,也即辅助中断控制寄存器。为什么是辅助中断控制寄存器呢,它和第一个寄存器IE有什么关系呢,我们来研究一下具体的数据位都有哪些。次高位是EX3数据位,表示外部中断3允许控制位,之前我们还说到IE中有一些中断源没有提到,这里就开始补充了。然后还有一个就是EX2数据位,表示外部中断2的允许控制位,这样就补充好了所有中断源的允许控制数据位,但是对于这个寄存器来说,还有其他的数据位是没有介绍的,这里先不给出具体介绍,后面会陆续讲到。对于配置寄存器来说,其实有很多都是相似的,如果没有用程序进行设置时,寄存器会取默认值,如果要对某中断进行开启,就需要用程序进行一定的配置。
下一个需要介绍的是中断优先级寄存器,顾名思义就是对中断源进行响应优先级设置的寄存器,这决定了当多个中断源提出请求时,单片机优先处理哪一个中断源。这里涉及到的寄存器有三个,分别是IPH、IP和XICON,下面就来看一下到底是如何对优先级进行配置的。其中IPH表示中断优先级高,而IP表示中断优先级低,而XICON就是前面介绍的辅助中断控制。通过观察可以看到,这些数据位的名称有一个相似点,就是第一个字母是P,表示优先级的意思,其中PT2H和PT2表示对定时器2中断优先级的配置,通过数据位的不同组合就能配置位对应的优先级,一共有四种类型的优先级。而PSH和PS表示串口的中断优先级,然后还有PT1H和PT1是对定时器1的优先级配置,以及还有PX1H和PX1是对外部中断1的优先级配置,PT0H和PT0是对定时器0的优先级配置,PX0H和PX0是对外部中断0的优先级配置。
接下来就是TCON和T2CON两个对于定时器的控制寄存器,其中TCON是对T0和T1的控制寄存器,包括T0和T1的中断控制位、中断标志位和外部中断的标志位,而T2CON则是对T2的控制寄存器。其中再TCON控制寄存器中,TF1为T1溢出标志,表示溢出时的标志,当溢出发生时,将由硬件置位,产生中断请求,单片机响应中断后,由硬件清零,也就是说不用手动清零。另外TR1是T1的运行控制位,当置位时定时器启动,反之则停止,这个和前面的中断控制位不同,这里是定时器的开始工作的控制,而不是中断产生的控制。然后是TF0表示T0的溢出标志,和TF1类似,之后是TR0和TR1类似。之后是IE1表示外部中断1请求标志位,其和TF1类似;还有IE0是外部中断0的标志位;以及IT1是外部中断1的类型选择位,IT2是外部中断0类型选择位。
然后是TCON2控制寄存器,如果单片机由定时器2功能,则该寄存器将发挥作用。TF2是T2溢出中断标志;EXF2表示定时器2外部标志,当EXEN置位并且对应端口检测到负跳变,则置位并发出中断请求,此时需要软件清零。RCLK是接收始终标志,置位时定时器2的溢出时钟是串口接收时钟,反之则将定时器1的溢出时钟作为串口的接收时钟。TCLK和RCLK相似,只不过一个是接收时钟一个是发送时钟。然后是EXEN2是外部使能标志,当置位时,端口的负跳变将产生捕获或重装。之后时TR2是运行控制,和TR1类似。最后C/T2是功能选择,清零为定时器功能,置位时为计数器功能。CP/RL2是捕获/重装标志位,置位时从端口获取负跳变产生捕获,清零时从端口获取负跳变使得定时器自动重装。这里设计的数据位比较多,说明定时器2是个比较复杂的外设。
最后是串口控制寄存器,其中RI是接收中断标志,接收数据后由硬件置1,并向单片机请求中断,需要手动清零;TI是发送中断标志,和RI相似,不过是发生在发送数据后。REN是允许串口接收标志,置一时允许接收数据,反之禁止接收;然后SM0、SM1以及SM2可以设置串口工作模式,TB8和RB8是特定工作模式下的数据位,这里不做详细分析。
回顾一下这里提到的知识点,这里讲到了和中断源配置相关的寄存器,首先讲道理中断源的总开关以及各个中断源的分开关,然后是对不同的中断源进行优先级配置的寄存器,之后是针对于定时器的配置寄存器,其中包括对定时器0和1的标志位允许位、外部中断的标志位类型选择,以及定时器2的各种配置数据位,最后一个就是串口中断的一些配置数据位,这里先就这样,其他的后面再聊。

浙公网安备 33010602011771号