单片机八字数码管编程实例(小5带你飞4)

在这里还是先说了一个大前提,这里讲解AVR单片机,为啥我选择了使用atmega 328p这个芯片,那是应为现在arduino很火,而arduino 用的就是atmega 328p这个芯片,特别是在创客教育、STEAM教育和一些开发公司都在大量的使用arduino这个开源硬件。了解好atmega 328p了,arduino基本上就游刃有余了,avr系列也基本上熟悉了。

先看几个基本的概念:

  1. atmega 328p有26个中断源,每一个中断源都有一个独立的唯一的中断向量作为中断服务程序的入口地址。

  2. 所有的中断源都有自己独立的使能位。

  3. 全局中断和相应的中断使能位都被置位了,在中断标志位置位时,才执行中断服务程序。

来看看datasheet:

单片机八字数码管编程实例(小5带你飞4)(1)

简单的说一下:328p有2个外部中断,分别是INT0和INT1,两个中断都是由单片机的外部引脚触发的,具体是哪两个引脚,自己去搜一下芯片就知道了。如果允许外部中断的话,即使你把这两个引脚设置为输出,外部中断也会被触发,这个地方要注意一下,好多人都弄不明白。可选择的触发方式为:The INT0 and INT1 interrupts can be triggered by a falling or rising edge or a low level(这是datasheet上的原话,关于不明白啥时上升沿触发,下降沿触发,低电平触发的,可以评论,看情况,出一个教程)。

  • MCUCR:MCU控制寄存器。作用是,其实就是控制中断向量表的位置的。

  • 单片机八字数码管编程实例(小5带你飞4)(2)

    说明一下:

    bit 1 :中断向量的选择,就是选择把中断向量发在哪个位置,在flash还是bootloader。

    bit 2 :中断向量改变使能

    示例代码:

    单片机八字数码管编程实例(小5带你飞4)(3)

    2. EICRA:外部中断控制寄存器A。作用:外部触发方式的选择

    单片机八字数码管编程实例(小5带你飞4)(4)

    说明一下:

    bit 3、2:INT 1的触发方式选择

    单片机八字数码管编程实例(小5带你飞4)(5)

    bit1、0:INT 0的触发方式选择

    单片机八字数码管编程实例(小5带你飞4)(6)

    3.EIMSK:外部中断屏蔽寄存器。作用:其实就是中断使能位的控制。

    单片机八字数码管编程实例(小5带你飞4)(7)

    说明一下:

    bit 1:状态寄存器的第七位置位,bit 1 置位,INT1中断使能。

    bit 0:同理,INT0 中断使能。

    4.EIFR:外部中断标志寄存器。作用:可以用来检测是不是触发中断请求了。

    单片机八字数码管编程实例(小5带你飞4)(8)

    说明一下:

    bit 1:INT 1触发了中断请求,该位置位。

    bit 0:INT 0触发了中断请求,该位置位。

    下面还有几个寄存器:就不详细的介绍了,可直接查看datasheet,弄明白我上面讲的那些也就差不多了。

    5.PCICR :引脚改变中断控制寄存器

    6. PCIFR :引脚改变中断标志寄存器

    7.PCMSK2 : 引脚改变屏蔽寄存器 2

    8.PCMSK1 : 引脚改变屏蔽寄存器 1

    9.PCMSK0 : 引脚改变屏蔽寄存器 0

    关于外部引脚中断的示例程序,我们将在下一个教程中给出。欢迎大家关注、点赞。

    ,

    免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

      分享
      投诉
      首页