📄 app.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 + -