#include #include #include #include #include unsigned char delay[2]; unsigned char current_ena; void write_ena(unsigned char value) { WriteMax(4, value); } void T1_ISR(void) __interrupt(3) { current_ena = ~current_ena; write_ena(current_ena); TH1 = delay[1]; TL1 = delay[0]; } void PlaySound(unsigned int t, unsigned int frequency) { uint16_t tmp = 460791/frequency; uint8_t* ptr = (uint8_t*)&tmp; delay[0] = 0xFF - ptr[0]; delay[1] = 0xFF - ptr[1]; current_ena = 0x18; TH1 = delay[1]; TL1 = delay[0]; SetVector(0x201B, (void*)T1_ISR); TMOD |= 0x10; TCON |= 0x40; DelayMs(t); TCON &= 0x3F; ET1 = 1; EA = 1; }