Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Hausubung_LED12.c
- *
- * Created: 20.01.2018 19:04:22
- * Author : Maenii
- * Beschreibung: 1. Tastendruck - LED1 -> 2. Tastendruck Ton -> 3. Tastendruck LED2 -> 4. Tastendruck AUS
- */
- #define F_CPU 16000000UL
- #define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
- #define FLIPBIT(ADDRESS,BIT) (ADDRESS ^= (1<<BIT))
- #define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
- #include <avr/io.h>
- #include <util/delay.h>
- //Variablen deklarieren/definieren
- #define BUT1 PORTC
- #define LED1 PORTC1
- #define TON PORTC2
- #define LED2 PORTC3
- typedef int bool;
- int main(void)
- {
- //Eingänge/Ausgänge definieren ( 0 = Eingang, 1 = Ausgang)
- DDRC = 255;
- CLEARBIT(DDRC,BUT1); //BUT1 = Eingang
- bool prev; //Variable prev als int festlegen
- prev = 0;
- while (1)
- {
- if (!(PINC & (1 << BUT1))) //Taster entprellen
- {
- _delay_ms(100);
- if(!(PINC & (1<< BUT1)))
- {
- while (!(PINC & (1<< BUT1)))
- {
- //Abfrage ob Taster wirklich gedrückt
- if (((PINC & (1<< BUT1)) && prev == 0))
- {
- //Alle PORTS zurücksetzen
- CLEARBIT(PORTC,LED1);
- CLEARBIT(PORTC,LED2);
- CLEARBIT(PORTC,TON);
- //Variable hochzählen und LED1 auf HIGH setzen
- prev = 1;
- SETBIT(PORTC,LED1);
- }
- //Abfrage ob Taster wirklich gedrückt
- if (((PINC & (1<< BUT1)) && prev == 1))
- {
- //Variable hochzählen - LED1 ausschalten, Piezo ein/aus
- CLEARBIT(PORTC,LED1);
- SETBIT(PORTC,TON);
- _delay_us(500);
- FLIPBIT(PORTC,TON);
- prev = 2;
- }
- else if (((PINC & (1<< BUT1)) && prev == 1))
- {
- CLEARBIT(PORTD,PORTD1); // Bits per SHortcut löschen - LED erlischt
- CLEARBIT(PORTD,PORTD2);
- CLEARBIT(PORTD,PORTD3);
- CLEARBIT(PORTD,PORTD4);
- prev = 1;
- }
- //Abfrage ob Taster wirklich gedrückt
- if (((PINC & (1<< BUT1)) && prev == 2))
- {
- //Variable hochzählen - LED1 , TON ausschalten, LED2 EIN
- CLEARBIT(PORTC,LED1);
- CLEARBIT(PORTC,TON);
- SETBIT(PORTC,LED2);
- prev = 3;
- }
- else if (((PINC & (1<< BUT1)) && prev == 2))
- {
- CLEARBIT(PORTD,PORTD1); // Bits per SHortcut löschen - LED erlischt
- CLEARBIT(PORTD,PORTD2);
- CLEARBIT(PORTD,PORTD3);
- CLEARBIT(PORTD,PORTD4);
- prev = 2;
- }
- if (((PINC & (1<< BUT1)) && prev == 3))
- {
- //Rücksetzen
- prev = 0;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement