⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.c

📁 AVR Devolpment Board
💻 C
字号:
#include "avr/io.h"
#include "avr/pgmspace.h"
#include "avr/interrupt.h"

unsigned int  t[9]={0,956,865,759,716,638,568,506,470};
unsigned char d[9]={0,105,116,132,140,157,176,198,209};

#define Max_note  32

unsigned char music[Max_note]={
5,2,8,2,5,2,4,2,3,2,2,2,1,4,1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8};

unsigned char note_n;
unsigned int  int_n;

unsigned char play_on;


SIGNAL(INT1_vect)
{
	if(!play_on)
	{
		TCCR1B = 0x09;
		PORTD&=~(1<<PD5);
	}
}

SIGNAL(TIMER1_COMPA_vect)
{
	if(!play_on)
	{
		note_n =0;
		int_n  =1;
		play_on=1;
		PORTD&=~(1<<PD5);
	}
	else
	{
		if(--int_n==0)
		{
			TCCR1B=0x08;
			if(note_n<Max_note)
			{
				OCR1A=t[music[note_n]];
				int_n=d[music[note_n]];
				note_n++;
				int_n=int_n*music[note_n];
				note_n++;
				TCCR1B=0x09;
			}
			else
				play_on=0;
		}
	}
}

int main(void)
{
	PORTD=0x08;
	DDRD =0x20;
	TCCR1A=0x40;
	TCCR1B=0x08;
	TIMSK=0x10;
	GICR|=0x80;
	MCUCR=0x08;
	MCUCSR=0x00;
	GIFR=0x80;
	asm("sei");
	while(1)
	{
		;
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -