Pre programovanie mikrokontrolérov sa nám osvedčil programovací jazyk C. V ďalšom texte uvádzame spôsoby realizácie niektorých činností uC Atmega32. Časti kódu boli napísané a overené vo vývojovom prostredí AVR Studio 4.19 (html kód je generovaný pomocou http://tohtml.com/cpp/:
#include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 16000000 #include <util/delay.h>
// nastav byte (register) ako celok na pozadovanu hodnotu PORTC = 0x0F; PORTC = 1<<PC1 | 1<<PC0; // nastav uplne cely byte (register) - vsetky bity (bit7...bit0) na 1 PORTC = 0xFF; // nastav jeden bit (ostatne bity bez zmeny) PORTC |= 1<<PC7; // nastav niekolko bitov (ostatne bity bez zmeny) PORTC |= 1<<PC6 | 1<<PC5 | 1<<PC4;
// vynuluj uplne cely byte (register) - vsetky bity (bit7...bit0) na 0 PORTC = 0x00; // vynuluj jeden bit (ostatne bity bez zmeny) PORTC &= ~(1<<PC7); // vynuluj niekolko bitov (ostatne bity bez zmeny) PORTC &= ~(1<<PC6 | 1<<PC5 | 1<<PC4);
// vymen uplne cely byte (register) - vsetky bity (bit7...bit0) z 0 na 1 a naopak PORTC = ~PORTC; // vymen jeden bit (ostatne bity bez zmeny) PORTC ^= 1<<PC7; // vymen niekolko bitov (ostatne bity bez zmeny) PORTC ^= 1<<PC6 | 1<<PC5 | 1<<PC4;
// testuj jeden bit samostatne ci je nastaveny na 1 if (PINC & 1<<PC6) ... // testuj jeden z viacerych bitov ci je nastaveny na 1 if ((PINC & 1<<PC7) || (PINC & 1<<PC6) || (PINC & 1<<PC5)) ... // testuj vsetky viacere bity ci su nastavene na 1 if ((PINC & 1<<PC7) && (PINC & 1<<PC6) && (PINC & 1<<PC5)) ...
// testuj jeden bit samostatne ci je vynulovany na 0 if (!(PINC & 1<<PC6)) ... // testuj jeden z viacerych bitov ci je vynulovany na 0 if (!(PINC & 1<<PC7) || !(PINC & 1<<PC6) || !(PINC & 1<<PC5)) ... // testuj vsetky viacere bity ci su vynulovane na 0 if (!(PINC & 1<<PC7) && !(PINC & 1<<PC6) && !(PINC & 1<<PC5)) ...
Súbory .c (zdrojové kódy programov v jazyku C) možno otvoriť nielen vo vývojovom prostredí AVR Studia, ale aj v textovom editore. Odporúčame textový editor PSPad.
PaedDr. Karol Pauchly, ZŠ s MŠ Chlebnice, október 2014