#include "reg932.h" #include "led.h" #include "term.h" #include sbit speaker = P1^7; static unsigned int speakerdelay; static unsigned int speakerlength; void speaker_initialize(void) { P1M1 &= 0x7F; P1M2 &= 0x7F; TMOD |= 0x01; speakerdelay = 0; speakerlength = 0; ET0 = 1; return; } void speakertoggle(void) { speaker ^= 1; return; } void t0reload(void) { TL0 = (char) (speakerdelay & 0xff); TH0 = (char) (speakerdelay >> 8); return; } void t0_isr(void) interrupt 1 { TR0 = 0; ledtoggle(YLED); if(speakerlength != 0) { speakerlength--; TL0 = (char) (speakerdelay & 0xff); TH0 = (char) (speakerdelay >> 8); speaker ^= 1; TR1 = 1; } return; } void speakerplay(unsigned int delay, unsigned int length) { speakerdelay = delay; speakerlength = length; TR0 = 0; t0reload(); TR0 = 1; return; }