Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. /*
  2. * Hausubung_LED12.c
  3. *
  4. * Created: 20.01.2018 19:04:22
  5. * Author : Maenii
  6. * Beschreibung: 1. Tastendruck - LED1 -> 2. Tastendruck Ton -> 3. Tastendruck LED2 -> 4. Tastendruck AUS
  7. */
  8. #define F_CPU 16000000UL
  9. #define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
  10. #define FLIPBIT(ADDRESS,BIT) (ADDRESS ^= (1<<BIT))
  11. #define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
  12. #include <avr/io.h>
  13. #include <util/delay.h>
  14.  
  15.  
  16. //Variablen deklarieren/definieren
  17. #define BUT1 PORTC
  18. #define LED1 PORTC1
  19. #define TON PORTC2
  20. #define LED2 PORTC3
  21. typedef int bool;
  22.  
  23. int main(void)
  24. {
  25. //Eingänge/Ausgänge definieren ( 0 = Eingang, 1 = Ausgang)
  26. DDRC = 255;
  27.  
  28. CLEARBIT(DDRC,BUT1); //BUT1 = Eingang
  29.  
  30. bool prev; //Variable prev als int festlegen
  31. prev = 0;
  32.  
  33. while (1)
  34. {
  35. if (!(PINC & (1 << BUT1))) //Taster entprellen
  36. {
  37. _delay_ms(100);
  38. if(!(PINC & (1<< BUT1)))
  39. {
  40. while (!(PINC & (1<< BUT1)))
  41. {
  42. //Abfrage ob Taster wirklich gedrückt
  43. if (((PINC & (1<< BUT1)) && prev == 0))
  44. {
  45. //Alle PORTS zurücksetzen
  46. CLEARBIT(PORTC,LED1);
  47. CLEARBIT(PORTC,LED2);
  48. CLEARBIT(PORTC,TON);
  49. //Variable hochzählen und LED1 auf HIGH setzen
  50. prev = 1;
  51. SETBIT(PORTC,LED1);
  52. }
  53. //Abfrage ob Taster wirklich gedrückt
  54. if (((PINC & (1<< BUT1)) && prev == 1))
  55. {
  56. //Variable hochzählen - LED1 ausschalten, Piezo ein/aus
  57. CLEARBIT(PORTC,LED1);
  58. SETBIT(PORTC,TON);
  59. _delay_us(500);
  60. FLIPBIT(PORTC,TON);
  61. prev = 2;
  62. }
  63. else if (((PINC & (1<< BUT1)) && prev == 1))
  64. {
  65. CLEARBIT(PORTD,PORTD1); // Bits per SHortcut löschen - LED erlischt
  66. CLEARBIT(PORTD,PORTD2);
  67. CLEARBIT(PORTD,PORTD3);
  68. CLEARBIT(PORTD,PORTD4);
  69. prev = 1;
  70. }
  71. //Abfrage ob Taster wirklich gedrückt
  72. if (((PINC & (1<< BUT1)) && prev == 2))
  73. {
  74. //Variable hochzählen - LED1 , TON ausschalten, LED2 EIN
  75. CLEARBIT(PORTC,LED1);
  76. CLEARBIT(PORTC,TON);
  77. SETBIT(PORTC,LED2);
  78. prev = 3;
  79. }
  80. else if (((PINC & (1<< BUT1)) && prev == 2))
  81. {
  82. CLEARBIT(PORTD,PORTD1); // Bits per SHortcut löschen - LED erlischt
  83. CLEARBIT(PORTD,PORTD2);
  84. CLEARBIT(PORTD,PORTD3);
  85. CLEARBIT(PORTD,PORTD4);
  86. prev = 2;
  87. }
  88. if (((PINC & (1<< BUT1)) && prev == 3))
  89. {
  90. //Rücksetzen
  91. prev = 0;
  92. }
  93. }
  94.  
  95. }
  96. }
  97. }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement