外部中断寄存器
- 格式:doc
- 大小:52.50 KB
- 文档页数:3
ARM7(sc44b0)外部中断笔记对于sc44b0它也是一种单片机,一种比较高级的单片机而已,所以他也跟51单片机一样有外部中断,不同51单片机的是,他有8个外部中断源,对应的是8个管脚,(51只有两个,int0和int1,P3.3和P3.4),分别是Port G八个管脚。
而对于外部中断4 \5\6\7很多都是共用寄存器,他们是通过或逻辑公用一个中断请求线。
下面就具体来说说使用外部中断的一些必要的配置。
一,对管脚的配置,因为Port G有三种功能用法,要通过对rPCONG(端口G配置寄存器)的配置来选用Port G的外部中断的功能。
其配置表如下所以应该将其配置为11(设置为中断功能状态);二,中断模式的选择,中断模式有两种,FIQ(快速中断模式)和 IRQ(中断模式)两种,一般没有特殊要求都用IRQ模式即可。
可以通过对中断模式寄存器rINTMOD配置获得。
如表下三,是否允许中断,即中断使能位。
通过对中断控制寄存器INTCON的配置即可,如表下通过对中断控制寄存器的配置即可,可以看出只要让intcon的【1】位置零即可使中断使能。
四,外部中断方式的选择,低电平或上升沿触发呢,还是别的,这就要对外部中断方式寄存器(EXTINT)的配置,其表如下由上表可知,如果要用下降沿触发,就可将EXTINT 的值给0x22222222;将所有的外部中断都设置为下降沿触发。
五,当中断捕抓到以后,要引起什么变化呢?或者说用什么来捕抓呢?在sc44b0中用了两个寄存器来捕抓,一个中断挂起寄存器(INTPND),和外部中断挂起寄存器(EXINTPND),一开始不明白挂起是什么意思,后来才懂,差不多就相当与51单片机的标志位一样,当中断发生后,就将挂起寄存器的对应的某一位置一或置零,外部中断挂起寄存器如表下中断挂起寄存器:当中断产生后,是将INTPND的【21】位置一的;所以,判断有无外部中断,就可以通过读取挂起寄存器对应的为,即可知道是否有无中断。
80C51 单片机外部中断初始化的步骤如下:
1. 设置中断优先级:通过设置特殊功能寄存器IP 来确定中断的优先级。
可以设置不同的优先级以确定中断的响应顺序。
2. 允许中断:通过设置特殊功能寄存器IE 来允许相应的中断源。
将对应中断源的使能位设置为1。
3. 设置触发方式:通过设置特殊功能寄存器TCON 来选择外部中断的触发方式。
可以选择低电平触发、下降沿触发或上升沿触发。
4. 配置中断向量:中断向量是指中断服务程序的入口地址。
可以通过设置特殊功能寄存器Interrupt Vector Table(中断向量表)来指定中断服务程序的入口地址。
这些步骤是80C51 单片机外部中断初始化的一般流程。
具体的实现方式可能会因不同的单片机型号和编译器而有所差异。
在实际编程中,还需要根据具体的需求和硬件连接来进行相应的配置。
钥匙集郝云鹏1. I/O:DDRA=0XFF; PORTA=0XFF; 方向==输出;输出==高电平;DDRA=0XFF; PORTA=0X00; 方向==输出;输出==低电平;DDRA=0X00; PORTA=0XFF; 方向==输入;设置==上拉电阻( 有电位、可有电流、不短路) DDRA=0X00; PORTA=0X00; 方向==输入;设置==高阻态PINA_____状态寄存器____只读状态2. 外部中断___INT0、INT1、INT2 :开中断:SEI();开中断:SREG=0X80;______ 中断总开关关中断:CLI();关中断:SREG=0X00; ______中断总开关MCUCR=0X02;下降沿中断MCUCR=0X03;上升沿中断GICR=0XE0;____INT0 、INT1、INT2____都中断使能_____“外部”中断分开关中断函数写法:#pragma interrupt_handler(中断定义) int0_fun:(中断函数名)2(中断向量号)外部中断向量号:INT0、INT1、INT2_____2、3、193. T/C0:TCCR0=0X01;~~ TCCR0=0X05;___分频设置=1 / 1、1 / 8、1 / 64、1 /256、1 /1024TCCR0=0X06; 时钟由T0引脚输入下降沿驱动TCCR0=0X07; 上升沿驱动计数寄存器TCNT0 _____数据寄存器TIMSK=0X01;____ T/C0中断使能TIMSK=0X00;____ T/C0中断不能4. T/C2:TCCR2=0X01;~~ TCCR0=0X07;___分频= 1 / 1、1 / 8、1/32、1 / 64、1/128、1 /256、1 /1024 “无”_____时钟由T2引脚输入______下降沿驱动上升沿驱动_____项计数寄存器TCNT2_____数据寄存器TIMSK=0X40;_____T/C2中断使能TIMSK=0X00;____ T/C2中断不能5. 快速PWM ___TC0 TC2 TC1 设定:T/C 0___快速PWM、正向比较___模式设定WGM00=1 WGM01=1 COM01=1TCCR0===FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 // TCCR0=6B;0 1 1 0 1 0 1 1(1 / 64)T/C2____快速PWM、正向比较___模式设定WGM20=1 WGM21=1 COM21=1TCCR2===FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20 // TCCR2=6B;0 1 1 0 1 0 1 1(1/32)T/C1A___快速PWM、正向比较___模式设定WGM11=1 WGM10=1 COM1A1=1T/C1B___快速PWM、正向比较___模式设定WGM11=1 WGM10=1 COM1B1=1TCCR1A=== COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10T/C0_____ PWM管脚_____OC0_____是芯片管脚____PB3T/C2_____PWM管脚_____OC2_____是芯片管脚____PD7T/C1A___ PWM管脚_____OC1A____是芯片管脚____PD5T/C1B___ PWM管脚_____OC1B____是芯片管脚____PD46. 异步串行通讯____USART:UDR数据寄存器_____可读可写UBRR=51; 波特率设置9600UCSRB=== RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB80 0 0 接收使能发送使能0 0 0(( UCSRB=0X08;发送使能UCSRB=0X10;接收使能UCSRB=0X18;收发使能))UCSRA=== RXC TXC UDRE FE DOR PE U2X MPCM接收结束发送结束数据寄存器空 0 0 0 0 07.同步串行通讯_____SPI:SPDR____数据寄存器_____可读可写SPSR____状态寄存器SPCR=== SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 // 控制寄存器中断使能SPI使能从低位发送主机选择0 1 1 1 (1/128)SPCR=F7; 中断使能SPI使能从低位发送主机选择无数据为低电平起始沿=下降沿8. 模数转换_____ADC:(1) ADCL、ADCH____数据寄存器_____可读可写(2) ADMUX_____端口选择寄存器____0x00~~~0x07____PA0~~~PA7(3) ADCSRA___状态寄存器+ 控制寄存器ADCSRA=== ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 AD使能AD启动自由运转中断标志中断使能 1 1 0(1/64)ADCSRA=0XE6;AD使能AD启动自由运转1/64分频9. 模拟比较____Analog:( 用于对___AIN0 与AIN1___的比较,当电压AIN0 > AIN1___比较输出位ACO置1 )ACSR____控制寄存器、状态寄存器ACSR=== ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0禁用0 ACO 0 0 0 0 0ACSR=0X00; 模拟比较器使能9. 串行总线______TWI (I2C、IIC) :TWI _______串行总线___多点传送(128个从机)高速传送____400 KHZ 2个电阻____2根线2根线______SAD (数据)、SCL (时钟)2个电阻___上拉电阻___从VCC(1)TWBR_____波特率寄存器TWBR=32; // SCL frequency = 见公式(2)TWDR ____数据寄存器(3)TWSR ____状态寄存器(4)TWAR ____地址寄存器(被控地址)(5)TWCR _____控制寄存器TWCR=== TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE中断标志使能应答START状态STOP状态写冲突TWI使能0 中断使能1. 输入输出_____I/O:DDRA____方向寄存器____0 输入____1 输出PORTA___数据寄存器____1 推挽“1”输出____0推挽“0”输出(吸收电流)PINA_____状态寄存器____只读状态( DDRA___ PORTA) ____方向输出+ 电流输出(1)( DDRA___ PORTA) ____方向输出+ 电流输出(0)( DDRA___ PORTA) ____方向输入+ 上拉电阻( 有电位、可有电流、不短路)( DDRA___ PORTA) ____方向输入+ 高阻态2. 外部中断___INT0、INT1、INT2 :(1)AVR总中断寄存器___SREG___全局中断控制____开、关(总开关寄存器)(说明书第7页)开中断:SEI();( 宏定义方式____头文件#include <macros.h> )关中断:CLI();开中断:SREG=0X80; ( 寄存器定义方式)关中断:SREG=0X00;(2)控制寄存器___MCUCR(触发方式寄存器)MCUCR=0X00;低电平中断MCUCR=0X01;电平变化中断MCUCR=0X02;下降沿中断MCUCR=0X03;上升沿中断(3)外部中断寄存器___GICR(通用中断控制寄存器)(分开关)GICR=0X40;____INT0 中断使能GICR=0X80;____INT1 中断使能GICR=0X20;____INT2 中断使能GICR=0XE0;____INT0 、INT1、INT2____都中断使能(4)中断标记寄存器____GIFR (状态记录)___中断时置1、响应时置0___自动处理中断函数写法:#pragma interrupt_handler int0_fun: 2(中断定义) (中断函数名)(中断向量号)3. 定时、计数、PWM____T/C0:(1)控制寄存器TCCR0( 中断、分频、PWM寄存器)TCCR0=0X00;____中断关闭(T/C0)____只管关闭、不管打开TCCR0=0X01;~~ TCCR0=0X05;___分频=1 / 1、1 / 8、1 / 64、1 /256、1 /1024TCCR0=0X06; 下降沿驱动TCCR0=0X07; 上升沿驱动控制寄存器TCCR0___ PWMWGM01 WGM00____0 0 一般模式0 1 PWM模式____ 1 0 CTC模式 1 1 快速PWM模式TCCR0 | = (1 << WGM01) | (1 << WGM00) ;_____ 快速PWM模式(2)计数寄存器TCNT0 _____数据寄存器(3)分开关寄存器TIMSKTIMSK=0X01;____ T/C0中断使能TIMSK=0X00;____ T/C0中断不能____同上TCCR0=0X00;(4)中断标记寄存器____TIFR (状态记录)___中断时置1、响应时置0___自动处理(5)比较寄存器OCR0___ TCNT0与OCR0的值____2值相等时___发出信号____PWM波TCCR0 | = (1 <<COM01);_____比较匹配4. 定时、计数、PWM ____T/C2:(1)控制寄存器TCCR2( 中断、分频、PWM寄存器)TCCR2=0X00;____中断关闭(T/C2) ____只管关闭、不管打开TCCR2=0X01;~~ TCCR0=0X07;___分频= 1 / 1、1 / 8、1/32、1 / 64、1/128、1 /256、1 /1024 TCCR2 | = (1 << CS22) ; 1 / 64分频控制寄存器TCCR2___PWMWGM21 WGM20____0 0 一般模式0 1 PWM模式____ 1 0 CTC模式 1 1 快速PWM模式(2)计数寄存器TCNT2_____数据寄存器(3)分开关寄存器TIMSKTIMSK=0X40;____ T/C2中断使能TIMSK=0X80;____ T/C2输出、比较、匹配___中断使能(4)中断标记寄存器____TIFR (状态记录)(5)比较寄存器OCR2___ TCNT2与OCR2的值____2值相等时___发出信号____PWM波TCCR2 | = (1 <<COM21);_____比较匹配5. 异步串行通讯____USART:(1)UDR数据寄存器_____可读可写(2) UCSRA 状态寄存器____接收结束、发送结束(3) UCSRB 控制寄存器____接收使能、发送使能(5) UBRRL、UBRRH 波特率寄存器6.同步串行通讯_____SPI:SPI_______同步串行___高速传送//USART___异步串行___低速传送主机发送___MOSI____到从机的MISO从机发送___MISO____到主机的MOSI(1)SPDR____数据寄存器_____可读可写(2)SPSR_____状态寄存器____中断标志(第8位)、写入标志(第7位)(3)SPCR____控制寄存器___1 1 1 1 1 1 1 1中断使能SPI使能分频选择从低位发送=1 时钟相位=0上升沿主机选择=1 时钟极性=0无数据为低电平7. 模数转换_____ADC:(1)ADCL、ADCH____数据寄存器_____可读可写(2)ADMUX_____端口选择寄存器____0x00___PA0 0x01___PA1 0x02___PA2 0x03___PA30x04___PA4 0x05___PA5 0x06___PA6 0x07___PA7(3)ADCSRA___控制寄存器__1 1 1 1 1 1 1 1AD使能AD启动分频选择自由运转中断标志中断使能8. 模拟比较____Analog:用于对___AIN0 与AIN1___的比较,当电压AIN0 > AIN1___比较输出位ACO置1控制寄存器、状态寄存器___ACSRACSR ____1 1 1 1 1 1 1 1 00变化关闭=1 触发方式11上升沿10下降沿空置ACO 输入捕获使能中断标志中断使能if ((ACSR&0X20) == 0X20)PORTB = PORTB | 0XF0 ;9. 串行总线______TWI (I2C、IIC) :TWI _______串行总线___多点传送(128个从机)2根线______SAD (数据)、SCL (时钟)高速传送____400 KHZ2个电阻____2根线2个电阻___上拉电阻___从VCC(1)TWBR_____波特率寄存器(2)TWCR _____控制寄存器(3)TWSR ____状态寄存器(4)TWDR ____数据寄存器(5)TWAR ____地址寄存器(被控地址)TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE TWCR 控制寄存器_____1 1 1 1 1 1 1 1中断标志中断使能呼叫应答使能(ACK)空置起始状态START TWI使能终止状态STOP 写冲突标志9. 串行总线______TWI (I2C、IIC) :TWI _______串行总线___多点传送(128个从机)高速传送____400 KHZ 2个电阻____2根线2根线______SAD (数据)、SCL (时钟)2个电阻___上拉电阻___从VCC(1)TWBR_____波特率寄存器TWBR=32; // SCL frequency = 见公式(2)TWDR ____数据寄存器(3)TWSR ____状态寄存器(4)TWAR ____地址寄存器(被控地址)(5)TWCR ____控制寄存器TWCR=== TWINT TWEA TWSTA TWSTO TWWC TWEN TWIE中断标志使能应答START状态STOP状态写冲突TWI使能0 中断使能SPI___AT90S8535、ATMEGA16:#include <io8535.h>#include <macros.h>#include <delay.h>void init_port(void){ DDRB=0xFF;}void main(){ unsigned char j;init_port();PORTB=0x00;SPCR=0xf7;SPSR=0x00;while(1){for (j=0;j<255;j++){delay_ms(30);SPDR=j;} } }一.中断____详见____“中断解析”二.外部中断___INT0、INT1、INT2 :(1)AVR总中断寄存器___SREG___全局中断控制____开、关(总开关寄存器)(说明书第7页)开中断:SEI();( 宏定义方式____头文件#include <macros.h> )关中断:CLI();开中断:SREG=0X80; ( 寄存器定义方式)关中断:SREG=0X00;(2)控制寄存器___MCUCR(触发方式寄存器)MCUCR=0X02;下降沿中断MCUCR=0X03;上升沿中断( MCUCR=0X00;低电平中断MCUCR=0X01;电平变化中断)GICR=0X40;____INT0 中断使能GICR=0X80;____INT1 中断使能GICR=0X20;____INT2 中断使能GICR=0XE0;____INT0 、INT1、INT2____都中断使能GICR=0XC0;____INT0 、INT1 ____都中断使能(4)中断标记寄存器____GIFR (状态记录)___中断时置1、响应时置0___自动处理三.中断函数写法:#pragma interrupt_handler int0_fun: 2( 中断定义) (中断函数名)(中断向量号)void int0_ fun (void) // 中断函数名___与上面对应{ unsigned char i;for(i=0;i<8;i++) { PORTB=(1<<i); delay_ms(200); PORTB=0x00; } } 四.外部中断向量号:INT0、INT1、INT2_____2、3、19五.说明____以上适用于____A TMEGA 16T/C0(Time 0)____定时(T)、计数(C)、PWM( 调速):(1) 控制寄存器TCCR0 ( 中断、分频、触发、PWM )中断: TCCR0=0X00;____中断关闭(T/C0)____只管关闭、不管打开分频: TCCR0=0X01;~~ TCCR0=0X05;___分频=1 / 1、1 / 8、1 / 64、1 /256、1 /1024 触发:TCCR0=0X06; 下降沿TCCR0=0X07; 上升沿PWM:WGM01 WGM00____0 0 一般模式0 1 PWM模式____ 1 0 CTC模式 1 1 快速PWM模式TCCR0 | = (1 << WGM01) | (1 << WGM00) ;___ 快速PWM模式TCCR0 | = (1 << CS01) | (1 <<CS00) ; 1 / 64分频设置___全在___TCCR0(2)计数寄存器TCNT0 _____数据寄存器____数据在TCNT0(3)分开关寄存器TIMSKTIMSK=0X01;____ T/C0中断使能TIMSK=0X00;____ T/C0中断不能____同上TCCR0=0X00;(4)中断标记寄存器____TIFR (状态记录)___中断时置1、响应时置0___自动处理(5)比较寄存器OCR0___ TCNT0与OCR0的值____2值相等时___发出信号____PWM波(6)详见说明书____ATMEGA16。
51单片机特殊功能寄存器一、中断控制寄存器IE功能解释:1、EA:中断总开关,如果它等于0,则所有中断不允许。
2、X:无效位;3、ET2:定时器2中断允许;4、ES:串行口中断允许;5、ET1:定时器1中断允许;6、EX1:外部中断1中断允许;7、ET0:定时器0中断允许;8、EX0:外部中断0中断允许;二、中断标志及外部中断方式选择寄存器TCON功能解释1、TF1:定时器/计数器1(T1)的溢出中断标志。
当T1从初值开始加1计数到计数满,产生溢出时,由硬件使TF1置“1”,直到CPU响应中断时有硬件复位;2、TR1:T1的运行控制位,该位置1或清0用来实现启东计数或停止计数;3、TF0:定时器/计数器0(T0)的溢出标志位,其作用同TF1;4、TR0:T0的运行控制位,该位置1或清0用来实现启东计数或停止计数;5、IE1:外部中断1中断请求标志位,如果IT1 = 1,则外部中断1引脚P3.1上的电平有1变0时,IE1由硬件置位,外部中断1请求中断。
在CPU响应该中断时由硬件清0;6、IT1:外部中断源1触发方式控制位,边沿/电平触发模式。
7、IE0:外部中断0中断请求标志位,功能同IE1;8、IT0:外部中断源0触发方式控制位,边沿/电平触发模式。
三、定时器方式控制寄存器TMOD高4位(D7-D4)用于定时器1,低四位(D3-D0)用于定时器0;1、Gate:定时器/计数器运行控制位,用来确定外部中断请求引脚(INT0,INT1)是否参与T0或T1的操作控制。
当Gate=0时,只要定时器控制寄存器TCON中的TR0(或TR1)被置1时,T0(或T1)被允许开始计数;当Gate=1时,不仅要TCON中的TR0或TR1置位,还需要P3口的P3.2或P3.3引脚为高电平,才允许计数;2、C/T:定时器方式或计数器方式选择位。
C/T = 1时,为计数器方式;C/T = 0时为定时器模式。
3、M1,M0:定时器四种工作方式选择位:4、四、UART控制寄存器SCON功能解释:1、SMO,SM1:串行口操作方式选择位,两个选择位对应四种状态。
TMS320F28335笔记-外部中断外部中断外部中断寄存器:除此之外,如果我们⽤到某⼀个外部中断,还要设置该外部中断相应的寄存器。
这⾥,需要注意的是外部中断的标志要⾃⼰通过软件来清零。
⽽PIE和CPU的中断标志寄存器由硬件来清零。
举例:EALLOW; // This is needed to write to EALLOW protected registersPieVectTable.XINT2 = &ISRExint; //告诉中断⼊⼝地址EDIS; // This is needed to disable write to EALLOW protected registersPieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block使能PIEPieCtrlRegs.PIEIER1.bit.INTx5= 1; //使能第⼀组中的中断5IER |= M_INT1; // Enable CPU 第⼀组中断EINT; // Enable Global interrupt INTMERTM; // Enable Global realtime interrupt DBGM也就是说,12组中的每个中断都要完成上⾯的相同配置,剩下的才是去配置⾃⼰的中断。
如我们提到的EXINT,即外⾯来个低电平我们就进⼊中断,完成我们的程序。
在这⾥要介绍⼀下,DSP的GPIO⼝都可以配置为外部中断⼝,其配置⽅法如下:GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0; //选择他们是GPIO⼝GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 0;GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0;GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO54 = 0; //选择他们都是输⼊⼝GpioCtrlRegs.GPBDIR.bit.GPIO55 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO56 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO57 = 0;GpioCtrlRegs.GPBQSEL2.bit.GPIO54= 0; //GPIO时钟和系统时钟⼀样且⽀持GPIOGpioCtrlRegs.GPBQSEL2.bit.GPIO55= 0;GpioCtrlRegs.GPBQSEL2.bit.GPIO56= 0;GpioCtrlRegs.GPBQSEL2.bit.GPIO57= 0;GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 54; //中断3选择GPIOGpioIntRegs.GPIOXINT4SEL.bit.GPIOSEL = 55;GpioIntRegs.GPIOXINT5SEL.bit.GPIOSEL = 56;GpioIntRegs.GPIOXINT6SEL.bit.GPIOSEL = 57;XIntruptRegs.XINT3CR.bit.POLARITY= 0; //触发模式为下降沿触发XIntruptRegs.XINT4CR.bit.POLARITY= 0;XIntruptRegs.XINT5CR.bit.POLARITY= 0;XIntruptRegs.XINT6CR.bit.POLARITY= 0;XIntruptRegs.XINT3CR.bit.ENABLE = 1; //使能中断XIntruptRegs.XINT4CR.bit.ENABLE = 1;XIntruptRegs.XINT5CR.bit.ENABLE = 1;XIntruptRegs.XINT6CR.bit.ENABLE = 1;注意⼀点就是外部中断1和2只能对GPIO0—GPIO31配置;外部中断3和4、5、6、7只对GPIO32—GPIO63配置。
S3C2440中断分析中断源未决寄存器(SRCPND)和中断未决寄存器(INTPND)以及外部中断未决寄存器(EINTPEND)分析2013年04月13日飞梦缘整理中断源未决寄存器SRCPND寄存器由32位构成,每一位与一个中断请求信号相关联。
当某个中断源请求中断服务时,SRCPND寄存器中相应位被置为1,即首先在源未决寄存器中做登记,因此该寄存器记录了哪个中断源的请求在等待处理。
注意SRCPND寄存器的每一位由中断源自动设置,而不管中断屏蔽寄存器中对应的位是否被屏蔽,此外,SRCPND寄存器也不受中断控制器的优先级逻辑影响。
当多个中断源提出中断请求后,SRCPND寄存器中相应位均被置为1,然后裁决逻辑基于优先级寄存器来进行处理,选中优先级最高的中断请求,对中断未决寄存器中相应的位设置为1。
注意:INTPND寄存器中只有一位可以被设置为1,如果该中断被屏蔽,SRCPND寄存器中相对应的位被设置为1,但不会导致INTPND寄存器中相应位也被设置为1,SRCPND寄存器是可读可写的,在某个特定中断源的中断服务程序中,SRCPND寄存器的相应位必须被清除,从而保证能收到同一中断源的下一次中断请求,如果从中断服务程序返回时没有清除相应的未决位,中断控制器会误以为该中断源产生了另一个中断请求,换句话说,如果SRCPND寄存器的某位始终设置为1,则被认为始终有一个与该位相对应的中断源,即一个有效的中断请求等待处理,何时进行清除相应的未决位取决于用户需求,如果想在中断服务程序中,再收到相同的中断源提出的另一个有效的中断请求,则应该首先清除相应的未决位,用户可以通过写数据“1”到SRCPND寄存器来清除相应的未决位,数据位为“1”表示该位置的未决位将被清除,而0表示该位置的未决位保持不变。
———————————————————————————————————————————————————前几天把外部中断基本搞好了,但对几个中断寄存器的具体含义和区别不是很了解。
外部中断寄存器
外部中断控制寄存器EICRA (控制外部中断0-3)
若SREG寄存器I标志及EIMSK寄存器相应中断屏蔽置1,其对应的中断触发方式如下表:
若选择了低电平中断,低电平必须保持到当前指令完成,才会产生中断。
只要将引脚拉低,就会产生中断请求。
外部中断控制寄存器EICRB (控制外部中断4-7)
若SREG寄存器I标志及EIMSK寄存器相应中断屏蔽置1,其对应的中断触发方式如下表:
若选择了低电平中断,低电平必须保持到当前指令完成,才会产生中断。
只要将引脚拉低,就会产生中断请求。
外部中断屏蔽寄存器EMISK
相应寄存器INT7-INT0位被置1,SREG置1时,对应外部引脚中断使能。
外部中断标志寄存器EIFG。