网站建设松江,wordpress游戏主题下载,自学做网站要多久,深圳画册设计公司排行榜STC15中断系统介绍✨本篇参考来源于STC官方stc15系列手册:538页- 589页。#xff08;文末提供该摘取部分的文档资料#xff09; #x1f389;在官方提供的手册资料中#xff0c;一个系列一份手册#xff0c;手册内容涵盖了数据手册和参考手册以及例程案例。对于学习着来说…STC15中断系统介绍 ✨本篇参考来源于STC官方stc15系列手册:538页- 589页。文末提供该摘取部分的文档资料 在官方提供的手册资料中一个系列一份手册手册内容涵盖了数据手册和参考手册以及例程案例。对于学习着来说一份接近15K页的文档即使有目录也不好翻阅其相关的内容。所以有必要进行拆解学习。 中断系统
中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求要求CPU暂停当前的工作转而去处理这个紧急事件 处理完以后再回到原来被中断的地方继续原来的工作这样的过程称为中断。实现这种功能的部件称为中断系统请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源当几个中断源同时向CPU请求中断要求为它服务的时候这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队优先处理最紧急事件的中断请求源即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求。当CPU正在处理一个中断源请求的时候执行相应的中断服务程序发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的 服务程序转而去处理优先级更高的中断请求源处理完以后再回到原低级中断服务程序这样的过程称为中断嵌套。这样的中断系统称为多级中断系统没有中断嵌套功能的中断系统称为单级中断系统。
中断响应规则
低优先级中断可被高优先级中断所中断反之不能。任何一种中断(不管是高级还是低级)一旦得到响应不会再被它的同级中断所中断.
STC15系列单片机的中断请求源 中断结构图 外部中断0(INT0)和外部中断1(INT1)既可上升沿触发又可下降沿触发。请求两个外部中断的标志位是位于寄存器TCON中的IE0/TCON.1和IE1/TCON.3。当外部中断服务程序被响应后中断标志位IE0和IE1会自动被清0。TCON寄存器中的IT0/TCON.0和IT1/TCON.2决定了外部中断0和1是上升沿触发还是下降沿触发。如果ITx 0(x 0,1)那么系统在INTx(x 0,1)脚探测到上升沿或下降沿后均可产生外部中断。如果ITx 1(x 0,1)那么系统在INTx( x 0,1)脚探测下降沿后才可产生外部中断。外部中断0(INT0)和外部中断1(INT1)还可以用于将单片机从掉电模式唤醒。定时器0和1的中断请求标志位是TF0和TF1。当定时器寄存器THx/TLx(x 0,1)溢出时溢出标志位TFx(x 0,1)会被置位如果定时器0/1的中断被打开则定时器中断发生。当单片机转去执行该定时器中断时定时器的溢出标志位TFx(x 0,1)会被硬件清除。外部中断2(INT2)、外部中断3(INT3)及外部中断4(INT4)都只能下降沿触发。外部中断2~4的中断请求标志位被隐藏起来了对用户不可见。当相应的中断服务程序被响应后或EXn0(n2,3,4)这些中断请求标志位会立即自动地被清0。外部中断2(INT2)、外部中断3(INT3)及外部中断4(INT4)也可以用于将单片机从掉电模式唤醒。定时器2的中断请求标志位被隐藏起来了对用户不可见。当相应的中断服务程序被响应后或ET20该中断请求标志位会立即自动地被清0定时器3和定时器4的中断请求标志位同样被隐藏起来了对用户不可见。当相应的中断服务程序被响应后或ET30 / ET40该中断请求标志位会立即自动地被清0当串行口1发送或接收完成时相应的中断请求标志位TI或RI就会被置位如果串口1中断被打开向CPU请求中断单片机转去执行该串口1中断。中断响应后TI或RI需由软件清零。当串行口2发送或接收完成时相应的中断请求标志位S2TI或S2RI就会被置位如果串口2中断被打开向CPU请求中断则单片机转去执行该串口2中断。中断响应后S2TI或S2RI需由软件清零。当串行口3发送或接收完成时相应的中断请求标志位S3TI或S3RI就会被置位如果串口3 中断被打开向CPU请求中断则单片机转去执行该串口3中断。中断响应后S3TI或S3RI需由 软件清零。当串行口4发送或接收完成时相应的中断请求标志位S4TI或S4RI就会被置位如果串口4中断被打开向CPU请求中断则单片机转去执行该串口4中断。中断响应后S4TI或S4RI需由软件清零。A/D转换的中断是由ADC_FLAG/ADC_CONTR.4请求产生的。该位需用软件清除。低压检测(LVD)中断是由LVDF/PCON.5请求产生的。该位也需用软件清除。当同步串行口SPI传输完成时SPIF/SPCTL.7被置位如果SPI中断被打开则向CPU请求中断单片机转去执行该SPI中断。中断响应完成后SPIF需通过软件向其写入“1”清零。比较器中断标志位CMPIF(CMPIF_p || CMPIF_n)其中CMPIF_p是内建的标志比较器上升沿中断的寄存器CMPIF_n是内建的标志比较器下降沿中断的寄存器当CPU 去读取 CMPIF的数值时会读(CMPIF_p || CMPIF_n)当CPU 对CMPIF写“0”后CMPIF_p及CMPIF_n会被自动设置为“0”。因此当比较器的比较结果由LOW变成HIGH时那么内建的标志比较器上升沿中断的寄存器CMPIF_p会被设置成1即比较器中断标志位CMPIF也会被设置成1如果比较器上升沿中断已被允许即PIE(CMPCR1.5)已被设置成1则向CPU请求中断单片机转去执行该比较器上升中断同理当比较器的比较结果由HIGH变成LOW时那么内建的标志比较器下降沿中断的寄存器CMPIF_n会被设置成1即比较器中断标志位CMPIF也会被设置成1如果比较器下降沿中断已被允许即NIE(CMPCR1.4)已被设置成1则向CPU请求中断单片机转去执行该比较器下降中断。中断响应完成后比较器中断标志位CMPIF不会自动被清零用户需通过软件向其写入“0”清零它。 各个中断触发行为总结如下表所示 中断向量入口地址/查询次序/优先级/请求标志/允许位表 在Keil C中如何声明中断函数
void Int0_Routine(void) interrupt 0;
void Timer0_Rountine(void) interrupt 1;
void Int1_Routine(void) interrupt 2;
void Timer1_Rountine(void) interrupt 3;
void UART1_Routine(void) interrupt 4;
void ADC_Routine(void) interrupt 5;
void LVD_Routine(void) interrupt 6;
void PCA_Routine(void) interrupt 7;
void UART2_Routine(void) interrupt 8;
void SPI_Routine(void) interrupt 9;
void Int2_Routine(void) interrupt 10;
void Int3_Routine(void) interrupt 11;
void Timer2_Routine(void) interrupt 12;
void Int4_Routine(void) interrupt 16;
void S3_Routine(void) interrupt 17;
void S4_Routine(void) interrupt 18;
void Timer3_Routine(void) interrupt 19;
void Timer4_Routine(void) interrupt 20;
void Comparator_Routine(void) interrupt 21;
void PWM_Routine(void) interrupt 22;
void PWMFD_Routine(void) interrupt 23;中断寄存器 STC15W4K32S4系列新增6通道带死区控制的PWM波形发生器的中断相关特殊功能寄存器 中断允许寄存器IE EA : CPU的总中断允许控制位EA1CPU开放中断EA0CPU屏蔽所有的中断申请。EA的作用是使中断允许形成多级控制。即各中断源首先受EA控制;其次还受各中断源自己的中断允许控制位控制。 ELVD : 低压检测中断允许位ELVD1允许低压检测中断ELVD0禁止低压检测中断。 EADC : A/D转换中断允许位EADC1允许A/D转换中断EADC0禁止A/D转换中断。 ES : 串行口1中断允许位ES1允许串行口1中断ES0禁止串行口1中断。 ET1 : 定时/计数器T1的溢出中断允许位ET11允许T1中断ET10禁止T1中断。 EX1 : 外部中断1中断允许位EX11允许外部中断1中断EX10禁止外部中断1中断。 ET0 : T0的溢出中断允许位ET01允许T0中断ET00禁止T0中断。 EX0 : 外部中断0中断允许位EX01允许中断EX00禁止中断. IE2 : 中断允许寄存器 (不可位寻址) ET4定时器4的中断允许位: ET41,允许定时器4产生中断 ET40,禁止定时器4产生中断 ET3定时器3的中断允许位: ET31,允许定时器3产生中断 ET30,禁止定时器3产生中断 ES4 : 串行口4中断允许位: ES41允许串行口4中断 ES40禁止串行口4中断 ES3 : 串行口3中断允许位: ES31允许串行口3中断 ES30禁止串行口3中断。 ET2定时器2的中断允许位。 ET21,允许定时器2产生中断 ET20,禁止定时器2产生中断 ESPISPI中断允许位。 ESPI1允许SPI中断 ESPI0禁止SPI中断。 ES2 : 串行口2中断允许位。 ES21允许串行口2中断 ES20禁止串行口2中断。 INT_CLKO (AUXR2) : 外部中断允许和时钟输出寄存器 EX4 : 外部中断4(INT4)中断允许位EX41允许中断EX40禁止中断。外部中断4(INT4)只 能下降沿触发。 EX3 : 外部中断3(INT3)中断允许位EX31允许中断EX30禁止中断。外部中断3(INT3)也 只能下降沿触发。 EX2 : 外部中断2(INT2)中断允许位EX21允许中断EX20禁止中断。外部中断2(INT2)同 样只能下降沿触发。 MCKO_S2, T2CLKO, T1CLKO,T0CLKO与中断无关. IP : 中断优先级控制寄存器 (可位寻址) PPCA: PCA中断优先级控制位。 当PPCA0时PCA中断为最低优先级中断(优先级0) 当PPCA1时PCA中断为最高优先级中断(优先级1) PLVD: 低压检测中断优先级控制位。 当PLVD0时低压检测中断为最低优先级中断(优先级0) 当PLVD1时低压检测中断为最高优先级中断(优先级1) PADC: A/D转换中断优先级控制位。 当PADC0时A/D转换中断为最低优先级中断(优先级0) 当PADC1时A/D转换中断为最高优先级中断(优先级1) PS: 串口1中断优先级控制位。 当PS0时串口1中断为最低优先级中断(优先级0) 当PS1时串口1中断为最高优先级中断(优先级1) PT1: 定时器1中断优先级控制位。 当PT10时定时器1中断为最低优先级中断(优先级0) 当PT11时定时器1中断为最高优先级中断(优先级1) PX1: 外部中断1优先级控制位。 当PX10时外部中断1为最低优先级中断(优先级0) 当PX11时外部中断1为最高优先级中断(优先级1) PT0: 定时器0中断优先级控制位。 当PT00时定时器0中断为最低优先级中断(优先级0) 当PT01时定时器0中断为最高优先级中断(优先级1) PX0: 外部中断0优先级控制位。 当PX00时外部中断0为最低优先级中断(优先级0) 当PX01时外部中断0为最高优先级中断(优先级1) IP2 : 中断优先级控制寄存器 (不可位寻址) PX4: 外部中断4(INT4)优先级控制位。 当PX40时外部中断4(INT4)为最低优先级中断(优先级0) 当PX41时外部中断4(INT4)为最高优先级中断(优先级1) PPWMFD: PWM异常检测中断优先级控制位。 当PPWMFD0时PWM异常检测中断为最低优先级中断(优先级0) 当PPWMFD1时PWM异常检测中断为最高优先级中断(优先级1) PPWM: PWM中断优先级控制位。 当PPWM0时PWM中断为最低优先级中断(优先级0) 当PPWM1时PWM中断为最高优先级中断(优先级1) PSPI: SPI中断优先级控制位。 当PSPI0时SPI中断为最低优先级中断(优先级0) 当PSPI1时SPI中断为最高优先级中断(优先级1) PS2: 串口2中断优先级控制位。 当PS20时串口2中断为最低优先级中断(优先级0) 当PS21时串口2中断为最高优先级中断(优先级1) 中断优先级控制寄存器IP和IP2的各位都由可用户程序置“1”和清“0”。但IP寄存器可位操作所以可用位操作指令或字节操作指令更新IP的内容。而IP2寄存器的内容只能用字节操作指令来更新。STC15系列单片机复位后IP和IP2均为00H各个中断源均为低优先级中断。 TCON : 定时器/计数器中断控制寄存器 (可位寻址) TF1: T1溢出中断标志。T1被允许计数以后从初值开始加1计数。当产生溢出时由硬件置 “1”TF1向CPU请求中断一直保持到CPU响应中断时才由硬件清“0”也可由查询软件清“0”。 TR1: 定时器1的运行控制位。 TF0T0溢出中断标志。T0被允许计数以后从初值开始加1计数当产生溢出时由硬件置 “1”TF0向CPU请求中断一直保持CPU响应该中断时才由硬件清0也可由查询软件清0。 TR0: 定时器0的运行控制位。 IE1外部中断1INT1/P3.3中断请求标志。IE11外部中断向CPU请求中断当CPU响应 该中断时由硬件清“0”IE1。 IT1外部中断1中断源类型选择位。IT10INT1/P3.3引脚上的上升沿或下降沿信号均可触发 外部中断1。IT11外部中断1为下降沿触发方式。 IE0外部中断0INT0/P3.2中断请求标志。IE01外部中断0向CPU请求中断当CPU响 应外部中断时由硬件清“0”IE0。 IT0外部中断0中断源类型选择位。IT00INT0/P3.2引脚上的上升沿或下降沿均可触发外部 中断0。IT01外部中断0为下降沿触发方式。 SCON : 串行口控制寄存器 (可位寻址) RI: 串行口1接收中断标志。若串行口1允许接收且以方式0工作则每当接收到第8位数据时 置1若以方式1、2、3工作且SM20时则每当接收到停止位的中间时置1当串行口以方式2或方式3工作且SM21时则仅当接收到的第9位数据RB8为1后同时还要接收到停止位的中间时置1。RI为1表示串行口1正向CPU申请中断(接收中断)RI必须由用户的中断服务程序清零。 TI 串行口1发送中断标志。串行口1以方式0发送时每当发送完8位数据由硬件置1若以方式1、方式2或方式3发送时在发送停止位的开始时置1。TI1表示串行口1正在向CPU申请中断(发送中断)。值得注意的是CPU响应发送中断请求转向执行中断服务程序时并不将TI清零TI必须由用户在中断服务程序中清零。 SCON寄存器的其他位与中断无关。 S2CON : 串行口2控制寄存器 (不可位寻址) S2RI: 串行口2接收中断标志。若串行口2允许接收且以方式0工作则每当接收到第8位数据时 置1若以方式1、2、3工作且S2SM20时则每当接收到停止位的中间时置1当串行口2以方式2或方式3工作且S2SM21时则仅当接收到的第9位数据S2RB8为1后同时还要接收到停止位的中间时置1。S2RI为1表示串行口2正向CPU申请中断(接收中断)S2RI必须由用户的中断服务程序清零。 S2TI串行口2发送中断标志。串行口2以方式0发送时每当发送完8位数据由硬件置1若以方式1、方式2或方式3发送时在发送停止位的开始时置1。S2TI1表示串行口2正在向CPU申请中断(发送中断)。值得注意的是CPU响应发送中断请求转向执行中断服务程序时并不将S2TI清零S2TI必须由用户在中断服务程序中清零。 S2CON寄存器的其他位与中断无关。 S3CON : 串行口3控制寄存器 (不可位寻址) S3RI: 串行口3接收中断标志。若串行口3允许接收且以方式0工作则每当接收到第8位数据时 置1若以方式1、2、3工作且S3SM20时则每当接收到停止位的中间时置1当串行口3以方式2或方式3工作且S3SM21时则仅当接收到的第9位数据S3RB8为1后同时还要接收到停止位的中间时置1。S3RI为1表示串行口3正向CPU申请中断(接收中断)S3RI必须由用户的中断服务程序清零。 S3TI串行口3发送中断标志。串行口3以方式0发送时每当发送完8位数据由硬件置1若以方式1、方式2或方式3发送时在发送停止位的开始时置1。S3TI1表示串行口3正在向CPU申请中断(发送中断)。值得注意的是CPU响应发送中断请求转向执行中断服务程序时并不将S3TI清零S3TI必须由用户在中断服务程序中清零。 S3CON寄存器的其他位与中断无关。 S4CON : 串行口4控制寄存器 (不可位寻址) S4RI: 串行口4接收中断标志。若串行口4允许接收且以方式0工作则每当接收到第8位数据时 置1若以方式1、2、3工作且S4SM20时则每当接收到停止位的中间时置1当串行口4以方式2或方式3工作且S4SM21时则仅当接收到的第9位数据S4RB8为1后同时还要接收到停止位的中间时置1。S4RI为1表示串行口4正向CPU申请中断(接收中断)S4RI必须由用户的中断服务程序清零。 S4TI串行口4发送中断标志。串行口4以方式0发送时每当发送完8位数据由硬件置1若 以方式1、方式2或方式3发送时在发送停止位的开始时置1。S4TI1表示串行口4正在向CPU申请中断(发送中断)。值得注意的是CPU响应发送中断请求转向执行中断服务程序时并不将S4TI清零S4TI必须由用户在中断服务程序中清零。 S4CON寄存器的其他位与中断无关。 PCON : 电源控制寄存器 LVDF : 低压检测标志位,同时也是低压检测中断请求标志位。 在正常工作和空闲工作状态时如果内部工作电压Vcc低于低压检测门槛电压该位自动置1与低压检测中断是否被允许无关。即在内部工作电压Vcc低于低压检测门槛电压时不管有没有允许低压检测中断该位都自动为1。该位要用软件清0清0后如 内部工作电压Vcc继续低于低压检测门槛电压该位又被自动设置为1。 在进入掉电工作状态前如果低压检测电路未被允许可产生中断则在进入掉电模式后该低压检测电路不工作以降低功耗。如果被允许可产生低压检测中断则在进入掉电模式后该低压检测电路继续工作在内部工作电压Vcc低于低压检测门槛电压后产生低压检测中断可将MCU从掉电状态唤醒。 电源控制寄存器PCON中的其他位与低压检测中断无关. IE : 中断允许寄存器 (可位寻址) EA : CPU的总中断允许控制位EA1CPU开放中断EA0CPU屏蔽所有的中断申请。 EA的作用是使中断允许形成两级控制。即各中断源首先受EA控制;其次还受各中断源自 己的中断允许控制位控制。 ELVD : 低压检测中断允许位ELVD1允许低压检测中断ELVD0禁止低压检测中断。 还有A/D转换控制寄存器和比较器控制寄存器以及PWM 的控制寄存器相关没有介绍。 可以参考另外一篇《STC15系列CCP/PWM/PCA介绍》
STC15相关章节拆分资料
复制这段内容后打开百度网盘手机App操作更方便哦
链接: https://pan.baidu.com/s/1GSWoJiHuvSmYi9VnaNEp9g
提取码: ir93