//---------------------------------------------------------------------------------------------------- // LED2.c Led blink test //---------------------------------------------------------------------------------------------------- #include #include #include #define led_port PORTA #define led_pin_out (1 << PA7) #define led_direction DDRA #define led_togglePins PINA //#define sw_port PORTA #define sw_pins PINA #define sw_pin (1 << PA3) //---------------------------------------------------------------------------------------------------- // main //---------------------------------------------------------------------------------------------------- void main(void) { //-------- set clock divider to /1 --------------------------- CLKPR = (1 << CLKPCE); CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0); //-------- initialize output pins ----------------------------- led_port |= led_pin_out; // set led port led_direction |= led_pin_out; // set led port direction //-------- Loop ----------------------------------------------- while(1){ // chkSw(); chkSw2(); /* led_port |= led_pin_out; // led on _delay_ms(1000); //wait for 1000 ms led_port &= ~led_pin_out; // led off _delay_ms(1000); //wait for 1000 ms */ } } //---------------------------------------------------------------------------------------------------- // sw read 1 //---------------------------------------------------------------------------------------------------- void chkSw(void){ if(sw_pins & sw_pin){ led_port &= ~led_pin_out; // led off }else{ led_port |= led_pin_out; // led on } } //---------------------------------------------------------------------------------------------------- // sw read 2 //---------------------------------------------------------------------------------------------------- void chkSw2(void){ if(sw_pins & sw_pin){ // led_port &= ~led_pin_out; // led off }else{ _delay_ms(10); //wait for 10 ms if(sw_pins & sw_pin){ led_togglePins |= led_pin_out; // led toggle } } }