Facebook
From Paltry Motmot, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 248
  1. ftp://avrkod.xlx.pl
  2. avrkod1
  3.  
  4. avrkod.cba.pl
  5. avrkod
  6. avrkod1
  7.  
  8. http://i65.tinypic.com/2rghumr.jpg
  9. /*
  10.  * main.c
  11.  *
  12.  *  Created on: 15 kwi 2016
  13.  *      Author: Krystian
  14.  */
  15.  
  16. #include <avr/io.h>
  17. #include <util/delay.h>
  18. #include <avr/interrupt.h>
  19.  
  20. volatile uint16_t TIMER_L;
  21. uint8_t licznik = 0;
  22. uint8_t etap = 0;
  23.  
  24. int main(void)
  25. {
  26.     // init przerwań
  27.         // dokumentacja | 104
  28.     TCCR0B = (1 << CS00);
  29.         // dokumentacja | 106
  30.     TIMSK0 = (1 << TOIE0);
  31.  
  32.         // cykliczne powtarzanie przerwań
  33.     sei();
  34.  
  35.         // ust. portu D na wyjściowy
  36.     DDRD = 0xFF;
  37.        
  38.         // ustawienie pinu PD4 na stan niski | 0
  39.         // reszta pinów na stan wysoki | 1
  40.         // 1110 1111
  41.     PORTD = 0xEF;
  42.  
  43.         // nieskończona pętla, ale nic nie ma
  44.     while(1)
  45.     ;
  46.  
  47.     return 0;
  48. }
  49.  
  50. // trzeba się nauczyć!
  51. ISR(TIMER0_OVF_vect)
  52. {
  53.     TIMER_L++;
  54.     if(TIMER_L >= 31250)
  55.     {
  56.         TIMER_L = 0;
  57.                 // licznik++, czyli dodaje kolejne sekundy
  58.         licznik++;
  59.         zmiana();
  60.     }
  61. }
  62.  
  63. void zmiana()
  64. {
  65.         // PDn - il_bitów - co?
  66.         // PD7 - 8 - strzałka
  67.         // PD6 - 4 - zielone
  68.         // PD5 - 2 - żółte
  69.         // PD4 - 1 - czerwone
  70.        
  71.         // PD - bity
  72.         // 7654 3210
  73.        
  74.     if(etap == 0)
  75.     {
  76.         if(licznik == 1)
  77.         {
  78.             PORTD = 0x6F;
  79.         }
  80.         if(licznik == 7)
  81.         {
  82.             PORTD = 0xEF;
  83.         }
  84.         if(licznik == 8)
  85.         {
  86.             PORTD = 0xCF;
  87.         }
  88.         if(licznik == 9)
  89.         {
  90.             PORTD = 0xBF;
  91.                         licznik = 0;
  92.                         etap = 1;
  93.         }
  94.     }
  95.          if(etap == 1)
  96.          {
  97.                  if(licznik == 10)
  98.                  {
  99.                          PORTD = 0xDF;
  100.                          licznik = 0;
  101.                          etap = 2;
  102.                  }
  103.          }
  104.     if(etap == 2)
  105.     {
  106.         if(licznik == 1)
  107.         {
  108.             PORTD = 0xEF;
  109.             licznik = 0;
  110.             etap = 0;
  111.         }
  112.     }
  113.  
  114. }
  115.