在这里还是先说了一个大前提,这里讲解AVR单片机,为啥我选择了使用atmega 328p这个芯片,那是应为现在arduino很火,而arduino 用的就是atmega 328p这个芯片,特别是在创客教育、STEAM教育和一些开发公司都在大量的使用arduino这个开源硬件。了解好atmega 328p了,arduino基本上就游刃有余了,avr系列也基本上熟悉了。
先看几个基本的概念:
atmega 328p有26个中断源,每一个中断源都有一个独立的唯一的中断向量作为中断服务程序的入口地址。
所有的中断源都有自己独立的使能位。
全局中断和相应的中断使能位都被置位了,在中断标志位置位时,才执行中断服务程序。
来看看datasheet:
MCUCR:MCU控制寄存器。作用是,其实就是控制中断向量表的位置的。
说明一下:
bit 1 :中断向量的选择,就是选择把中断向量发在哪个位置,在flash还是bootloader。
bit 2 :中断向量改变使能
示例代码:
2. EICRA:外部中断控制寄存器A。作用:外部触发方式的选择
说明一下:
bit 3、2:INT 1的触发方式选择
bit1、0:INT 0的触发方式选择
3.EIMSK:外部中断屏蔽寄存器。作用:其实就是中断使能位的控制。
说明一下:
bit 1:状态寄存器的第七位置位,bit 1 置位,INT1中断使能。
bit 0:同理,INT0 中断使能。
4.EIFR:外部中断标志寄存器。作用:可以用来检测是不是触发中断请求了。
说明一下:
bit 1:INT 1触发了中断请求,该位置位。
bit 0:INT 0触发了中断请求,该位置位。
下面还有几个寄存器:就不详细的介绍了,可直接查看datasheet,弄明白我上面讲的那些也就差不多了。
5.PCICR :引脚改变中断控制寄存器
6. PCIFR :引脚改变中断标志寄存器
7.PCMSK2 : 引脚改变屏蔽寄存器 2
8.PCMSK1 : 引脚改变屏蔽寄存器 1
9.PCMSK0 : 引脚改变屏蔽寄存器 0
关于外部引脚中断的示例程序,我们将在下一个教程中给出。欢迎大家关注、点赞。