/******************************************************************** ZVOK.C kreiranje zvocnega signala z AT89C2051 ===================================================================== Verzija Datum Avtor 1 6-2-1999 ===================================================================== OPIS: Program s pomocjo prekinitve casovnika1 kreira na izhodu P3_7 prevokoten signal, katerega frekvenco doloca konstanta POL_PER. ********************************************************************/ #pragma SMALL REGISTERBANK(0) ROM(SMALL) CODE #include // konfiguracijska datoteka void clockInt(void); // prekinitveni program #define ZVOCNIK P3_7 #define LED1 P3_0 #define POL_PER 416 /******************************************************************** glavni program ********************************************************************/ void main(void) { TMOD=0x10; // inicializacija T1 za 16 bitni casovnik // notranja kontrola EA=1; // generalna dovolitev prekinitve ET1=1; // dovolitev prekinitve Timer1 TR1=1; // start Timer1 LED1=1; // LED1 ne gori while(1) { // neskoncna zanka LED1=0; // signalizacija LED1 } // konec neskoncne while zanke } // konec funkcije main /******************************************************************** void clockInt(void) uporablja registersko banko 1, stevec 1 prekinitveni program, ki vsakih POL_PER zamenja stanje na P3_7 ********************************************************************/ void clockInt(void) interrupt 3 using 2 { unsigned int initTimer; ZVOCNIK=~ZVOCNIK; initTimer=0xffff-POL_PER; // 65536-POL_PER TR1=0; // stop Timer1 TL1=(unsigned char)(initTimer & 0x00ff); TH1=(unsigned char)(initTimer >> 8);// initTimer v L&H zloga T1 TR1=1; // start Timer1 }