/*****************************************************
Project : Melody Player
Chip type : ATmega32
AVR Core Clock frequency: 1.000000 MHz
*****************************************************/
#include <mega32a.h>
#include <delay.h>
#include "octave_duration.h" //octave duration timer value
#include "notes.h" //Notes Of Melody
#include <alcd.h>
bit note_f=0;
unsigned char duration;
// Timer 0 output compare interrupt service routine
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
if (duration!=0) duration--;
}
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
if (note_f!=0) PORTB ^=(1<<0);
else PORTB &=~ (1<<0);
}
void delay1s (){
#asm("cli");
PORTB&=0xFE;
delay_ms(1000);
#asm("sei");}
void melody_player(const flash unsigned char *notes_ , unsigned int size, unsigned char *melody_name){
unsigned int i;
lcd_clear();
lcd_puts(melody_name);
for(i=0;i<size;i+=2)
{
if (notes_[i]!=P)
{
#asm("cli");
note_f=1;
duration=notes_[i+1];
TCNT1=0;
OCR1A=timer1_values[notes_[i]-1];
#asm("sei");
}
else
{
note_f=0;
duration=notes_[i+1];
}
while(duration){if(PINA.0==0)break;}
}
delay1s();
}
void main(void)
{
DDRB=0x01;
DDRA=0xfe;
PORTA=0x01;
TCCR0=0x0D;
OCR0=0x40;
TCCR1B=0x09;
TIMSK=0x12;
DDRD=0xff;
PORTD=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
#asm("sei")
while(1)
{
melody_player(Fur_Elise,(sizeof(Fur_Elise)),"Fur_Elise ");
melody_player(nokia,(sizeof(nokia)),"nokia ");
melody_player(Sony,(sizeof(Sony)),"Sony ");
melody_player(Simens3,(sizeof(Simens3)),"Simens3 ");
melody_player(Simens2,(sizeof(Simens2)),"Simens2 ");
melody_player(Simens1,(sizeof(Simens1)),"Simens1 ");
melody_player(Sanyo13,(sizeof(Sanyo13)),"Sanyo13 ");
melody_player(Sanyo12,(sizeof(Sanyo12)),"Sanyo12 ");
melody_player(Sanyo8,(sizeof(Sanyo8)),"Sanyo8 ");
melody_player(Sanyo6_2,(sizeof(Sanyo6_2)),"Sanyo6_2 ");
melody_player(Sanyo6_1,(sizeof(Sanyo6_1)),"Sanyo6_1 ");
melody_player(Sanyo3,(sizeof(Sanyo3)),"Sanyo3 ");
melody_player(Popcorn2,(sizeof(Popcorn2)),"Popcorn2 ");
melody_player(Oxygen2,(sizeof(Oxygen2)),"Oxygen2 ");
melody_player(Noname,(sizeof(Noname)),"Noname ");
melody_player(Mozart2,(sizeof(Mozart2)),"Mozart2 ");
melody_player(Mortal2,(sizeof(Mortal2)),"Mortal2 ");
melody_player(Life,(sizeof(Life)),"Life ");
melody_player(Sal,(sizeof(Sal)),"Sal ");
melody_player(Mozart,(sizeof(Mozart)),"Mozart ");
melody_player(Ali_Kocholo,(sizeof(Ali_Kocholo)),"Ali_Kocholo ");
melody_player(Ghado_Bala,(sizeof(Ghado_Bala)),"Ghado_Bala ");
melody_player(Jingle_Bells,(sizeof(Jingle_Bells)),"Jingle_Bells ");
melody_player(Gol_Orkide,(sizeof(Gol_Orkide)),"Gol_Orkide ");
melody_player(Mammad_Nabodi,(sizeof(Mammad_Nabodi)),"Mammad_Nabodi ");
melody_player(Love_Story,(sizeof(Love_Story)),"Love_Story ");
melody_player(Elahe_Naz,(sizeof(Elahe_Naz)),"Elahe_Naz ");
melody_player(Morghe_Sahar,(sizeof(Morghe_Sahar)),"Morghe_Sahar ");
melody_player(God_Father,(sizeof(God_Father)),"God_Father ");
melody_player(Yar_Dabestani,(sizeof(Yar_Dabestani)),"Yar_Dabestani ");
melody_player(Titanics,(sizeof(Titanics)),"Titanics ");
melody_player(Pappilon,(sizeof(Pappilon)),"Pappilon ");
melody_player(Soltan_Ghalbha,(sizeof(Soltan_Ghalbha)),"Soltan_Ghalbha ");
melody_player(Tavalod,(sizeof(Tavalod)),"Tavalod ");
melody_player(Bahar,(sizeof(Bahar)),"Bahar ");
melody_player(ABC,(sizeof(ABC)),"ABC ");
melody_player(Coin,(sizeof(Coin)),"Coin ");
melody_player(Ended,(sizeof(Ended)),"Ended ");
melody_player(Pause,(sizeof(Pause)),"Pause ");
melody_player(Pink_Panther,(sizeof(Pink_Panther)),"Pink_Panther ");
melody_player(Sorode_Melli,(sizeof(Sorode_Melli)),"Sorode_Melli ");
melody_player(Nazi ,(sizeof(Nazi )),"Nazi ");
melody_player(Azize_Del ,(sizeof( Azize_Del)),"Azize_Del ");
melody_player( Jan_Maryam,(sizeof( Jan_Maryam)),"Jan_Maryam ");
melody_player(Gol_Sang ,(sizeof( Gol_Sang)),"Gol_Sang ");
melody_player(Ghogha ,(sizeof( Ghogha)),"Ghogha ");
melody_player(Mobarak ,(sizeof(Mobarak )),"Mobarak ");
melody_player(Esfahan2 ,(sizeof(Esfahan2 )),"Esfahan2 ");
melody_player(Esfahan ,(sizeof( Esfahan)),"Esfahan ");
melody_player(Balaye_Joon ,(sizeof( Balaye_Joon)),"Balaye_Joon ");
melody_player(Emam_Ali ,(sizeof( Emam_Ali)),"Emam_Ali ");
melody_player(Popcorn ,(sizeof( Popcorn)),"Popcorn ");
melody_player(Man_Amadeam ,(sizeof(Man_Amadeam )),"Man_Amadeam ");
melody_player(Happy_birthday ,(sizeof( Happy_birthday)),"Happy_birthday ");
melody_player( old_mac,(sizeof(old_mac )),"old_mac ");
melody_player( tetris,(sizeof( tetris)),"tetris ");
melody_player(Take ,(sizeof(Take )),"Take ");
melody_player(DoomLev1 ,(sizeof( DoomLev1)),"DoomLev1 ");
melody_player( smbdeath,(sizeof(smbdeath )),"smbdeath ");
melody_player( MahnaMahna ,(sizeof( MahnaMahna )),"MahnaMahna ");
melody_player( Smurfs ,(sizeof( Smurfs)),"Smurfs ");
melody_player(Gadget ,(sizeof(Gadget )),"Gadget ");
melody_player(Jeopardy ,(sizeof( Jeopardy )),"Jeopardy ");
melody_player(MissionImp ,(sizeof( MissionImp )),"MissionImp ");
melody_player( Flinstones ,(sizeof( Flinstones )),"Flinstones ");
melody_player( A_Team ,(sizeof( A_Team ))," A_Team ");
melody_player( GoodBad,(sizeof( GoodBad )),"GoodBad ");
melody_player( StarWars ,(sizeof(StarWars )),"StarWars ");
melody_player( MASH ,(sizeof(MASH )),"MASH ");
melody_player(Bond ,(sizeof(Bond )),"Bond ");
melody_player(thCenFox20 ,(sizeof( thCenFox20 )),"thCenFox20 ");
melody_player( Looney,(sizeof( Looney )),"Looney ");
melody_player( Xfiles ,(sizeof( Xfiles )),"Xfiles ");
melody_player(Muppets ,(sizeof( Muppets )),"Muppets ");
melody_player( Entertainer ,(sizeof(Entertainer )),"Entertainer ");
melody_player( TakeOnMe ,(sizeof( TakeOnMe )),"TakeOnMe ");
melody_player( Indiana ,(sizeof(Indiana )),"Indiana ");
melody_player( The_Simpsons ,(sizeof( The_Simpsons )),"The_Simpsons ");
melody_player( Super_Mario_Title,(sizeof( Super_Mario_Title)),"Super_Mario_Title ");
melody_player( Super_Mario_Main ,(sizeof(Super_Mario_Main )),"Super_Mario_Main ");
melody_player( marion ,(sizeof( marion )),"marion ");
melody_player( SMBUndergr ,(sizeof(SMBUndergr )),"SMBUndergr ");
melody_player( SMBWater ,(sizeof( SMBWater )),"SMBWater ");
melody_player( ey_iran ,(sizeof(ey_iran )),"ey_iran ");
melody_player( Europe ,(sizeof( Europe )),"Europe ");
melody_player( Corona ,(sizeof( Corona)),"Corona ");
melody_player( Oxygen ,(sizeof( Oxygen )),"Oxygen ");
melody_player( Titanic ,(sizeof( Titanic )),"Titanic ");
melody_player( Tbat ,(sizeof( Tbat)),"Tbat ");
melody_player( Nation,(sizeof(Nation )),"Nation ");
melody_player(Beautiful ,(sizeof( Beautiful )),"Beautiful ");
melody_player( Water ,(sizeof( Water )),"Water ");
melody_player( Tbank ,(sizeof(Tbank )),"Tbank ");
melody_player( Ring ,(sizeof(Ring ))," Ring ");
melody_player(Money ,(sizeof( Money )),"Money ");
melody_player( Mamma ,(sizeof( Mamma )),"Mamma ");
melody_player(Gimme ,(sizeof( Gimme)),"Gimme ");
melody_player(Walk ,(sizeof( Walk)),"Walk ");
melody_player( Luna ,(sizeof( Luna )),"Luna ");
melody_player(Opium ,(sizeof( Opium )),"Opium ");
melody_player( Love ,(sizeof(Love )),"Love ");
melody_player( Long ,(sizeof( Long )),"Long ");
melody_player( Down ,(sizeof( Down )),"Down ");
melody_player( Bailando ,(sizeof( Bailando )),"Bailando ");
melody_player( Batman ,(sizeof( Batman )),"Batman ");
melody_player( Stronger ,(sizeof( Stronger )),"Stronger ");
melody_player( Lucky ,(sizeof( Lucky )),"Lucky ");
melody_player( Baby,(sizeof( Baby )),"Baby ");
melody_player( tanki ,(sizeof(tanki ))," tanki ");
melody_player( mario ,(sizeof( mario )),"mario ");
melody_player(miniPolka ,(sizeof(miniPolka )),"miniPolka ");
melody_player( bumer ,(sizeof( bumer )),"bumer ");
melody_player( mortal ,(sizeof( mortal )),"mortal ");
melody_player( kuznechik ,(sizeof( kuznechik)),"kuznechik ");
}
}