打印
[Atmel]

用AtmelStudio6.2跑mega16例程(5)

[复制链接]
960|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

外部中断0例程:这个原理是INT0中断,在中断程序中让有源蜂鸣发声。

这个是在线仿真的结果,可以看出中断程序已经进入。



程序如下:
/*
* GccApplication8.c
*
* Created: 2014-8-31 10:57:46
*  Author: Administrator
*/


#include <avr/io.h>
#include <avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int
//定义按钮、蜂鸣器及LED与端口的连接
#define  button1     2//PIND|_BV(2)  
#define  sounder     7//PORTD|_BV(7)
#define  redLED1     0//PORTC.0
#define  blueLED1    1//PORTC.1
#define  greenLED1   2//PORTC.2
#define  yellowLED1  3//PORTC.3
#define  redLED2     4//PORTC.4
#define  blueLED2    5//PORTC.5
#define  greenLED2   6//PORTC.6
#define  yellowLED2  7//PORTC.7
void delay(uint k)
{   uint m,n;
        for(m=0;m<k;m++)
        {
                for(n=0;n<1140;n++)
                {;}
        }
}
//interrupt[EXT_INT0] void int0_isr(void)
ISR(INT0_vect)
{ uint j;
        for(j=0;j<1250;j++)
        {
                PORTD |=_BV(sounder);
                delay(2);
                PORTD ^=_BV(sounder);
                delay(2);
        }
}
int main(void)
{
        DDRC=0xFF;
        PORTC=0xFF;
        DDRD=0xFF;//before 0xFB
        PORTD=0xFF;
        MCUCR=0x02;
        GICR=0x60;
        //asm("sei");  //SREG=0x80;
        sei();
        while(1)
        {
                PORTC=0x00;
                delay(1000);
                PORTC=0xFF;
                delay(1000);
        }
}


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6956

帖子

67

粉丝