SHARE
TWEET

Untitled

a guest Jul 17th, 2017 43 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Top