电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

ATmega16外部中断INT0的使用

 外部中断INT0的使用

首先看数据手册关于外部中断的说明:

这个就是GICR寄存器的内部了,当那个位置1的时候则表示开启允许位。

上图是我们的中断总允许位。

这个主要是控制外部中断的触发方式是低电平或是任何电平变化或是上升沿还是下降沿,在本程序中我们采用了默认的方式低电平触发方式来触发中断的。

上程序了:

#include<iom16v.h>

#include<macros.h>//引用此头文件主要是调用开总中断的函数

 

#define uint8 unsigned char

#define uint16 unsigned int

void delay(uint16 z)

{

       uint16 x,y;

        for(x=z;x>0;x--)

             for(y=110;y>0;y--);

}

 

////////////////////////////////////////////////////////////////////////////

void port_init(void)

{

       DDRB=0xff;//配置为输出

       PORTB=0x00;//全亮

       DDRD=0x00;//配置为输入状态

       PORTD=0xff;//配置为上拉状态

}

/////////////////////////////////////////////////////////////////////////////

#pragma interrupt_handler Int0:2

void Int0(void)

{

        uint8 temp=0x01;

        while(1)

      {

 

              if(temp==0x00)

                     {

                            temp=0x01;

                     }

              PORTB=~temp;

             temp<<=1;

              delay(500);

      }

}

/////////////////////////////////////////////////////////////////////////////

void main(void)

{

       port_init();//端口初始化操作

       GICR |=(1<<INT0);//确定为外部中断0使能

        SEI();//开总中断允许

        while(1);//等待中断的到来

}

博主
578645627@qq.com
惊涛骇浪's Blog
QQ群:电子爱好者194554761欢迎您的加入!
点击跳转