程序
#include "config.h"
#define TEMPO 8
#define _4 TEMPO*4
#define _6 TEMPO*6
#define _2 TEMPO*2
#define _3 TEMPO*3
#define _1 TEMPO*1
#define _3A TEMPO*3/2
#define _8 TEMPO*1/2
#define _8d TEMPO*3/4
#define _16 TEMPO*1/4
#define _16d TEMPO*3/8
#define _32 TEMPO*1/8
#define D1 262
#define D2 294
#define D3 330
#define D4 349
#define D5 392
#define D6 440
#define D7 494
#define Z1 523
#define Z2 587
#define Z3 659
#define Z4 698
#define Z5 784
#define Z6 880
#define Z7 988
#define G1 1047
#define G2 1175
#define G3 1319
#define G4 1397
#define G5 1568
#define G6 1760
#define G7 1976
/* CAI HONG MEI MEI opern */
const unsigned int HCMM[] =
{ Z6,Z5,Z3,Z5,G1,Z6,Z5,Z6,Z3,Z5,Z6,Z5,Z3,Z2,Z1,D6,Z5,Z3,Z2,Z2,Z3,Z5,Z5,Z6,Z3,Z2,Z1,Z5,Z3,Z2,Z1,D6,Z1,D5,D5
};
const unsigned int HCMM_L[] =
{ _1, _8, _1, _1, _1, _8,_8, _1, _1, _8,_8,
_1, _8, _8, _8, _8, _8, _8, _4, _3A,_8, _1, _8, _8,
_3A,_8,_4,_3A,_8,_8,_8,_8,_8, _4, _4
};
void Delay(unsigned char dly)
{ unsigned int i;
for(; dly > 0; dly--)
for(i = 0; i < 0x3ffff; i++);
}
int main(void)
{ unsigned char i;
// VICIntEnClear = 0xffffffff;
VICVectAddr = 0;
VICIntSelect = 0;
PINSEL0 = 0x02 << 14;
/* PWM Init */
PWMPR =50;
PWMMCR = 0x02;
PWMMR0 = 1000000 / 2000;
PWMMR2 = PWMMR0/2 ;
PWMPCR = 0x0400;
PWMLER = 0x05;
PWMTCR = 0x02;
PWMTCR = 0x01;
while(1)
{
for(i = 0; i < sizeof(HCMM); i++)
{ PWMMR0 = 1000000 / HCMM[i];
PWMLER = 0x05;
Delay(HCMM_L[i]);
}
}return 0;
}
proteus仿真中能正确想一会儿,然后碰碰杂音,什么原因 怎么解决
|