#define F_CPU 20000000 #include #include //note division factor of 8 by default in CLKPS register //input is 0...DDxn &= ~(1 << pin) //output is 1...DDxn |= (1 << pin) //high/pur is 1...PORTx |= (1 << pin) (pullup resister activated if input, driven high if output) //low is 0...PORTx &= ~(1 << pin) //see page 55 of attiny manual #define LED PA7 #define BUTTON PB2 void delay_ms(uint16_t millis) { while ( millis ) { _delay_ms(1); millis--; } } int main(void) { CLKPR = (1 << CLKPCE); //set clkps register to not divide clock speed by 8 CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0); DDRA |= (1 << LED); // PA7 output DDRB &= ~(1 << BUTTON); //PB2 input PORTB |= (1 << BUTTON); //PB2 is pulled high while(1) { if(bit_is_clear(PINB, BUTTON)) { PORTA |= (1 << LED); } else { PORTA &= ~(1 << LED); } } return 0; }