新手关于8051中断的一些总结

Jamina ·
更新时间:2024-11-10
· 725 次阅读

大家好,我是51新手,学习完入门之后对51单片机的中断进行一些总结。有些像我一样的新手学习完中断之后对其中的一些寄存器模模糊糊,不知道他们的功能,在写程序时也十分吃力,因此,我想对此写一些个人的想法,供大家参考,可能有误,请指正。

中断的概念

自然不必多说,就是在主函数进行的中间要进行另外的一些操作,操作完成之后再次进入主函数,当然中断也可以嵌套,就是在中断之中再加中断,8051最多可实现二级嵌套。

中断有关寄存器

中断允许控制寄存器(IE)
IECPU对所有中断以及某个中断源的开放与屏蔽由IE控制。
(就好比在这个寄存器中有控制家里电力的总开关,还有控制家里某个灯的开关,在中断初始函数中必须将这两个开关打开)
EA:中断总允许位
ES:串口中断允许位
ET1:定时计数器1中断允许位
EX1:外部中断1允许位中断允许位
ET0:定时计数器1中断允许位
EX1:外部中断0允许位中断允许位

中断优先级控制寄存器(IP)
IP
正如字面所讲,它是设置中断优先级的寄存器。
(这里刚学的时候比较迷糊我以为中断优先级不是默认的:外部中断0>定时计数器0>外部中断1>定时计数器1>串行口中断,查资料后来我才知道设置了IP是在嵌套中设置了优先级。当我们设置了IP为0001000时,那么在一级中断中,当有串口中断、定时计数器1中断、外部中断1、定时计数器1中断、外部中断0同时发生时,他们的先后顺序就是:串口中断>外部中断0>定时计数器1中断>外部中断1>定时计数器1中断)

特殊功能寄存器(TCON)
TCON
这个寄存器有设置定时计数器的TF1、TR1、TF0、TR0,也有设置外部中断的IE1、IT1、IE0、IT0。
TF1、TF0:定时计数器0/1溢出中断请求标志,当计数溢出时由硬件自动置TF0/1=1,CPU相应中断后TF0/1由硬件自动清0。
TR0、TR1:定时计数器0/1,该位置1,定时计数器开始工作,该位置0,定时计数器停止工作。
IE1、IE0:功能类似于TF0、TF1
IT1、IT0:设置外部中断触发方式,该位等于0时为低电平触发,该位等于1时为下降沿触发。(这里刚学时我比较迷惑这两者有什么区别,后来查资料发现例如使用按键设置触发时,当按键一直按下时这两者就有明显差别,低电平触发会一直在中断之中,而下降沿触发只会进入一次中断)

定时器、计数器模式控制寄存器(TMOD)
TMOD
如名字所说,这是定时计数器所用的寄存器。(其中高四位用来控制定时计数器1,第四位用来控制定时计数器0)
GATE:控制定时计数器启动是否受外部中断源信号的影响。GATE=0时只需要使TCON中的TR0、TR1为1就可以启动,GATE=1时,启动还需外部中断引脚也为高电平才可以启动(这里比较迷惑,不是单片机有上拉电阻吗,那不是一直保持高电平吗,学识短浅,请大家指正)
C/T:定时/计数模式选择位
M1、M0:工作方式设置位

特殊功能寄存器(SCON)
SCON
该寄存器用于设置串行口的工作方式接收/发送控制以及设置状态标志。
(这里有关于多机通信的位,会简略介绍,感兴趣的小伙伴可了解我看到的一篇文章多机通信原理)
SM0、SM1:工作方式选择位
SM2:多机通信控制位
REN:允许串行接收位。REN=1,启动串行通信,接收数据。REN=0,禁止接收数据。
TI:发送中断标志位。在方式0中,当串行发送第8位数据结束后,或在其他方式串行发送停止位的开始时,由内部硬件置TI为1,向CPU发送中断申请,在中断服务中必须用软件将其清0,取消申请。
RI:接收中断标志位。发送中断标志位。在方式0中,当串行接收第8位数据结束后,或在其他方式串行接收停止位的中间时,由内部硬件置TI为1,向CPU发送中断申请,在中断服务中必须用软件将其清0,取消申请。

字节地址作用

reg51.h头文件
字节地址用来寻址(其实像IE、IP等寄存器只是我们给起的名字,而其真正的意义我们在reg52.h的头文件中已经定义,51单片机的的片内寄存器都是可以字节寻址的。)

最后希望大家多多指正。


作者:yujie-H



中断

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章