你的问题是没理解中断的含义。
中断,字面上意思就是(当有更紧急的事情出现的时候)终止现在手头上的事情去忙更紧急的事情。在程序里,就相当于当某个条件成立时,停止正在运行的代码(手头上的事情),去执行另一段代码(更紧急的事情),只是这个过程是硬件自动完成的,而不是像你平时调用函数那样显式的去调用它。
你的程序里用到了定时器0(自己去看定时器的工作原理),那你只要将定时器0初始化,并且在函数void exter() interrupt 1里写下你希望当定时器0中断的时候执行的代码就行了。当你启动定时器0的时候,它有点像后台运行的一个程序,当它归0的时候,就会置相应的中断标志为1,而CPU会不时的检测这些中断标志位,当发现某个标志位为1的时候,表明有中断请求,CPU会自动转到相应的中断服务程序中去。
首先开中断,包括各个中断源和总中断,并设置中断触发条件,如定时器初值, 低电平触发还是下降沿触发,然后运行主程序,中断条件具备时,转入中断程序,中断程序完成后,返回主程序,至于保护重要的寄存器内容,属于中断程序之中的内容,包括有些共用中断判断到底属于哪 一个中断和清除中断标志,都是中断程序的内容,有的必须有,有的就没有。
程序思路是这样的,进入中断后:
接收陀螺仪的数据,如果收到的第一个字节不是0x55,就不接收。。此时counter是不增加的。。
如果接收到的第一个字节是0x55,counter自增,收到的数据暂存至 Temp。。。
当 counter自增到11时,将Temp收到的数据存至Re_buf,同时counter清零,sign置1
第一行的意思是 表示 如果接收寄存器非空,即有数据,那么判断为接收中断
第五行 是跳出中断
概念:引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。
80C51的中断系统有5个中断源 ,2个优先级,可实现二级中断嵌套(就是可以在嵌套过程中再次响应嵌套) 。
中断源
1、INT0(P32),外部中断1。可由IT0(TCON0)选择其为低电平有效还是下降沿有效。当CPU检测到P32引脚上出现有效的中断信号时,中断标志IE0(TCON1)置1,向CPU申请中断。
2、INT1(P33),外部中断2。可由IT1(TCON2)选择其为低电平有效还是下降沿有效。当CPU检测到P33引脚上出现有效的中断信号时,中断标志IE1(TCON3)置1,向CPU申请中断。
3、TF0(TCON5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
4、TF1(TCON7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
5、RI(SCON0)或TI(SCON1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
中断请求标志
1、TCON的中断标志
IT0(TCON0):外部中断0触发方式控制位。
当IT0=0时:为电平触发方式。
当IT0=1时:为边沿触发方式(下降沿有效)。
IE0(TCON1):外部中断0中断请求标志位。
IT1(TCON2):外部中断1触发方式控制位。
IE1(TCON3):外部中断1中断请求标志位。
TF0(TCON5):定时/计数器T0溢出中断请求标志位。
TF1(TCON7):定时/计数器T1溢出中断请求标志位。
单片机TCON辅助设置工具
2、SCON的中断标志
RI(SCON0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。
TI(SCON1),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除。
80C51中断的控制
中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
EX0(IE0):外部中断0允许位;
ET0(IE1):定时/计数器T0中断允许位;
EX1(IE2):外部中断0允许位;
ET1(IE3):定时/计数器T1中断允许位;
ES(IE4):串行口中断允许位;
EA (IE7): CPU中断允许(总允许)位。
单片机IE自动设计工具
中断优先级控制
80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的 。
PX0(IP0),外部中断0优先级设定位;
PT0(IP1),定时/计数器T0优先级设定位;
PX1(IP2),外部中断0优先级设定位;
PT1(IP3),定时/计数器T1优先级设定位;
PS (IP4),串行口优先级设定位;
PT2(IP5),定时/计数器T2优先级设定位。
单片机IP自动设计工具
中断优先级规则:
CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
正在进行的低优先级中断服务,能被高优先级中断请求所中断。
中断系统总结:
TCON和SCON是中断请求,以及控制外部中断的有效方式。IE控制是否允许CPU响应中断,是否允许响应某一个中断。IP控制中断的优先级。
以上就是关于51单片机中的中断程序到底是怎么运行的全部的内容,包括:51单片机中的中断程序到底是怎么运行的、简述单片机中断相应过程、STM32 USB数据收发怎样触发中断等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)