This is an old revision of the document!
Vilkuv LED.
Programmi kood:
/* Labor 2 näide Harjutus töötab laborikaardiga Basic v3 LED-i vilgutamine kasutades taimerit Raivo Sell 2008 LED = 0 (põleb) LED = 1 (kustunud) PORDI suuna konfigureerimine: 1-väljund 0-sisend */ #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> static int i; //globaalne muutuja int SAGEDUS = 10; //defineeritakse vilkumise sagedus (taimeri ületäituvuse kordaja) //defineeritakse biti inverteerimine pordis x #define INV(x) ^=(1<<x) //defineeritakse vigutatav LED konstandina #define LED 4 // Katkestus - funkitsioon käivitub sii, kui taimeri buffer saab täis ISR (TIMER1_OVF_vect){ i++; // i suurendamine 1 võrra iga funktsiooni käivituse korral if (i>SAGEDUS){ // Port inverteeritakse, kui i>SAGEDUS PORTC INV(LED); //Inverteeritakse port i=0; //kordaja nullitakse } } int main (void) { // Taimeri juhtregistrid TCCR1A = 0x00; // Taimer normaal reziimis TCCR1B = _BV(CS10); //clk/1 (No prescaling) DDRC = 0x38; // DDRC 0bXX111000 PORTC = 0x3F; // PORTC 0bXX111111 TIMSK = _BV (TOIE1); // Lubatakse ületäitumise katkestus sei (); // Lubatakse globaalkatkestus while(1); //Lõputu tsükkel // Mingeid tegevusi programm ei täida. LED-i vilgutatakse läbi katkestuse }