Hallo,
bin dabei mir einen Mp3 Player zu basteln. Nun habe ich ein kleines
problem und zwar kriege ich meinen AT89C51SND1C nicht zum abspielen.
Besser gesagt ich kriege ich nicht zum Interrupt. Hier mein Code.
1 | #include <stdio.h>
|
2 | #include <at8xc51snd1.h>
|
3 |
|
4 | code unsigned char *Adresse;
|
5 |
|
6 | extern void initlcd (void);
|
7 | extern void loeschenlcd (void);
|
8 | extern void textlcd (unsigned char *text, unsigned char zeile);
|
9 |
|
10 | void InitMP3();
|
11 | void InitAudio();
|
12 | void InitPLL();
|
13 |
|
14 | void MP_ISR(void) interrupt 5;
|
15 |
|
16 | unsigned char zeile1[16];
|
17 | unsigned char zeile2[16];
|
18 |
|
19 | void main (void)
|
20 | {
|
21 | initlcd();
|
22 | loeschenlcd();
|
23 | Adresse=0x2000;
|
24 |
|
25 | InitMP3();
|
26 | InitAudio();
|
27 | InitPLL();
|
28 |
|
29 | P5_3=1;
|
30 |
|
31 | //Interrupt & MP3 Interrupt ein
|
32 | EA = 1;
|
33 | EMP3 = 1;
|
34 |
|
35 | //Bit MSKREQ löschen
|
36 | MP3CON = 0b10011000;
|
37 |
|
38 | AUDCON1 = AUDCON1&&0b00000001;
|
39 |
|
40 | IPH0 = IPH0&&0b00100000;
|
41 | IPL0 = IPL0&&0b00100000;
|
42 |
|
43 | while(1)
|
44 | {
|
45 | sprintf(zeile1, "NO Interrupt");
|
46 | textlcd (zeile1,1);
|
47 | }
|
48 | }
|
49 |
|
50 | void InitMP3()
|
51 | {
|
52 | MP3CLK=3;
|
53 | MP3VOL = MP3VOR = 0x0F;
|
54 | //MP3CON=0xA0;
|
55 | }
|
56 |
|
57 | void InitAudio()
|
58 | {
|
59 | AUDCLK=7;
|
60 | AUDCON0=0x86;
|
61 | AUDCON1=0x41;
|
62 | }
|
63 |
|
64 | void InitPLL()
|
65 | {
|
66 | PLLNDIV=125;
|
67 | PLLRDIV=0x8E;
|
68 | PLLCON=0b00000010;
|
69 | }
|
70 |
|
71 | void MP3_Decoder_ISR(void) interrupt 5
|
72 | {
|
73 | sprintf(zeile2, "Interrupt OK");
|
74 | textlcd (zeile2,2);
|
75 | if(MP3STA1&&0b00001000)
|
76 | {
|
77 | MP3DAT = *Adresse;
|
78 | Adresse++;
|
79 | }
|
80 |
|
81 | }
|
Hoffe ich könnt mir helfen!!
gruß
Christof