Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. /* Grundinitalisierung */
  2. #include <stdio.h> // Standard In-Output
  3. #include <avr/interrupt.h> // Interrupt
  4.  
  5. /* Bezeichnungen */
  6. void ISR_Init ();
  7. void ADC_Init ();
  8. void Ports ();
  9. void LEDs (uint8_t zaehler);
  10.  
  11. /* Deklaration */
  12. uint8_t zaehler;
  13. uint8_t merker1, merker2;
  14.  
  15.  
  16. /* Hauptprogramm */
  17. int main (void)
  18. {
  19. ISR_Init(); // Interrupt
  20. ADC_Init(); // ADC
  21. Ports(); // Ports
  22.  
  23.  
  24. // Zähleranzeige
  25. zaehler=0;
  26. merker1=0; // Speicher für Taster 2
  27. merker2=0; // Speicher für Taster 3
  28.  
  29.  
  30. // Zählerschleife
  31. while(1)
  32. {
  33. LEDs(zaehler);
  34.  
  35.  
  36. // Wenn PORTA,1 High bzw. Taster 2 betätigt wird... -> Hochzählen
  37. if (PINA&(1<<PIN1) && (merker1==0)) // ... Taster(Speicher) gedrückt
  38. {
  39. zaehler++;
  40. if (zaehler ==255) {zaehler=0;} // bis 255 -> dann wieder 0
  41. merker1 = 1; // ... Taster(Speicher) losgelassen
  42. }
  43.  
  44. if (!(PINA&(1<<PIN1)) && (merker1==1))
  45. {merker1 = 0;}
  46.  
  47.  
  48. // Wenn PORTA,2 High bzw. Taster 3 betätigt wird... -> Hochzählen
  49. if (PINA&(1<<PIN2) && (merker2 == 0)) //... Taster(Speicher) gedrückt
  50. {
  51. zaehler++;
  52. if (zaehler ==255) {zaehler=0;} // bis 255 -> dann wieder 0
  53. merker2 = 1; // ... Taster(Speicher) losgelassen
  54. }
  55.  
  56. if (!(PINA&(1<<PIN2)) && (merker2 == 1))
  57. {merker2 = 0;}
  58.  
  59.  
  60. // Wenn PORTA,0 High bzw. Taster 1 betätigt wird -> Zähler zurücksetzen
  61. if (PINA&(1<<PIN0))
  62. {zaehler = 0;}
  63.  
  64.  
  65.  
  66. } // Ende while
  67. return 0;
  68. } // Ende main
  69.  
  70.  
  71. /* Sonstige Anweisungen */
  72. void LEDs(uint8_t zaehler)
  73. {
  74. PORTB=zaehler;
  75. }
  76.  
  77. /* Initalisierungsanweisungen */
  78. // GIE deaktiviert
  79. void ISR_Init (void)
  80. {
  81. cli(); // Global Interrupt deaktiviert sei()=aktiviert
  82. }
  83.  
  84. // ADC an Port A
  85. void ADC_Init (void)
  86. {
  87. ADCSRA |= (0<<ADEN); // ADC deaktiviert
  88. }
  89.  
  90.  
  91. /* Porteinstellungen */
  92. // Datenrichtungsregister: 0=Eingänge, 1=Ausgänge
  93. void Ports(void)
  94. {
  95. DDRA = 0b00000000; // Port A
  96. DDRB = 0b11111111; // Port B
  97. // DDRC = 0b00000000; // Port C
  98. // DDRD = 0b11111111; // Port D
  99.  
  100. // Ausgänge auf 0=GND oder 1=HIGH (interne Pull-Ups)
  101. PORTA = (1<<PA0) | (1<<PA1) | (1<<PA2); // Taster
  102. // PORTB = // LEDs
  103. // PORTC =
  104. // PORTD =
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement