Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 8000000UL
- #include <util/delay.h>
- #include <avr/io.h>
- #define ON bit_is_clear(PINA,0) //ON painikkeen määrittely
- #define OFF bit_is_clear(PIND,2) //OFF painikkeen määrittely
- #define ANTURI1 bit_is_set(PIND,3) //Anturin 1 määrittely
- #define ANTURI2 bit_is_set(PIND,4)
- #define VALMIUSTILA 1
- #define VALVONTATILA 2
- #define HALYTYSTILA 3
- char tila; //Muuttujan tila määrittely
- void valmiustila()
- {
- PORTB=0x80; //Sytytetään TOIMINTA led
- while(tila==VALMIUSTILA)
- if(ON) //Luetaan ON
- tila=VALVONTATILA;
- }
- void valvontatila()
- {
- while(tila==VALVONTATILA)
- {
- PORTB=0x00; //Led portissa PB7 sammuu
- _delay_ms(250);
- PORTB=0x80; //Led portissa PB7 syttyy
- _delay_ms(250);
- if(ANTURI1) //Luetaan ANTURI1
- tila=HALYTYSTILA;
- if(ANTURI2) //Luetaan ANTURI2
- tila=HALYTYSTILA;
- if(OFF) //Luetaan OFF
- tila=VALMIUSTILA;
- }
- }
- void halytystila()
- {
- PORTB=0x01; //Lähtö portissa PB0 menee päälle
- while(tila==HALYTYSTILA)
- if(OFF) //Luetaan OFF
- tila=VALMIUSTILA;
- }
- int main(void) //Pääohjelma
- {
- PORTB=0xFF; //Portin B alustukset
- DDRB=0xFF; //Kaikki lähtöjä (output)
- PORTD=0x7C; //Portin D alustukset
- DDRD=0x40;
- PORTA=0xFF;
- DDRA=0x00;
- tila=VALMIUSTILA;
- while(1)
- {
- switch(tila) //Switch-case valintarakenne
- {
- case VALMIUSTILA:
- valmiustila();
- break;
- case VALVONTATILA:
- valvontatila();
- break;
- case HALYTYSTILA:
- halytystila();
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement