#include <avr/io.h> int main(void) { // Initiera funktioner o dyl. for(;;) { // Programkörning } }
#include <avr/io.h> //AVR device-specific IO definitions #include <util/delay.h> //Convenience functions for busy-wait delay loops
Sätta pinnar som output/input, hanteras med register DDRx och PORTx.
DDRx | PORTx | I/O | Pull-up | Comment |
---|---|---|---|---|
0 | 0 | Input | Nej | Tri-state |
0 | 1 | Input | Ja | |
1 | 0 | Output | Nej | Sink |
1 | 1 | Output | Nej | Source |
Ex:
// Sätta pinne PB0 som utgång. DDRB |= (1<<PB0); // Sätta pinne PB0 som ingång med pullup. PORTB |= (1<<PB0);
Ex: Sätta pinne PD2 som utgång och hög.
DDRD |= (1<<PD2); // Sätt pinne som utgång. PORTD |= (1<<PD2); // Sätt pinne som source/hög.
Ex: Sätta pinne PD2 låg.
PORTD &= ~(1<<PD2);
Ex: Toggla pinne PD0
PORTD ^= (1<<PD0);
Ex: Läsa pinne PB2
state = PINB & (1<<PB2); // Jämföra if( PINB & (1<<PB2) ) { // Gör något om pinnen är hög. } else { // Annars, gör något annat. }