From a5ae30562fc5adbabaf46763b8826ac4d843c26e Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Sat, 10 Jun 2017 22:38:24 +0200 Subject: working --- floppyMusic/main.c | 158 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 147 insertions(+), 11 deletions(-) (limited to 'floppyMusic/main.c') diff --git a/floppyMusic/main.c b/floppyMusic/main.c index 09ca8d0..18e8dbf 100644 --- a/floppyMusic/main.c +++ b/floppyMusic/main.c @@ -5,6 +5,28 @@ * Author : Jonas */ + #define c 130 + #define d 147 + #define e 165 + #define f 175 + #define g 195 + #define gS 208 + #define a 220 + #define aS 228 + #define b 233 + #define cH 261 + #define cSH 277 + #define dH 294 + #define dSH 311 + #define eH 330 + #define fH 349 + #define fSH 370 + #define gH 390 + #define gSH 415 + #define aH 440 + + #define _GET_UBBR(BAUD) ( (F_CPU / 16 * BAUD) - 1) + #ifndef F_CPU #define F_CPU 16000000UL //CPU Running at 16MHz #endif @@ -12,25 +34,139 @@ #include #include "floppy.h" -//#include "uart.h" +void imperial_march(); + +void beep(int _f, unsigned int _t); + +void delay_ms(unsigned int ms ); + + int main(void) { - //uart_init(9600); - //DDRC = 0xff; floppy_setup(&PORTC, &DDRC, &PORTB, &DDRB); - floppy_set_frequency(0, 70); + floppy_set_frequency(0, 0); + floppy_set_frequency(1, 0); DDRD = 0xff; - PORTD = 0xff; //DEBUG - - //uart_send_string("Floppy Music\n"); while (1) { - //floppy_set_frequency(0, uart_recieve()); - //uart_send_string("Floppy Music\n"); - //_delay_ms(500); - //PORTD ^= 0xff; + play_imperial_march(); + _delay_ms(2000); } +} + +void delay_ms(unsigned int ms ) +{ + unsigned int i; + for (i = 0; i<= ms; i++) + _delay_ms(1); +} + +void play_imperial_march() +{ + beep(a, 500); + beep(a, 500); + beep(a, 500); + beep(f, 350); + beep(cH, 150); + beep(a, 500); + beep(f, 350); + beep(cH, 150); + beep(a, 650); + + delay_ms(150); + //end of first bit + + beep(eH, 500); + beep(eH, 500); + beep(eH, 500); + beep(fH, 350); + beep(cH, 150); + beep(gS, 500); + beep(f, 350); + beep(cH, 150); + beep(a, 650); + + delay_ms(150); + //end of second bit... + + beep(aH, 500); + beep(a, 300); + beep(a, 150); + beep(aH, 400); + beep(gSH, 200); + beep(gH, 200); + beep(fSH, 125); + beep(fH, 125); + beep(fSH, 250); + + delay_ms(250); + + beep(aS, 250); + beep(dSH, 400); + beep(dH, 200); + beep(cSH, 200); + beep(cH, 125); + beep(b, 125); + beep(cH, 250); + + delay_ms(250); + + beep(f, 125); + beep(gS, 500); + beep(f, 375); + beep(a, 125); + beep(cH, 500); + beep(a, 375); + beep(cH, 125); + beep(eH, 650); + + //end of third bit... (Though it doesn't play well) + //let's repeat it + + beep(aH, 500); + beep(a, 300); + beep(a, 150); + beep(aH, 400); + beep(gSH, 200); + beep(gH, 200); + beep(fSH, 125); + beep(fH, 125); + beep(fSH, 250); + + delay_ms(250); + + beep(aS, 250); + beep(dSH, 400); + beep(dH, 200); + beep(cSH, 200); + beep(cH, 125); + beep(b, 125); + beep(cH, 250); + + delay_ms(250); + + beep(f, 250); + beep(gS, 500); + beep(f, 375); + beep(cH, 125); + beep(a, 500); + beep(f, 375); + beep(cH, 125); + beep(a, 650); + //end of the song +} + +void beep(int _f, unsigned int _t) +{ + PORTD = ~ floppy_calc_freq(_f / 3); + floppy_set_frequency(0, floppy_calc_freq(_f / 3)); + floppy_set_frequency(1, floppy_calc_freq(_f / 3)); + delay_ms(_t); + PORTD = 0xff; + floppy_set_frequency(0, 0); + floppy_set_frequency(1, 0); + _delay_ms(10); } \ No newline at end of file -- cgit v1.2.3