说明:1、下面的 C 程序,定义了外中断 0、外中断 1、外中断 2 三个中断,并用三个开关
作为中断源(如电路图所示),并用 LED 显示相应的状态。
2、可从程序中看到如何定义相应寄存器。
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL 22
PC1/SDA 23
PC2/TCK 24
PC3/TMS 25
PC4/TDO 26
PC5/TDI 27
PC6/TOSC1 28
PC7/TOSC2 29
PD0/RXD 14
PD1/TXD 15
PD2/INT0 16
PD3/INT1 17
PD4/OC1B 18
PD5/OC1A 19
PD6/ICP 20
PD7/OC2 21
AVCC 30
AREF 32
+5V
外中断
#include
#include
int time;
#pragma interrupt_handler int0:2//---中断矢量 2
#pragma interrupt_handler int1:3//---中断矢量 3
#pragma interrupt_handler int2:19//---中断矢量 19
void int0(void)
{PORTA|=(1<
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
一
//MCUSR=0X40;//0#,1#外中断上升沿有效
//MCUCR=0X0F;//2#,外中断上升沿
MCUSR=0X00;//2#外中断下降沿
MCUCR=0X0A; //0#,1#外中断下降沿
GICR=0XE0;//开通 0#,1#,2#外中断
DDRA=0XC0;//設置 PA6,PA7 為輸出
SEI();//关总中断
while(1){;}
}
表一 狀態寄存器 SREG
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
I T H S V N Z C
注:
1、该寄存器除 bit7 位为全局中断使能位,该位有两个特殊指令 SEI 和 CLI 用于置位和清零。
2、如果只是应用,该寄存器只需我们设置 bit7,其它的不用管。
表二 MCU 控制寄存器 MCUCR
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
SE:MCU休眠使能位
SM1~SM0:MCU 休眠模式选择
SM2 SM1 SM0 休眠模式
0 0 0 空闲
0 0 1 ADC 噪声抑制模式
0 1 0 掉电模式
0 1 1 省电模式
1 0 0 保留
1 0 1 保留
1 1 0 Standby(1) 模式
1 1 1 扩展Standby(1) 模式
ISC11~ISC10:外部中断 1 的中断检测方式
ISC11 ISC10 INT1中断
0 0 低电平中断
0 1 INT1 引脚上任意的逻辑电平变化都将引发中断
1 0 下降沿中断
1 1 上升沿中断
ISC01~ISC00:外部中断 0 的中断检测方式
ISC01 ISC00 INT0中断
0 0 低电平中断
0 1 INT1 引脚上任意的逻辑电平变化都将引发中断
1 0 下降沿中断
1 1 上
表三 MCU 控制与状态寄存器-MCUCSR
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
JTD ISC2 - JTRF WDRF BORF EXTRF PORF
1、Bit6为外中断2触发方式控制位,。若ISC2 写0, INT2 的下降沿激活中断。 若ISC2 写1,
INT2 的上升沿激活中断。(注:INT2没有电平触发中断)
2、其它位的用途请参考其它文献。
表四 通用中断屏蔽寄存器 GICR
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
INT1 INT0 INT2 - - - IVSEL IVCE
INT1:使能外部中断请求1
INT0:使能外部中断请求0
INT2:使能外部中断请求 2
表五 通用中断标志寄存器 GIFR
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
INTF1 INTF0 INTF2 - - - IVSEL IVCE
INTF1:外部中断标志
INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。如果SREG
的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1” 来清零。
INTF0:外部中断标志
INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。如果SREG
的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1” 来清零。
INTF2:外部中断标志
INT2 引脚电平发生跳变时触发中断请求,并置位相应的中断标志 INTF1。如果 SREG 的位
I 以及 GICR 寄存器相应的中断使能位 INT2 为”1”,MCU 即跳转到相应的中断向量。进入
中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1” 来清零。
個人說明:本文為本人學習的筆記,有不足之處請多多包涵,還請各路大俠多多指教。