Hello good afternoon everyone,
I am trying to write a C code for the HCS12 board that plays a tune at the prompt of a pushbutton. I have written individual C code for for the buzzer, the LCD, and the LED's. Separately they run fine but when I tried to combine the codes into a single program I am having issues with the buzzer. The buzzer only plays a single note instead of the full track. I could use a set of fresh eyes to spot any misplaced { }. If someone could please help it would be extremely grateful.
<<<<<THE CODE>>>>>>>
# define c 2867
# define d 2554
# define e 2276
# define f 2148
# define g 1914
# define a 1705
# define b 1519
# define C 1434
# define D 1277
# define E 1138
# define F 1074
# define G 947
# define A 853
# define B 760
# define Bf 800
# define CC 717
# define DD 639
void oc5ISR(void);
void Setup (void);
void Draw (void);
void SetClk8(void);
int x;
int y;
int dlycnt;
////////////////////////////////////////////////////
void main(void)
{
SetClk8();
DDRJ |= 0xFF;
PTJ &= 0xFD;
DDRB |= 0xFF;
PTB |= 0xFF;
RTICTL = 0x40;
CRGINT |= RTIE;
DDRK = 0xFF;
Setup();
Draw();
TSCR1 = 0x90; // enable TCNT and fast timer flag clear
TSCR2 = 0x03; // set prescaler to TCNT to 1:8
TIOS |= BIT5; // enable OC5
TCTL1 = 0x04; // select toggle for OC5 pin action
dlycnt = c; // use high-frequency delay count first
TC5 = TCNT + dlycnt; // start an OC5 operation
TIE |= BIT5; // enable TC5 interrupt
asm("cli");
while(1) {
//stanza1
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = b; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = c; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = c; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to high-frequency tone
//
// stanza2
delayby100ms(10); // wait for half a second
dlycnt = b; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to high-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = G; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = b; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = C; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to low-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = d; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = b; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = D; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = C; // switch to high-frequency tone
//
// stanza3
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = c; // switch to high-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = b; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = C; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = b; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to low-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
//
// stanza4
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = b; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = C; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = g; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = F; // switch to high-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = E; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = f; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
//
// stanza5
delayby100ms(1); // wait for half a second
dlycnt = C; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = d; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = C; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = b; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = E; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = D; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
//
// stanza6
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = d; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = E; // switch to high-frequency tone
delayby100ms(5); // wait for half a second
dlycnt = b; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = D; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = C; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = c; // switch to low-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = e; // switch to high-frequency tone
delayby100ms(1); // wait for half a second
dlycnt = a; // switch to low-frequency tone
//while(1); // Do we need to refresh at some point?
}
//}
while(1);
}
interrupt void rtiISR(void)
{
unsigned char SegPat[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
CRGFLG = 0x80;
x=0;
for(y=0;y<5;y++)
{
if(y<4)
{
PTB |= 0xFF;
delayby1ms(400);
PTB &= 0x00;
delayby1ms(400);
}
else
if(y<8)
{
for(x=0;x<8;x++)
{
PTB = SegPat[x];
delayby1ms(400);
}
}
else
if(y<12)
{
for(x=7;x>-1;x--)
{
PTB = SegPat[x];
delayby1ms(400);
}
}
}
}
////////////////////////////////////////////////////////////
interrupt void oc5ISR(void)
{
TC5 += dlycnt;
}
extern void near rtiISR(void);
#pragma CODE_SEG __NEAR_SEG NON_BANKED
#pragma CODE_SEG __DEFAULT
typedef void (*near tIsrFunc)(void);
const tIsrFunc _vect[] @0xFFF0 = {
rtiISR
};
void SetClk8 (void) {
SYNR = 0x02; // set SYSCLK to 24 MHz from a 4-MHz oscillator
REFDV = 0; // "
PLLCTL = 0x60; // turn on PLL, set automatic
while(!(CRGFLG & LOCK));
CLKSEL |= PLLSEL; // clock derived from PLL
}
void Setup(void) {
unsigned char init[7] = {
0x33,0x32,0x28,0x06,0x0E,0x01,0x80
};
int i;
for(i = 0; i < 7; i++) {
LCDControl(init[i]);
delayby1ms(1);
}
}
void Draw(void) {
unsigned char output[30] = {
'E','m','e','r','a','l','d',' ',
'H','i','l','l',' ',' ',' ',0xC0,
'b','y',':','S','o','n','i','c',
'.',' ',' ',' ',' ',' '
};
int i;
for (i = 0; i < 15; i++) {
delayby1ms(1);
LCDData(output[i]);
}
delayby1ms(1);
LCDControl(0xC0);
for(i=16; i<30; i++){
delayby1ms(1);
LCDData(output[i]);
}
}
<<<END>>>
Thanks again! i have attached a .zip file of the original files just in case